2014-09-06 50 views
3

假设我想从远程存储库中提取下k个更改集,其中k大于或等于1.是否有一些语法允许这样做?如果可用的变更集小于或等于k,则该命令将回落到原始pull,这将是很好的。如何提取mercurial中的下一个k更改集

当然,在这种情况下。术语“下一步”引用了远程存储库不公开公开公开暴露的存储库的本地修​​订版号。

我知道我可以查找一个合适的散列,如果存储库可通过Web界面浏览,但有没有办法做到这一点没有任何关于远程存储库的具体信息?

回答

3

如果您使用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变量来控制数字。

2

因为,正如你所理解的那样,本地和远程的版本号不一定对应,你不会确切知道你得到的版本,但你可以假设总数量是相同的,所以你可以可能需要将当前修订版本号加上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$ 
相关问题