假设我想从远程存储库中提取下k个更改集,其中k大于或等于1.是否有一些语法允许这样做?如果可用的变更集小于或等于k,则该命令将回落到原始pull
,这将是很好的。如何提取mercurial中的下一个k更改集
当然,在这种情况下。术语“下一步”引用了远程存储库不公开公开公开暴露的存储库的本地修订版号。
我知道我可以查找一个合适的散列,如果存储库可通过Web界面浏览,但有没有办法做到这一点没有任何关于远程存储库的具体信息?
假设我想从远程存储库中提取下k个更改集,其中k大于或等于1.是否有一些语法允许这样做?如果可用的变更集小于或等于k,则该命令将回落到原始pull
,这将是很好的。如何提取mercurial中的下一个k更改集
当然,在这种情况下。术语“下一步”引用了远程存储库不公开公开公开暴露的存储库的本地修订版号。
我知道我可以查找一个合适的散列,如果存储库可通过Web界面浏览,但有没有办法做到这一点没有任何关于远程存储库的具体信息?
如果您使用hg incoming
作为变更散列的来源,那么可以使用awk
(在我的情况下为GNU风味)提取第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多有,如果失败,只是拉还剩下什么时间。下面是一个示例:
[email protected]:~/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
[email protected]:~/projects$ cd unblog-clone/
[email protected]:~/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)
[email protected]:~/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)
[email protected]:~/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)
[email protected]:~/projects/unblog-clone$