2017-07-29 51 views
0

私はCVSリポジトリをcvs2git(cvs2svnの一部)を使ってGitに移行しています。私がツールを実行すると、完全に動作するように見えますし、gitリポジトリが正常に動作します。しかし、変換が正常に行われたことを確認する方法が必要です。cvs2gitを使ったCVSからGitへの変換を検証するには?

私は、最新のgitコミットのファイルの内容が、最新のCVSコミットのファイルの内容と同じであることを確認する必要があります。可能であれば、コミットの著者が一致し、コミットのタイムスタンプが正しいこと、タグが保存されていることを検証したいと思います(タグ/ブランチモデルが正確には一致しないが、少なくともタグ名前はブランチ名として保存されます)、および検証に重要なその他のデータ。私は変換する約30のリポジトリを持っているので、私は幾分自動化された方法を感謝します。

私が今までに思い付いた唯一のことは、ファイルが同じであることを確認するためにディレクトリのチェックサムを実行することですが、すべてのフォルダに.cvsディレクトリがあるため、うまくいくでしょう。

答えて

1

最新のgitコミットのファイルの内容が、最新のCVSコミットのファイルの内容と同じであることを確認する必要があります。

あなたはすべてのファイルを一覧表示し、.git.cvsを除外するためにfindを使用することができます。結果をsha1sumのようなものにパイプして、すべてのファイルのチェックサムを取得します。結果をキャプチャします。

$ find cvs_checkout -name .cvs -prune -o -type f -print0 | xargs -0 sha1sum > cvs.sum 

$ find git_checkout -name .git -prune -o -type f -print0 | xargs -0 sha1sum > git.sum 

次に、2つのチェックサムファイルをdiffします。違いはないはずです。

$ diff cvs.sum git.sum 

私はまた、可能な場合はコミット著者はコミットのタイムスタンプはタグが保存されていること、正しいこと、一致していることを、確認したいのですが

...

GitとCVSのモデルがどれほど根本的に異なっているかを考えてみると、これがどれだけ役に立つのか分かりません。

git log somefilecvs log somefileを比較したファイルごとに何かを書いてみたいと思います(これは有効なコマンドであれば私もCVSを使っていたので長いです)。 git logには多くの書式設定オプションがありますが、CVSと同じ形式で吐き出すことさえできるかもしれません。

タグに関しては、git tag -lを期待されるタグのリストと照合することができます。その後、各タグを順にチェックし、その内容を上記のようなfind/diffコマンドと比較することができます。

幸運を祈る!

+0

ああ、素晴らしい、ありがとう!あなたは私がそれをどうしていても退屈なプロセスであるという疑いを確認しました。しかし、findコマンドを使うと、私にはかなりの時間が節約されました。 –

+0

cvs2git変換が複数の単一ファイルcvsが単一のgitコミットにグループ化することをコミットしたことを知っていれば、タイムスタンプが異なることがわかります。タグがたくさんある場合(継続的な統合システムが通常のタグを生成している場合や、少なくとも顧客リリース用のタグがある場合)、CVSとgitのタグを比較できます。 – Mort

関連する問題