1

最近、新しいライブラリの開発を開始し、リビジョン管理にGitを使用しています。非常に人気のあるブログ投稿「成功したGit分岐モデル」に従って分岐を管理することにしました。そろそろ最初のリリースを作成するときです。以下で説明するように、特定のファイルセットの管理についてアドバイスをお願いします。

開発ブランチと機能ブランチでは、コンパイルに使用されるmakefileやdoxygenがドキュメントを生成するために使用するreadme.mdファイルなど、すべての「サポートファイル」が必要です。(これらはほんの数例であることに注意してください。私にはもっと多くの「サポートファイル」があります。)

ブログ投稿には、マスターブランチへのコミットは定義上リリースであるとも書かれています。リリースにすべての「バイナリファイル」(たとえば、コンパイルの結果のオブジェクトファイルとドキュメントを含むhtmlファイルを含む)を含めたいと思います。これらのファイルはマスターブランチにコミットする必要があります。これにより、顧客はタグを使用してリポジトリからクローンを作成し、必要なリリースを取得できます。

私はリリースに「サポートファイル」を含めたくない(顧客が望まない、または使用できないファイルのヒープを顧客に提供したくないため)。同様に、開発ブランチと機能ブランチで「バイナリファイル」をバージョン管理しないようにします。したがって、1セットのファイルを開発用にコミットし、別のセットのファイルをマスター用にコミットしたいと思います。(もちろん、両方のブランチに「共通」のファイルのセットもあります。)ただし、今説明したように、マスターと開発ブランチの同期を維持することに懐疑的です。

私の提案したモデルは良い音ですか?もしそうなら、開発とマスターにコミットされたさまざまなファイルを持つことにどのように対処する必要がありますか?この状況を処理するためのより良い方法はありますか?

上記のブログページのコメントを1つずつ確認し、インターネットを検索し、StackOverflowでも検索しました。検索結果から、いくつかの異なるファイルを含むこの投稿GITリポジトリは、私の質問に近い唯一のリポジトリのようです。これらのどちらも私が解決策を理解するのに役立ちませんでした。

4

2 に答える 2

1

git-flowでは、マスターブランチが最新リリースのヒントを保持しています。そのステートメントの欠陥は、コンパイルが必要なソフトウェアで作業する場合です。

その場合、マスターブランチは、実際のリリースを作成するソースリリースブランチです。定義上、これを分岐モデルで見ると、マスターブランチにもすべてのサポートファイルが必要になります。そうすれば、いつでも最新リリースのバイナリを作成できます。

あなたの場合、顧客に必要のないファイルをたくさん持たせたくないと言います。つまり、リリース後に追加の作業が必要になります。git-flowの用語では、git flowのリリースを終了した後、リリースをコンパイルする追加の手順を実行する必要があります。コンパイルの結果は、リビジョン管理下にあるべきではありません。オリジナルのgit-flowソフトウェアでは、手動でコンパイルプロセスを開始する必要があります。私のフォーク、git-flow(AVH Edition)を使用すると、実際にはフックを使用してこれを自動的に実行できます。

なんらかのコンパイルが必要なgithubのプロジェクトの99%は、マスターブランチにもすべてのサポートファイルがあります。

于 2012-11-24T19:03:29.810 に答える
1

IMO提案された解決策は良くありません。問題の一般的な解決策は次のとおりです。

  • バージョン管理はすべての「サポートファイル」です。これらのファイルが変更されているか削除されているかを気にする場合は、バージョン管理下にある必要があります
  • 「バイナリファイル」が単にコンパイルプロセスによって生成されたものである場合は、バージョン管理を行わないでください。コンパイルされるコードとMakefileが重要です。コードのコンパイルに使用される場合は、「bin」フォルダなどにバイナリファイルがある可能性があります。
  • クライアントに配信するパッケージの周りにビルドプロセスを作成します。クライアントがアクセスできるパッケージを作成することも、「パッケージスクリプト」を自分で実行することもできます。「パッケージスクリプト」は、コマンドラインで実行するだけで、リポジトリのクローンを作成し、パッケージをビルドし、リポジトリを削除できます。

git分岐モデルと、それらが開発にどのように適用されるかについて詳しくは、 http: //git-scm.com/book/en/Git-Branchingをご覧ください。

于 2012-11-24T16:52:14.727 に答える