使用Mercurial,如果我执行了hg pull
和hg up
,现在本地仓库和工作目录都是最新的。
如果我经常提交,比如说1天之后,然后是2天之后,并且想要与现在的版本区分开来怎么办?
否则,diff始终与之前提交的版本进行比较。
我可以使用铅笔和纸张立即记下修订号,比如4117
,然后是1天后,2天后,以及我确定之前的任何时间,并推送到远程中央仓库,做一个
hg vdiff -r 4117
(使用vdiff
或diff
)。但是,有没有办法让Mercurial以某种方式记住这个数字,而不是记住这个“神奇数字”4117?这样,hg vdiff
可以看到针对已提交代码的次要更改之间的差异,但是在推送到远程仓库之前有一个显示所有更改的差异。
(或者,如果有一个命令显示自上次提取以来的修订号,也应该显示4117
,那么在bash上我们可以执行hg vdiff -r `hg --what-is-last-pull`
)
更新: hg out --patch
是否会显示推送到远程仓库的差异?如果是这样,也许它可以达到目的而不用关心“神奇的数字”。但是如何使用kdiff3或任何其他diff工具显示补丁差异?此外,似乎我们可以hg out
,如果我们看到4118,4119,4120,那么我们知道我们是否hg vdiff -r ___
我们应该使用(4118 - 1)这是4117。
更新2:实际上,hg out --patch
显示本地存储和远程存储之间的差异,因此它很接近,但与工作目录和本地目录之间的差别不完全相同或远程回购。
答案 0 :(得分:3)
如果要标记修订版,可以使用书签扩展名。它与mercurial一起发货。文档可用here
在你的情况下,
hg pull -u
hg bookmarks lastpull
..hack..hack..
hg ci -m new-hack
hg diff -r lastpull:tip
hg bookmarks -d lastpull
答案 1 :(得分:2)
使用多个克隆进行此操作。从远程仓库克隆时,最初使用clone -U
创建一个根本没有工作目录文件的克隆。然后在本地再次克隆,例如:
$ hg clone my-local-clone-with-no-working-files my-working-clone
执行您的提交并在my-working-clone
中工作,然后您可以随时查看my-local-clone-with-no-working文件中的tip
以查看您最后提取的内容从服务器是。如果你想获得幻想,可以为:
hg diff -r $(hg -R $(hg root)/../my-local-clone-with-no-working-files id -i -r tip)
将比较你运行它的repo的工作目录(my-working-clone)和你上次从服务器中提取的内容的提示。
这不需要额外的磁盘空间是值得的,因为本地克隆使用了my-local-clone-with-no-working-files
没有工作目录文件的硬链接。
答案 2 :(得分:0)
您可以使用本地标记替换笔和纸:hg tag -l -r <revision number on paper> tagname
。注意-l,它使标记成为本地,这意味着它不会通过推拉传递。您也可以hg tag -l --remove tagname
删除此标记。