2012-04-23 49 views
1

目前我保持我的本地和開發服務器env同步的方式是使用fabfile。摺疊/合併提交到一個變更集

def upload(): 
""" upload project dir to the production server. """ 
extra_opts = '--omit-dir-times' 
rsync_project(
    remote_dir=env.remote_dir, 
    local_dir=env.local_dir, 
    exclude=RSYNC_EXCLUDE, 
    delete=True, 
    extra_opts=extra_opts, 
) 
reload_apache() 

,當我想從回購拉我用這個

def update_source(): 
    """ Update the project source. """ 
    with cd(env.directory): 
     run('hg fetchanddestroy') 

其中該別名CMD執行此

fetchanddestroy = !hg pull && hg update -C 

我怎麼能摺疊範圍變更爲一體的上到位桶?我曾嘗試使用machg,但它只是拉回所有我合併。我試圖以合適的方式在我的VPS上部署我的項目,並使其與本地回購站保持同步。在設置環境的過程中,我不得不對repo進行微小的調整,導致許多變更集被製作並拉到服務器上。因此,我想將所有這些小變更集合爲一個,以保持我的回購記錄清潔。

感謝

+0

爲什麼要保持回購記錄「乾淨」?在那裏進行一些小的提交有什麼危害? – 2012-04-23 13:33:00

回答

0

不知道我完全理解你的要求,但使用類似於Git Flow一個分支工作流程管理開發與發佈之間變化的流量的好方法。

在「短」,

  • 保持在一個分支上的所有版本中稱爲主
  • 做默認所有的開發,因爲您通常會
  • 在發佈時創建一個分支關老爺對釋放

    $汞柱更新主& &汞柱分支relv1.0

  • 合併你想要的默認值,這個例子假定最新的是你想要的。

    $汞柱合併默認& &汞柱提交-m

  • 「從默認的合併最新的」如果在這個分支需要進行更改,使測試通過,如果適用,一般把它準備發佈任何這意味着對於你的項目。

    $汞柱提交-m「最後一分鐘的錯誤修復...等」

  • 當你有信心,釋放已準備就緒,標記它,關閉支路並將其合併到主。

    $汞柱標籤 「釋放1.0」 & &汞柱更新主& &汞柱合併 「釋放1.0」 & &汞柱提交-m 「合併發行1.0」

    $汞柱更新 「釋放1.0」 & &汞柱承諾--close-branch -m「全部完成」

  • 並最終使默認回到與主同步。

    $汞柱更新默認& &汞柱合併主站#有合併衝突的可能性在這裏,如果你有多人做開發

    $汞柱提交-m「合併來自主釋放1.0」

  • 對於部署,您可以從主站點拉最新

這裏的總體效果是,進入主站的差異應始終表示組合更改自上個版本以來的默認分支,我認爲是您想要的,而不是導致該版本的所有單個變更集。

很明顯,可能有1000種方法可以做到這一點,但我認爲像Git-Flow這樣的分支策略無處不在,您的團隊可以理解並遵循它。

另一種選擇是使用補丁隊列,這樣您就可以完全控制在任何給定點進入變更集的內容。