Использование 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