2017-01-10 9 views
5

私はfeatureブランチとtestingブランチ(初期回帰用)を持っています。テスト環境用の私のtestingブランチ用の作業コピーを用意したいと思います。しかし、スクリプトを介してソースコードの一部を圧縮する必要があります(バイナリではなく、最適化するだけです)。私はpost-receive Gitフックを通してこのスクリプトを制定することができます。GitフックでCIスクリプトを使ってソースを圧縮する方法

私はbashスクリプト(CI用)を設計して、かなり堅牢で、Gitの競合を引き起こす自動化を避けたいと考えています。私は、主リポジトリ(origin)とテスト環境リポジトリ(ci_test)を持って、CIをコミットできるようにすることを考えています。

ソースをプロモートするときにci_test/testingにプッシュすることを考えています。 CIは圧縮し、追加し、コミットし、origin/testingからフェッチし、必要に応じてマージし(コンフリクトを完全にとってから)、origin/testingにプッシュします。

上記の私のモデルの問題は、作業コピーがあるので、ci_test/testingにプッシュしようとするとGitが文句を言うことです(それらは同期されない可能性があるので意味があります)。継続的統合スクリプトをGitと一緒に使用して、まだ追跡されている(自動化された)方法はありますか?上記の私のモデルに

答えて

2

問題は、私がci_test/testingにプッシュしようとしたとき、それは(彼らが同期されない場合がありますので、理にかなって)作業コピーを持っているので、Gitは文句ということです。どちらか

あなたがすることができます

  • だろうpost-receive hookであなたのci_testは、裸のレポであることを確認してください。

    • ​​
    • は、すべての操作をトリガー
  • 、またはそのci_testingリモートリポジトリにプッシュする唯一の人は、リモートのGitがベア以外のリポジトリへのプッシュを受け入れるように設定します。
    これはとsince Git 2.3+可能です:ユーザーが押したときの動作を正確に内容をカスタマイズするために、サーバーにインストールすることができ、「push-to-checkout」フック、とセットアップリモートci_testingすることができます、

    git config receive.denyCurrentBranch updateInstead 
    

with Git 2.4+チェックアウトしたブランチに転送します。

+0

[プッシュツーチェックアウト](https://git-scm.com/docs/githooks#_push_to_checkout)フックは有望です。私はそのフックが存在することに気づいていなかった。 私はci_testが作業コピーを持っていた理由は、フックがソースを変更し、変更をコミットしたいからです(私は作業コピーなしでそれを行うことはできません)。私はまた、アプリケーションのテスト版を読むために使用されるディレクトリとして作業コピーを使用しています。 – BLaZuRE

+0

@BLaZuREはい、あなたのケースでは、プッシュツーチェックアウトが適しているようです。 – VonC

関連する問題