2009-02-27 14 views
48

gitをCVSリポジトリとインターフェイスするためのベストプラクティスとヒントは何ですか?CVSでgitを使用するためのベストプラクティス

+3

私はSourceSafeについて同じ質問をするように誘惑されますが、私は本当に(完全にオンターゲットの)嘲りを乗り切りたくありません。 –

答えて

21

私は同様の質問hereの回答を書いています。

これは、中央のCVSリポジトリに変更を続けることを余儀なくされているときにはうまくいきます。

11

私はGit-CVSのやりとりでGitのデモを行ってきましたが、とても簡単でした。

  • 現在のコピーcvspsをインストールする必要があります。 Git cvsimportは、これを使用してCVS履歴にアクセスします。

    $ rsync rsync://yourprojecthost.com/cvsroot/yourproject/* 
    $ mkdir myproject.git 
    $ cd myproject.git 
    $ git cvsimport -p -x -v -d :local:/path/to/cvsroot/yourproject 
    
  • 私たちは、大規模なプロジェクトのために、initalセットアップがコンピュータにCVSのレポの完全なコピーを取って、そしてローカルgit cvsimportを行うことによってずっと速かった、ことがわかりました

    -pの後に-xが非常に重要であることに注意してください。これは-xをcvspsに渡します。詳細は、cvsps man pageを参照してください。

  • +1

    私は間違っていると思います/ 3段階です。 –

    +2

    @PeterBurns:それは... 'git cvsimport -p -x -v -d:local:/ path/to/cvsroot yourproject' – Archenoth

    1

    ややメタアミス。 git 'ゲリラスタイル'を強制的に使用する場合、つまり、あなたの会社がバージョンコントロールのために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コマンドの前のパスを含めます。そうしないと、

    8

    は、私は自分のworkflow for remote CVS, local Git

    +1

    (これを行うための他のツールもあります)ので、あなたは以前のすべてのリビジョン情報を放棄するように促しますか?それはひどい解決策です。 –

    +0

    それについて何が恐ろしいですか?私の変更をCVSに戻す場合、改訂履歴は「投げ捨て」されていません。そして私がリビジョン履歴を見たいのであれば、CVSコマンドを使っていつでもそれを行うことができます。 –

    +0

    gitにコミットするのではなく、 '.gitignore'に' CVS'を追加するとどんなメリットがありますか? gitリポジトリが不完全になっていませんか?私が意味することは、http://stackoverflow.com/a/37585092/1122270とhttp://stackoverflow.com/q/37585385/1122270を参照してください。 – cnst

    1

    上流である場合はCVSで100%(例えば、OpenBSDの内容を書いた... Gitはその有用ではありませんCVSのもの、より古いコミットすることができ、またはそのサブプロジェクトの多くがmdocmlまたはports-readmesのように)、特にOpenBSD CVSツリーほど錆びている(例えば、時には履歴の書き換えがあっても)場合は、CVS/{Entries,Repository,Root}ファイルを直接gitに直接コミットするのが非常に便利です。リポジトリ。

    これはgitのレスメンテナに郵送のための正しいCVSパッチを生成するために、複数の独立したワークスペースを持っている必要が任意のマシン上でgitをチェックアウトすることを可能にして、代わりにcvs up、またはcvs diffないように、それは非常に簡単になります上流の。