Как "переключиться" с Mercurial

Как мне сделать то, что svn switch делает, в Mercurial?

Это изменит мой рабочий каталог, чтобы переключиться на другую ветку в репозитории?

Ответ 1

hg update -r<REV>

Команда update переключится на указанную ревизию.

Ответ 2

В Subversion команда switch делает две вещи:

  • Обновите рабочую копию, чтобы зеркалировать новый URL-адрес в репозитории. Это поведение похоже на "svn update", и это способ переместите рабочую копию в ветку или тег в том же репозитории.

  • Перепишите метаданные URL рабочей копии, чтобы отображать только синтаксические изменения. Это используется, когда изменения корневого URL репозитория (например, схема или изменение имени хоста), но ваша рабочая копия все еще отражает то же самое в том же репозитории.

Команда hg update foo наиболее точно совпадает с первой, если вы переключаетесь с, скажем, /trunk на /branches/foo в Subversion.

Если вы хотите сделать последнее, просто отредактируйте .hg/hgrc. Вы найдете раздел [paths], который выглядит следующим образом:

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

и вы можете изменить этот URL-адрес push/pull по умолчанию на что-то еще, как вы сочтете нужным. Вы также можете добавить другие записи в этот раздел, если вам часто нужно нажать/вытащить из других мест. Если вы хотите вытащить из одного места, но нажмите на другой, добавьте запись default-push.

Ответ 3

Я хочу переключить ветки, сделайте следующее:

Сначала проверьте, какие ветки доступны, введите hg branches. В этом списке перечислены все доступные ветки.

Затем определите, с какой веткой вы работаете, введите hg branch. Это скажет вам, какова ваша текущая ветка.

Наконец, чтобы переключить ветвь (и стереть все локальные изменения), введите hg update -C name-of-branch. Это переключит вас на указанное вами название ветки.

Подтвердите, снова набрав hg branch.

Ответ 4

Чтобы перейти к удаленному ответвлению "tip":

hg pull -u <remote_branch>

Для локальной ветки (уже обновленной) просто:

hg update -r <local_branch>

Ответ 5

Альтернативный ответ, в случае "ветки" вы имеете в виду "другой клон репо, который живет в каком-то произвольном месте в сети": вы не можете.

Другими словами, учитывая репо на hg.a.com и клон этого репо hg.b.com, нет команды вроде

hg switch hg.b.com .

(используя svn parlance там, предполагая, что ваш текущий каталог является корнем клона hg.a.com).

Однако вы можете клонировать hg.a.com, локально клонировать этот клон (который должен быть относительно недорогим), а затем тянуть с hg.b.com, чтобы получить любые дополнительные изменения, которые могут там жить.