Gitを使用してCVSリポジトリとやり取りするためのベストプラクティスとヒントを教えてください。
同様の質問への回答を書きました here 。
これは、中央のCVSリポジトリに変更をプッシュし続けることを余儀なくされた場合に驚くほどうまく機能します。
私は友人のためにGitをデモするためにGit-CVSインタラクションで作業しただけですが、それは非常に簡単でした。
cvsps
の現在のコピーをインストールする必要があります。 Git cvsimport
これを使用してCVS履歴にアクセスします。大規模なプロジェクトの場合、CVSリポジトリの完全なコピーをコンピューターにコピーして実行することにより、初期設定がmuchより高速であることがわかりました。 git cvsimport
ローカル:
$ rsync rsync://yourprojecthost.com/cvsroot/yourproject/*
$ mkdir myproject.git
$ cd myproject.git
$ git cvsimport -p -x -v -d :local:/path/to/cvsroot/yourproject
-pの後の-xは非常に重要であることに注意してください。これにより、-xがcvspsに渡されます。詳細については、 cvsps man page を参照してください。
私は自分の詳細を書きました リモートCVSのワークフロー、ローカルGit
わずかにメタアンサー。 git 'guerilla style'の使用を余儀なくされた場合、つまり、バージョン管理にcvsを使用している会社が立ち往生していて、ワークステーションでgitを使用して作業を楽にする場合、次のようなことを検討できます。
CVS=realCvsPath
# commit to the git first
if ($ARGV[0] && $ARGV[0] eq "commit")
{
system 'git commit -a';
}
# execute the appropriate cvs program
# ===================================
exec "$CVS", @ARGV
このファイルを「cvs」と呼び、実際のCVSコマンドの前にパスを含めます。それ以外の場合は、cvsのものよりも古いgitコミットを使用できますが、これはあまり役に立ちません...
アップストリームがCVSで100%の場合(たとえば、OpenBSD、または mdocml や ports-readmes などのサブプロジェクトの多く)、特にOpenBSD CVSと同じくらい錆びている場合ツリーは(たとえば、履歴を書き換える場合もあります)、基礎となるCVS/{Entries,Repository,Root}
ファイルを私のgit
リポジトリに直接。
これにより、複数の独立したワークスペースを必要とせず、任意のマシンでgit
を使用してチェックアウトし、cvs up
インプレース、またはcvs diff
git-lessメンテナのアップストリームにメールするための正しいCVSパッチを生成します。