Hg (Mercurial): есть ли способ «отложить» рабочую копию на потом? - PullRequest
8 голосов
/ 28 мая 2011

Сценарий: после вашего последнего коммита вы решили провести обширный рефакторинг кодовой базы.Через некоторое время вы понимаете, что это занимает больше времени, чем ожидалось, и вы действительно откладываете рефакторинг на другое время и работаете над более насущными задачами.Но вы не хотите терять всю работу по рефакторингу, которую вы сделали до сих пор.

Итак, есть ли способ «заархивировать» или «разветвить» рабочую копию (по сути, отложить ее, носохранить его в репозитории для последующего доступа), а затем вернуться к последнему удачному коммиту и продолжить оттуда, не боясь создать несколько голов или перепутать их?

Ответы [ 5 ]

18 голосов
/ 28 мая 2011

Не беспокойтесь о «страхе перед двумя головами». Две головы - это очень нормальное состояние. Это называется анонимными ветками, и это один из способов, которым люди делают временные ветки в Mercurial.

Просто подтвердите, а затем обновите до tip-1, и вы готовы к работе:

hg commit -m "working on XXX"
hg update -r "tip-1"

и уходи. Если вы хотите добавить закладку (менее постоянную, чем тег) на эту голову, вы можете, но об этом не нужно беспокоиться.

Вы всегда можете нажать одну голову, не нажимая другую, используя hg push -r HEAD, где это может быть даже hg push -r .

Не бойтесь голов - это то, что делает VCS на базе DAG мощным.

1 голос
/ 14 декабря 2011

Вы можете сделать это простым способом:

$ hg diff -g > tmp
$ hg revert --all

Ваши изменения теперь будут сохранены в tmp.Вы можете восстановить их с помощью

$ hg patch --no-commit tmp

, и вы вернетесь на свое место.Существуют такие расширения, как shelve , которые автоматизируют вышеуказанное для вас.

1 голос
/ 28 мая 2011
  1. Назначение тега для ревизии ревизора
  2. Передача тега
  3. Повторное клонирование хранилища
  4. Возврат к стабильной версии
  5. Работаиз стабильной версии
  6. Не беспокойтесь о нескольких головках, вы можете легко объединить позже

Поскольку Mercurial использует жесткие ссылки, вы можете хранить оба репозитория на локальном компьютере с минимальным пространствомиспользуемый.команды:

$ hg тег Refactor
$ cd ..
$ hg clone Refactor Stable
$ cd Stable
$ hg revert -r REVISION_NUMBER

дополнительная помощь:
http://hgbook.red -bean.com /
http://kiln.stackexchange.com/

1 голос
/ 28 мая 2011

Вы можете сделать это с помощью расширений mq, attic или shelve.

0 голосов
/ 28 мая 2011

В мерзавце ты бы сделал 'тайник'.Согласно Это рт.ст. имеет «полку», но требует расширения.

...