web-dev-qa-db-ja.com

CVSでgitを使用するためのベストプラクティス

Gitを使用してCVSリポジトリとやり取りするためのベストプラクティスとヒントを教えてください。

48
skiphoppy

同様の質問への回答を書きました here

これは、中央のCVSリポジトリに変更をプッシュし続けることを余儀なくされた場合に驚くほどうまく機能します。

21
Brian Phillips

私は友人のために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 を参照してください。

11
Paul

私は自分の詳細を書きました リモートCVSのワークフロー、ローカルGit

8

わずかにメタアンサー。 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コミットを使用できますが、これはあまり役に立ちません...

1

アップストリームがCVSで100%の場合(たとえば、OpenBSD、または mdocmlports-readmes などのサブプロジェクトの多く)、特にOpenBSD CVSと同じくらい錆びている場合ツリーは(たとえば、履歴を書き換える場合もあります)、基礎となるCVS/{Entries,Repository,Root}ファイルを私のgitリポジトリに直接。

これにより、複数の独立したワークスペースを必要とせず、任意のマシンでgitを使用してチェックアウトし、cvs upインプレース、またはcvs diff git-lessメンテナのアップストリームにメールするための正しいCVSパッチを生成します。

1
cnst