1

アプリケーションに、コンパイル済みファイルを含むディレクトリがあります (具体的には、Rails アプリでは、CoffeeScript/Sass ファイルからコンパイルされた JS/CSS バージョンを含む public/assets フォルダー)。

リポジトリに最新のコンパイル済みバージョンが存在する必要があるため、ディレクトリを完全に無視したくありません。むしろ、ディレクトリ内のファイルへのすべての変更を git が追跡しない方がよいと思います。私のgitリポジトリは、私が気にしないファイル履歴で絶えず成長しています。

これはまったく可能ですか?私はこれをしたいのに夢中ですか?

4

1 に答える 1

1

はい、IMO でコンパイルされたオブジェクトをバージョン管理することに夢中ですが、Heroku も狂っているようです。

その場合、展開プロセスをスクリプトにラップして、次のようにします。

  1. ブランチ
  2. コンパイル
  3. コンパイルされたアセットをコミットします (ick)
  4. 強制プッシュ
  5. ローカル ブランチの HEAD をリセットして、ブランチ ポイントをタグとして保持しますが、コンパイルされたアセットを含む孤立したコミットはガベージ コレクションされる可能性があります
  6. 元のブランチに戻る

追跡する方法を提供する限り、GC がブランチをクリアする前に、いつでもブランチをチェックアウトして、デプロイされたコミットに再びロールフォワードできることに注意してください (コミット SHA を含むメモが機能します)。手遅れになっても、ソースからビルドを再現できます。


複数のリポジトリがある場合、これは明らかに失敗します。これを修正する方法はわかりませんが、単一のマスター/デプロイ リポジトリで CI 環境のようなものを実行することはできます。

ソースの通常の (強制されていない) プッシュをマスター デプロイ リポジトリのみに実行し、ブランチ/コンパイル/デプロイ/破棄の手順を自動的に実行します。常にデプロイするのではなく、作業環境間で変更を同期するためにマスター リポジトリを使用する場合は、たとえば、タグがプッシュされたときにのみデプロイ シーケンスを実行することができます。

于 2012-10-04T14:46:07.763 に答える