Использование Mercurial для объединения нескольких голов - PullRequest
12 голосов
/ 06 октября 2011

Я новичок 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

Ответы [ 3 ]

22 голосов
/ 06 октября 2011

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

Давайте начнем с этой первой команды:

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

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

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

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

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

Итак, каковы ваши изменения?Первый шаг - запустить «hg status».Как вы говорите, «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 выводит много файлов из других проектов, так как он начинается в .. Файл Iдобавлен единственный файл, который должен быть добавлен. "Это основное недоразумение о том, как работает Mercurial.В отличие от CVS или SVN, в отношении Mercurial существует только один проект , и действия (commit / update / merge / status) работают сразу по всему дереву проекта.Подкаталоги не являются самостоятельными проектами с отдельной историей.

16 голосов
/ 06 октября 2011

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

hg merge
3 голосов
/ 07 октября 2011

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

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

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

Также, как Мэтт Маккалл говорит:

Может потребоваться задать статус, чтобы показать только удаленные файлы:

$ hg st -d
! setup.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...