Использование Mercurial для объединения нескольких головок

Я новичок в Mercurial и хочу узнать, как использовать репозиторий . Можете ли вы рассказать мне, как объединить мою работу с моим? Благодаря

$ hg update tip
abort: crosses branches (merge branches or use --clean to discard changes)

$ hg heads
changeset:   265:ac5d3c3a03ac
tag:         tip
user:        roberto.cr
date:        Thu Oct 06 07:32:15 2011 +0000
summary:     fixing "redirects" links

changeset:   261:6acd1aaef950
user:        niklasro
date:        Thu Oct 06 07:53:19 2011 +0000
summary:     auth backend + js

$ hg update
abort: crosses branches (merge branches or use --clean to discard changes)

Могу ли я использовать разрешение hg?

$ hg resolve
abort: no files or directories specified; use --all to remerge all file

$ hg glog | more
@  changeset:   266:2bf5b62720fc
|  tag:         tip
|  parent:      261:6acd1aaef950
|  user:        niklasro
|  date:        Thu Oct 06 12:48:20 2011 +0000
|  summary:     added
|
| o  changeset:   265:ac5d3c3a03ac
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:32:15 2011 +0000
| |  summary:     fixing "redirects" links
| |
| o  changeset:   264:2fd0bf24e90f
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:29:58 2011 +0000
| |  summary:     fixing "redirects" links
| |
| o  changeset:   263:29a373aae81e
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:25:05 2011 +0000
| |  summary:     fixing "redirects" links
| |
| o  changeset:   262:d75cd4d3e77a
| |  parent:      260:dfb54b99f84d
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:24:55 2011 +0000
| |  summary:     fixing "redirects" links
| |
o |  changeset:   261:6acd1aaef950
|/   user:        niklasro
|    date:        Thu Oct 06 07:53:19 2011 +0000
|    summary:     auth backend + js
|
o  changeset:   260:dfb54b99f84d
|  user:        niklasro
|  date:        Wed Oct 05 05:34:37 2011 +0000
|  summary:     FB buggfix example.html
|
o  changeset:   259:92fb6b1bc492
|  user:        niklasro
|  date:        Thu Sep 29 16:42:33 2011 +0000
|  summary:     changes

Решение было hg revert -a, и теперь он выглядит как успех

$ hg glog | more
@    changeset:   267:3b2bb6de33eb
|\   tag:         tip
| |  parent:      266:2bf5b62720fc
| |  parent:      265:ac5d3c3a03ac
| |  user:        niklasro
| |  date:        Thu Oct 06 16:06:21 2011 +0000
| |  summary:     merge
| |
| o  changeset:   266:2bf5b62720fc
| |  parent:      261:6acd1aaef950
| |  user:        niklasro
| |  date:        Thu Oct 06 12:48:20 2011 +0000
| |  summary:     added
| |
o |  changeset:   265:ac5d3c3a03ac
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:32:15 2011 +0000
| |  summary:     fixing "redirects" links
| |
o |  changeset:   264:2fd0bf24e90f
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:29:58 2011 +0000
| |  summary:     fixing "redirects" links
| |
o |  changeset:   263:29a373aae81e
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:25:05 2011 +0000
| |  summary:     fixing "redirects" links
| |
o |  changeset:   262:d75cd4d3e77a
| |  parent:      260:dfb54b99f84d
| |  user:        roberto.cr
| |  date:        Thu Oct 06 07:24:55 2011 +0000
| |  summary:     fixing "redirects" links
| |
| o  changeset:   261:6acd1aaef950
|/   user:        niklasro
|    date:        Thu Oct 06 07:53:19 2011 +0000
|    summary:     auth backend + js
|
o  changeset:   260:dfb54b99f84d
|  user:        niklasro
|  date:        Wed Oct 05 05:34:37 2011 +0000
|  summary:     FB buggfix example.html
|
o  changeset:   259:92fb6b1bc492
|  user:        niklasro
|  date:        Thu Sep 29 16:42:33 2011 +0000
|  summary:     changes

Ответ 1

Основная проблема заключается в том, что ваш рабочий каталог не является чистым. Mercurial не позволяет людям случайно прыгать между ветвями с незафиксированными изменениями, поскольку это, как правило, плохая идея.

Начнем с первой команды:

$ hg update tip
abort: crosses branches (merge branches or use --clean to discard changes)

Это говорит вам две важные вещи:

  • вы пытаетесь пересечь ветки.
  • у вас есть незафиксированные изменения

И у вас есть два варианта:

  • слияния
  • используйте hg update --clean, чтобы потерять ваши изменения.

Итак, каковы ваши изменения? Первый шаг - запустить "статус hg". Как вы говорите, "hg status выводит много файлов, добавленных 1 или?". Ну, эти "1" на самом деле "!" с указанием удаленных/отсутствующих файлов (получите лучший шрифт!). Вы должны сделать двойную проверку против сводки, которая даст вам результат следующим образом:

parent: 15200:fa6f93befffa 
 patch: use more precise pattern for diff header color styling (issue3034)
branch: default
commit: 1 deleted, 1 unknown (clean)   <- your changes
update: (current)

Если вы попытаетесь объединиться в этот момент, вы получите сообщение типа:

$ hg merge stable
abort: outstanding uncommitted changes (use 'hg status' to list changes)

Если у вас есть изменения, отличные от отсутствующих файлов, вы захотите рассмотреть возможность их фиксации.

Если эти недостающие файлы являются вашими единственными изменениями, вероятно, их можно отбросить:

hg revert -a

После того, как вы это сделали, вы находитесь в состоянии, когда Mercurial позволит вам обновлять или объединять, не жалуясь.

Наконец, вы говорите, что "hg status выводит много файлов из других проектов, так как начинается с... Добавленный файл - это единственный файл, который должен быть добавлен". Это основное непонимание того, как работает Mercurial. В отличие от CVS или SVN существует только один проект, что касается Mercurial, и действия (commit/update/merge/status) работают во всем дереве проектов одновременно. Подкаталоги не являются независимыми проектами с отдельными историями.

Ответ 2

Как насчет слияния этих двух голов?

hg merge

Ответ 3

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

Подводя итог этому потоку, до версии 1.9m Mercurial скажет nothing changed в hg ci, если файлы только что были удалены.

В 1.9 это было изменено, чтобы сказать nothing changed (1 missing files, see 'hg status'), чтобы сделать более явным, что, хотя ни одна из них не была изменена, все еще были удаления, и вам нужно сказать hg, что вы хотите сделать с ними. Либо используйте hg revert -a, чтобы отменить изменения, либо hg addremove plus hg commit, чтобы сообщить hg об изменениях и зафиксировать их.

Кроме того, поскольку Matt Mackall говорит:

Это может помочь запросить статус для отображения только удаленных файлов:

$ hg st -d
! setup.py