如何使用' hg mv'在团队合作的环境中?

时间:2016-12-28 09:04:18

标签: version-control mercurial

我是团队的一员,我目前的任务是重组,即在一堆文件/文件夹中移动。

我想使用' hg mv',然后如何将其与团队合作同步?请记住,团队目前正在处理我需要移动的文件。推动重组后他们能够拉/更新吗?即使我移动了他们的文件,hg是否能够合并他们的本地更改?

另一个问题是' hg up'在重组被推动之前我最终。 hg可以处理我已移动但尚未推送的文件的传入修改吗?

1 个答案:

答案 0 :(得分:1)

让我们创建三个名为maintommine的存储库,以了解会发生什么。 main是一个中央存储库,您和Tom(您的同事之一)推动更改并使用它进行协作。 tom是Tom的存储库,mine是您的存储库。 tommine显然是main的克隆。

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

让我们有一个文件可以玩。 Tom创建了一个文件并将其推送到主存储库。

$ 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

现在您注意到Tom不擅长命名,因为他将文件命名为a.py,这是最不具描述性的。您决定将其重命名为hello.py

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

与此同时,Tom运行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时,您会发现Tom的修复程序存在并且您决定推送。

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

当您拉这个时间时,您的Tom存储库将具有相同的状态,文件被重命名并且所有更改都保持不变。

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")

您可以看到添加括号的更改也在那里。因此,使用hg mv Mercurial 中非常安全地重命名文件。