1

現在、ローカルと開発サーバーの環境を同期させる方法は、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

bitbucket で一連の変更セットを 1 つにまとめるにはどうすればよいですか? machg を使用してみましたが、マージしたすべてのものを引き戻すだけです。プロジェクトを VPS にデプロイし、ローカル リポジトリと同期させるための適切な方法を考えています。環境をセットアップする過程で、レポを微調整する必要があり、その結果、多くの変更セットが作成され、サーバーにプルされました。したがって、リポジトリの履歴をきれいに保つために、これらの小さな変更セットをすべて 1 つにマージしたいと考えています。

ありがとう

4

1 に答える 1

1

あなたが求めていることを完全に理解しているかどうかはわかりませんが、Git Flowに似たブランチ ワークフローを使用することは、開発とリリースの間の変更の流れを管理するための良い方法です。

要するに"、

  • すべてのリリースを master というブランチに保持する
  • 通常どおり、デフォルトですべての開発を行います
  • リリース時に、リリース用のマスターからブランチを作成します

    $ hg update master && hg branch relv1.0

  • デフォルトから必要なものをマージします。この例では、最新が必要なものであると想定しています。

    $ hg merge default && hg commit -m "デフォルトから最新のものをマージ"

  • 必要に応じて、このブランチに変更を加えて、該当する場合はテストに合格し、一般的に、プロジェクトにとって何を意味するかを問わず、リリースの準備を整えます。

    $ hg commit -m "直前のバグ修正...など"

  • リリースの準備ができていることを確認したら、タグを付け、ブランチを閉じて master にマージします。

    $ hg tag "release 1.0" && hg update master && hg merge "release 1.0" && hg commit -m "merge release 1.0"

    $ hg update "release 1.0" && hg commit --close-branch -m "all done"

  • そして最後に、デフォルトをマスターと同期させます。

    $ hg update default && hg merge master # 複数の人が開発している場合、ここでマージの競合が発生する可能性があります

    $ hg commit -m "マスターからリリース 1.0 をマージ"

  • 展開の場合、マスターから最新のものをプルするだけです

ここでの全体的な効果は、マスターに入る差分は、そのリリースに至るまでのすべての個々の変更セットではなく、最後のリリース以降のデフォルトブランチからの変更を組み合わせたものを常に表す必要があるということです。

明らかに、それを行う方法はおそらく 1000 通りありますが、Git-Flow のような分岐戦略がユビキタスであり、チームがそれを理解して従うことができるのは安全な賭けだと思います。

もう 1 つのオプションは、パッチ キューを使用することです。これにより、任意の時点で変更セットに何が入るかを完全に制御できます。

于 2012-04-23T12:15:02.583 に答える