私は最近、自分のコードをバージョン管理下に置き始めました(私が働いているラボではSVNで、自分のコードはgithubで(明らかにgitで))。バージョン管理を使用する前に、私はこのようなことをしていました。バージョン番号の付いた多くのフォルダーの中に、ライブラリーの名前のフォルダーがありました。新しいバージョンで作業を開始するたびに、最後のバージョンのコピーを作成し、名前を新しいバージョンに変更して実装を開始します。
ただし、フォルダがバージョン管理下に置かれている場合、これはかなり冗長に思えます。冗長性は別として、誰かが最新バージョンを入手したい場合、彼import
/ 彼女たちがちょうどあればすべてのバージョンをダウンロードするでしょうclone
。
現在、バージョン管理を使用してこれを行う多くの方法を見ていますが、私はそれが初めてなので、どちらがより保守可能かはわかりません。
方法1:タグを使用する
私がタグを正しく理解していれば、メインブランチがあります。取得した変更をコミットし、バージョンでタグ付けします。次に、作業コピーを取得したい場合は、特定のタグが付いたコピーを取得します。(間違っている場合は修正してください)
方法2:分岐バージョン
この方法では、メインブランチは開発ブランチになります。時々、安定したバージョンがv1.2.0
作成されるとしましょう(たとえば)、そのバージョンのブランチを作成し、コミットしません。そうすれば、特定のバージョンをダウンロードする場合、そのブランチからコードを取得できます。私はあなたがそれにコミットすることは決してないと言ったが、バグ修正を行い、古いバージョンのブランチにコミットして古いバージョンを実行し続けることが可能かもしれない。現在のバージョンがある場合たとえばv2.0
、しかし、使用したい人がいるv1.2
、あなたはから別のブランチを取得することができv1.2
、すなわち、v1.2.1
およびバグ修正をコミット、またはちょうど同じバージョンを保持v1.2
し、単にバグ修正をコミットします。
したがって、ブランチは次のようになります。
v1.2.1 v1.2.2
/ /
v1.0.0 v1.2.0--------- v2.0.0
/ / /
-------------------------------------- dev
このようにして、マイナーバージョンアップデートごとにブランチを作成できます。(上のグラフでは、v1.2.1とv1.2.2、またはv2.0.0のリリース後に作成されたため、v1.2.0とv2.0.0の間の開発の一部ではないことに注意してください。古いバージョンのサポートと考えてください)
方法3:分岐開発
この方法は前の方法の反対です。メインブランチは最新の安定バージョンです。新しいバージョンで作業しているときは常に、(開発用の)ブランチを作成し、コードで作業し、安定しているときにメインブランチとマージします。
この場合、ブランチは次のようになります。
________ ____ ________________ _____ dev
/ \/ \/ \/
---------------------------------- latest_version
おそらくこれはタグと組み合わせて行う必要がありますか?
質問!
とにかく、私の質問はあなたの経験に基づいて、これらの方法のどれがより実用的であると証明しますか?そこに知られている最良の方法はありますか(おそらく私は自分自身を理解していなかった)?これらのことは一般的にどのように行われますか?