Subversionのユーザー向けGIT(et al。Scm)

Gitは、subversion、cvsなどに似た別のソース管理システムです。 「新しい」、「速い」などではなく、なぜ類似しているのですか? SCM(ソースコード管理)は、主に1人の開発者とチーム全体に必要な操作を実行できるツールです。 各ツールには長所と短所があります。



この記事では、比較分析をせずに(Web上で数百万のメモを繰り返さないように)主な機能に焦点を当てます。 そして、Subversionで作業するときにgitを使用する方法の例を示します。



必要な主な機能は、変更履歴の表示、任意のポイントへのロールバック、コード分岐の作成機能です。 Subversion(cvs)はこれらすべての要件を実装しており、多くの開発者はそれらを毎日使用しています。 これらのコマンドを実行すると、サーバー側でアルゴリズムが実行され、他の開発者が変更を確認できるようになります。 このアプローチには小さな問題があります。開発者は、チームと結果を共有せずに中間作業をコミットしたい場合があります。 さらに、開発者はプロジェクトブランチを作成してアイデアをテストすることもできます。その結果は誰でも利用できます。

チームに複数の人がいて、それぞれがアイデアごとにブランチを作成する場合、すぐに何百もの絶対に役に立たないデータを受け取ります。 この結果、ブランチを作成する時期と方法についてはチーム内にポリシーがあります。

同時に、分岐ツールは依然として良好であり、放棄すべきではありません。

その結果、同様の機能をサポートするscmシステムを選択する価値があります。 これらのシステムは引き続き同じコマンドを実装しますが、各開発者には独自のローカルリポジトリが与えられます。 この場合、プロジェクトは複数の分散リポジトリで構成されます。

この記事では、分散開発プロセスについては考慮しません。



Subversionを使用します





毎朝、 ' svn update 'を実行して、ローカル作業コピーを中央リポジトリと同期します。 次に、トラッカーを介してタスクを取得し、考え始めます。 問題を解決するための2つのオプションがあり、両方を試して最適なものを選択する必要があるとします。

最初のオプションをコーディングしてテストすると、いくつかの結果が得られます。 次に、2番目の方法を試す必要があります。 これは問題を引き起こします、既存の変更をどうするか? ソリューションの準備が整っていないため、コミットできません。 コメントアウト、ディスク上のファイルのコピーなどを作成できますが、いずれにしても、これはあまり便利ではありません。 理想的には、両方のバージョンを用意し、選択したソリューションに対してのみコミットすると便利です。

gitがシーンに入る場所です。 また、他のチームメンバーに対して透過的に使用できます。



Gitを少し追加します。





明確にするために、プロジェクトをフォルダーACMEに保存します。 つまり これはSubversionの作業コピーであり、.svnフォルダーが含まれています(.svnはプロジェクトのすべてのサブフォルダーにあります)。

' svn status 'は現在のステータスを表示します。



まず、初期化を行う必要があります。 ACMEで、次を実行します。

git init





これにより、.gitフォルダーにあるローカルgitリポジトリが作成されます。 注-.gitはプロジェクトの最上位フォルダーにのみあります。



実行:

git status







すべてのファイルが未追跡としてマークされていることがわかります。 ファイルを追加する前に、.svnを除外します

.git / info / excludeを開いて、「. svn * 」を追加します。 現在、gitステータスは.svnに応答しません。

プロジェクト全体をgitに追加します。



git add .

git commit -am "initial file import"








次に、 svn statusに.gitフォルダーが表示されます。 必要ないので無視してください:



svn propset svn:ignore .git .







これで、プロジェクトファイルは両方のシステムにあります:subversionとgit。 Subversionの観点から見ると、ワークプロセスは変更されていません。更新、コミットなどを使用します。



あなたがチェックするアイデアを持っていると仮定して、gitが私たちをどのように助けるか見てみましょう...

git statusを実行して、プロジェクトのステータスが更新されたことを確認します。 ( svn updateの結果として)変更または新しいファイルがある場合は、それらを追加してgit commitを作成します。 あなたはmasterブランチにいることに注意してください。

アイデアのブランチを作成できます。



git branch idea

git checkout idea








または



git checkout -b idea







git statusは、あなたが新しいブランチにいることを示します。 git branchはすべてのブランチを表示します。

すべての変更、コミット、テストなどを行うことができます。 いつでも翻訳ブランチに行くことができます。



git checkout master







そして戻る



git checkout idea







ideaブランチを使用して、追加のブランチを作成できます...



すべての変更とチェックを行った後、変更をSubversionに戻すことは悪くありません。 まず、 svn statusを実行して変更を表示し、 svn commit



ます。 これが最も簡単な方法ですが、追加の手順を実行することをお勧めします。

masterブランチをSubversionのミラーにします。 svn updateおよびsvn commitを実行するのは、マスターにいる場合のみです。

その結果、変更をマスターに転送する必要があります。



git checkout master

git merge idea








マスターに変更を加えていないため、システムは単純なマージフォワードを行い、svnでコミットできるようになります。



不要なブランチは削除できます:



git branch -d idea







何かを台無しにした場合は、いつでも.gitを削除してinitを再度作成できます。



おわりに





一般的に、gitはアイデアをチェックし、新しい機能を追加し、バグを修正するためのほぼ完璧なツールです。 ベストプラクティスとして、非化粧品の変更ごとにブランチを作成することをお勧めします。 続編では、コマンド、checkout、add、branch、mergeについて読む価値があります。



アンドリュー・ロマネンコ

andrew@romanenco.com

www.romanenco.com/gitsvn



All Articles