views:

1697

answers:

2

How do I do what svn switch does, in Mercurial?

That is change my working directory to switch to another branch in the repository?

+8  A: 
hg update -r<REV>

http://mercurial.selenic.com/wiki/Update

That will switch to a specified revision.

Flavius Stef
Just a note: if you use named (internal) branches, you can switch to the branch name with -r also: 'hg update -r <branch>'
quark
+10  A: 

The switch command does two things in Subversion:

  1. Update the working copy to mirror a new URL within the repository. This behaviour is similar to 'svn update', and is the way to move a working copy to a branch or tag within the same repository.

  2. Rewrite working copy URL metadata to reflect a syntactic change only. This is used when repository's root URL changes (such as a scheme or hostname change) but your working copy still reflects the same directory within the same repository.

The hg update foo command matches the former most closely if you switch from, say, /trunk to /branches/foo in Subversion.

If you want to do the latter, then simply edit .hg/hgrc. You'll find a [paths] section that looks like this:

[paths]
default = http://example.net/something

and you can change this default push/pull URL to something else as you see fit. You can also add other entries to this section if you often need to push/pull from other locations. If you want to pull from one location, but push to another, then add a default-push entry.

Martin Geisler