假設我想從遠程存儲庫中提取下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$