2016-12-28 7 views
0

Я часть команды, моя текущая задача реструктурирована, т. Е. Перемещает кучу файлов/папок.Как использовать «hg mv» в среде совместной работы?

Я хотел бы использовать 'hg mv', но тогда как синхронизировать его с работой в команде? помните, что в настоящее время команда работает над этими файлами, которые мне нужно перемещать. смогут ли они потянуть/обновить после того, как я нажму реструктуру? Может ли hg объединить свои локальные изменения, даже если я переместил их файлы?

Еще одна проблема - «hg up» в моем конце до того, как реструктуризация будет нажата. Может ли hg обрабатывать входящие изменения в файлы, которые я переместил, но еще не нажал?

+0

Что касается «hg up» на моей реструктурированной копии, но еще не совершенной - хорошо, hg смог обработать входящие изменения в файлы, которые я переехал, но не нажал. Это мило! – shahav

+0

, похоже, решается [by] (http://stackoverflow.com/questions/5190913) – shahav

ответ

1

Давайте сделаем три хранилища под названием main, tom и mine, чтобы понять, что происходит. main - это центральный репозиторий, в котором вы и Том (один из ваших сотрудников) нажимаете изменения и используете его для совместной работы. tom - это репозиторий Тома и mine - это ваш репозиторий. tom и mine, очевидно, будут клонами main.

$ hg init main 
$ hg clone main tom 
$ hg clone main mine 

Давайте будем иметь файл для воспроизведения. Том создал файл и перебросил его в основной репозиторий.

$ cd tom 
tom$ echo 'print hello' > a.py 
tom$ hg add 
tom$ hg ci -m "Added a.py" 
tom$ hg push 
pushing to /home/main 
searching for changes 
adding changesets 
adding manifests 
adding file changes 
added 1 changesets with 1 changes to 1 files 

Теперь вы начинаете с вытягивания изменений.

$ cd mine 
mine$ hg pull 
pulling from /home/main 
requesting all changes 
adding changesets 
adding manifests 
adding file changes 
added 1 changesets with 1 changes to 1 files 
(run 'hg update' to get a working copy) 

mine$ hg up 
1 files updated, 0 files merged, 0 files removed, 0 files unresolved 

Теперь вы заметили, что Том не годится называть, как он назвал файл как a.py, наименее описательный. Вы решили переименовать его в hello.py.

mine$ hg mv a.py hello.py 
mine$ hg ci -m "Rename a.py to hello.py" 

В то же время, Том побежал a.py и понял, что кавычки (print hello должны быть print "hello") отсутствуют. Он исправил это и толкнул еще одну фиксацию. Вы решили вытащить это, прежде чем надавить.

mine$ hg pull 
pulling from /home/main 
searching for changes 
adding changesets 
adding manifests 
adding file changes 
added 1 changesets with 1 changes to 1 files (+1 heads) 
(run 'hg heads' to see heads, 'hg merge' to merge) 

mine$ hg merge 
merging hello.py and a.py to hello.py 
0 files updated, 1 files merged, 0 files removed, 0 files unresolved 
(branch merge, don't forget to commit) 

mine$ hg ci -m "Merge commit" 

Теперь, когда вы смотрите на hello.py, вы найдете исправление Том присутствует, и вы решили толкнуть.

mine$ cat hello.py 
print "hello" 

mine$ hg push 
pushing to /home/main 
searching for changes 
adding changesets 
adding manifests 
adding file changes 
added 2 changesets with 2 changes to 1 files 

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

tom$ hg pull 
pulling from /home/main 
searching for changes 
adding changesets 
adding manifests 
adding file changes 
added 2 changesets with 2 changes to 1 files (+1 heads) 
(run 'hg heads' to see heads, 'hg merge' to merge) 

tom$ hg merge 
merging a.py and hello.py to hello.py 
0 files updated, 1 files merged, 0 files removed, 0 files unresolved 
(branch merge, don't forget to commit) 

tom$ hg ci -m "Merge heads" 
tom$ hg push 
pushing to /home/main 
searching for changes 
adding changesets 
adding manifests 
adding file changes 
added 2 changesets with 2 changes to 2 files 

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

mine$ hg pull 
pulling from /home/main 
searching for changes 
adding changesets 
adding manifests 
adding file changes 
added 2 changesets with 2 changes to 2 files 
(run 'hg update' to get a working copy) 

$ hg up 
$ cat hello.py 
print("hello") 

Вы можете видеть, что изменение, которое добавило круглые скобки, также существует. Таким образом, его очень безопасные файлы переименования в Mercurial с использованием hg mv.