2012-02-03 52 views
0

我希望將最新的遠程修訂號碼提交到每次推送時遠程樹的文件。 following thread回答了在提交時本地執行它的問題,有沒有辦法在推送時遠程執行?Bazaar:在推送時自動遠程修改寫入遠程分支

換句話說,start_commit是否有類似「start_push」的類比/解決方法?

我想這樣做是爲了允許使用自己的版本來分散本地樹,同時爲「中心」樹保留單獨的版本。因此,不同的開發人員應該能夠從中央服務器分支,然後通過任何本地提交在本地樹中發散並推回/合併。所有的樹都應該自動和唯一地通過樹序列和其修訂版的組合來進行版本化,該樹序列被寫入到樹的一部分的文件中。例如,樹(xyz)的版本號爲127的(開發者的xyz本地)提交'xyz.127'到樹的VERSION文件中。然而,將這一修訂推向「中心」樹應該爲中心樹提供「中心98」(如果「中心」樹的最後一個修訂爲97)。

它對於本地提交工作正常,但我不知道如何實現遠程推送所需的行爲。請注意,修訂的本地分支將與遠程​​分支不同,這不是問題;它實際上是理想的。

或者,實現相同目標的不同設置(使用他們自己的版本和對「中央」樹進行單獨版本化的局部樹)將非常受歡迎!

+0

似乎沒有人能夠提供一個解決方案。集市是如此有限,或者是我的問題如此愚蠢/不尋常/嚴重製定? – jvm 2012-02-15 18:37:44

回答

2

您需要在註冊了post-change-branch-tip鉤子的服務器上安裝一個插件。

未經測試的例子:

from bzrlib.urlutils import local_path_from_url 
from bzrlib.osutils import pathjoin 

def post_change_branch_tip_hook(params): 
    root = local_path_from_url(params.branch.base) 
    path = pathjoin(self.root, 'revno.txt') 
    f = open(path, 'w') 
    try: 
     f.write('%s\n' % params.new_revno) 
    finally: 
     f.close() 
+0

問題是,據我所知,後更改分支提示不能修改樹。如果有辦法解決這個問題,你能否更具體地說明如何去做? – jvm 2012-02-06 13:24:13

+0

我沒有看到你無法從這裏修改文件的原因。如果你想要提交/版本控制文件,你需要採取不同的方法。我在答案中增加了一個未經測試的例子。 – AmanicA 2012-02-06 17:27:55

+0

感謝您的示例,並對不準確的抱歉:我確實需要提交文件。 (我之前使用'存儲在樹中'的不精確公式',現在我已經替換爲'致力於樹')。 – jvm 2012-02-07 00:24:36