[英]How to pull the next k changesets in mercurial
假设我想从远程存储库中提取下一个k变更集,其中k大于或等于1.是否有一些语法允许这样做? 如果可用的变更集小于或等于k,则返回到普通pull
命令将是不错的。
当然,在这种情况下。 术语“next”引用存储库的本地修订号,远程存储库不公开显示。
我知道如果存储库可以通过Web界面浏览,我可以查找合适的哈希,但有没有办法在没有任何关于远程存储库的特定信息的情况下执行此操作?
如果你使用hg incoming
作为变更集哈希的源,那么可以用awk
(在我的例子中,GNU-flavored)提取第N个哈希值。 将获得的哈希提供给hg pull
然后将拉出该变更集及其所有祖先。 您可以使用hg incoming
选项进一步优化变更集列表,例如--branch。
这是一个例子:
hg pull -r $(hg in -q -T'{node}\n' | \
gawk '\
BEGIN {chunk=10} \
NR == chunk {printf $0} \
END {if (chunk > NR) printf $0}')
将最多拉出下一个传入的10个变更集。 您可以在awk脚本中通过chunk变量控制数字。
因为,正如您所理解的那样,本地和远程的修订号不一定对应,您不会确切地知道您正在获得哪些修订,但您可以假设总数量相同,因此您可以考虑当前修订号加上k,只需使用该号码即可。 像这样的东西:
hg pull -r $(( $(hd id -n -r tip) + 50)) || hg pull
每次你运行它会尝试拉50多,如果失败只是拉左边的东西。 这是一个示例:
ry4an@four:~/projects$ hg clone -r 1 unblog unblog-clone
adding changesets
adding manifests
adding file changes
added 2 changesets with 9 changes to 9 files
updating to branch default
9 files updated, 0 files merged, 0 files removed, 0 files unresolved
ry4an@four:~/projects$ cd unblog-clone/
ry4an@four:~/projects/unblog-clone$ hg pull -r $(( $(hg id -n -r tip) + 50)) || hg pull
pulling from /home/ry4an/projects/unblog
searching for changes
adding changesets
adding manifests
adding file changes
added 50 changesets with 505 changes to 227 files
(run 'hg update' to get a working copy)
ry4an@four:~/projects/unblog-clone$ hg pull -r $(( $(hg id -n -r tip) + 50)) || hg pull
pulling from /home/ry4an/projects/unblog
searching for changes
adding changesets
adding manifests
adding file changes
added 50 changesets with 90 changes to 54 files
(run 'hg update' to get a working copy)
ry4an@four:~/projects/unblog-clone$ hg pull -r $(( $(hg id -n -r tip) + 50)) || hg pull
pulling from /home/ry4an/projects/unblog
abort: unknown revision '151'!
pulling from /home/ry4an/projects/unblog
searching for 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)
ry4an@four:~/projects/unblog-clone$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.