2012-04-23 16 views
1

現時点では私のローカルとdevサーバーのenvを同期させたままファブファイルに保存しています。折りたたみ/マージは1つのチェンジセットにコミットします

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() 

と私はそのエイリアスcmdがこの

fetchanddestroy = !hg pull && hg update -C 

どのように私は1つの上へチェンジの範囲を折りたたむことができますを行い、この

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

を使用レポからプルしたいですビットバケット?私はmachgを使ってみましたが、マージしたすべてのものを取り戻すだけです。私は私のプロジェクトを私のVPSに配備し、私のローカルレポと同期させるのに適した方法を考えています。環境を設定する過程で、私はリポジトリを微調整しなければならず、多くのチェンジセットが作成され、サーバー上に引き込まれました。したがって、私はレポ履歴をきれいに保つために、小さなチェンジセットをすべて1つに統合したいと思っています。

おかげで、私は完全にあなたがGit Flowに似た枝のワークフローを尋ねるが、使用しているかを理解

+0

なぜあなたのレポ履歴を「クリーン」にしたいのですか?そこに小さなコミットがたくさんあることで害は何ですか? –

答えて

0

わからないが、開発とリリース間の変更の流れを管理するための良い方法です。 「短い」で

  • を使用すると、通常のリリース時に
  • はのためのマスターのオフブランチを作成し、デフォルトですべての開発を行う

  • マスターと呼ばれるブランチのすべてのリリースを続けますリリース

    $ HG更新マスター& & HG分岐relv1.0

  • をデフォルトからマージします。この例では、最新のものをあなたが望むものと仮定します。

    $ HG該当すると、一般的には、それがためにあらゆる手段をリリースのそれは準備場合、このブランチに必要なメイク変更がテストに合格するためにならば-mは

  • 「をデフォルトから最新のマージ」コミットHGデフォルト& &をマージあなたのプロジェクト

    $ HG支店を閉鎖し、マスターにマージ、あなたはリリースの準備ができていると確信している場合は、それをタグ付け「等...直前バグ修正」

  • を-mをコミットします。

    $のHGタグ "リリース1.0" & &はHGコミット& & HG

    $のHG更新 "1.0をリリースマージ" -mコミット "1.0リリース" & & HGマージ "1.0リリース" & & HG更新マスター--close-branch -m "all done"

  • そして、最終的にmasterとの同期でデフォルトに戻ります。

    $ HG更新デフォルト&あなたが開発

    $ HG「マスターから1.0をリリースマージ」-mコミット

  • をしている複数の人を持っている場合、マージの競合の可能性は、ここにあります& HGマージマスター#デプロイメントのために、マスターから最新のものを引き出すことができます

ここでの全体的な効果は、マスターへの差分が常に私が思う最後のリリース以来のデフォルトのブランチは、そのリリースにつながったすべての個々のチェンジセットではなく、あなたが望むものだと思います。

明らかに、それを実行する方法はおそらく1000種類ありますが、Git-Flowのような分岐戦略が十分に普及しているので、あなたのチームがそれを理解してそれに従うことができます。

もう1つのオプションは、パッチキューを使用して、任意の時点でチェンジセットに入るものを完全に制御する方法です。

関連する問題