2014-09-06 51 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$ 
相關問題