Есть ли другой способ удаления нескольких головок? - PullRequest
2 голосов
/ 29 июля 2011

Допустим, у меня есть это:

hg init

touch a
hg add a
hg commit -m a

touch b
hg add b
hg commit -m b

hg up -r 0

touch c
hg add c
hg commit -m c

Теперь у меня будет несколько голов из-за последнего коммита. Если, например, я хочу сохранить последний заголовок, созданный коммитом c (фактически отбрасывающим b и все другие коммиты, сделанные после первого), как я могу это сделать? Я немного поиграл с командой mq strip, и я могу добиться того, чего хочу, но я хотел бы знать, есть ли другой способ.

Ответы [ 2 ]

2 голосов
/ 29 июля 2011

Вы также можете выполнить фиктивное объединение набора изменений, содержащего b (в этом случае набор изменений 1):

$ hg --config ui.merge=internal:fail merge 1
resolving manifests
getting b
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)

$ hg revert --all --no-backup --rev .
removing b

$ hg status
R b

$ hg commit -m "Dummy merge -- eliminate b"
committed changeset 3:c163151f19df

$ ls
a  c

Обратите внимание, что в этом случае вы не переписали историю или создали новуюРЕПО - особенно важно, если b уже было перенесено в централизованное РЕПО и потянуто другими.

2 голосов
/ 29 июля 2011

Да, есть другой способ.Из приведенного выше примера вывод hg glog выглядит примерно так:

@  changeset:   2:925573c7103c
|  tag:         tip
|  parent:      0:4fe26dfe856d
|  user:        Joel B Fant
|  date:        Thu Jul 28 23:20:45 2011 -0400
|  summary:     c
|
| o  changeset:   1:9dc928176506
|/   user:        Joel B Fant
|    date:        Thu Jul 28 23:20:24 2011 -0400
|    summary:     b
|
o  changeset:   0:4fe26dfe856d
   user:        Joel B Fant
   date:        Thu Jul 28 23:20:12 2011 -0400
   summary:     a

Если вы клонируете test, но указываете ревизию , она будет клонировать только эту ревизию и его предки .Поэтому, если каталог вашего репо TwoHeadsMightNotBeBetter, вы можете перейти к его родительскому каталогу и выполнить команду:

hg clone TwoHeadsMightNotBeBetter OneHeadIsFine -r 925573c7103c

В этом я указал идентификатор набора изменений, но вы также можете использовать вместо него -r 2 или даже -r tip так как в настоящее время это верхушка репо.Теперь, когда вы входите в новый клон и делаете hg glog, у вас есть только одна голова:

@  changeset:   1:925573c7103c
|  tag:         tip
|  user:        Joel B Fant
|  date:        Thu Jul 28 23:20:45 2011 -0400
|  summary:     c
|
o  changeset:   0:4fe26dfe856d
   user:        Joel B Fant
   date:        Thu Jul 28 23:20:12 2011 -0400
   summary:     a

Если бы у вас было 3 головы и вы хотели сохранить 2, это было бы немного по-другому.Вам придется клонировать один из них с помощью -r, а также указать -r на hg pull, чтобы получить определенные ветви.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...