CVS から Git への移行に cvs2svn-2.4.0 を使用しています。これには、.cvsignore から .gitignore への変換は含まれません。.cvsignore ファイルを .gitignore ファイルに変換するにはどうすればよいですか?
5 に答える
ディレクトリ ツリー内の .cvsignore ファイルを調べて、それらのパターンを最上位の .gitignore ファイルに追加する Bash スクリプトを次に示します。.cvsignore ファイルには 1 行に 1 つのパターンしか含まれていないことが想定されています (.cvsignore ファイルでは、1 行に複数のパターンが許可されているようです)。
for f in `find . -name .cvsignore | sort `; do
dir=`dirname $f | sed -r 's:^\.::'`
cat $f | awk '{print "'$dir'/"$1}' >> .gitignore
done
さらに、 http://ximbiot.com/cvs/manual/cvs-1.11.23/cvs_18.html#SEC191からデフォルトの CVS 無視パターンを追加する必要があります。
単にコピー.cvsignore
することはできません.gitignore
-形式は同一ではありません(最上位ディレクトリにあるファイルの単純なリストでない限り.
たとえば、Git への移行に関する Eclipse のガイドをご覧ください。
.cvsignore と .gitignore のセマンティクスには微妙な違いがあるため、Git に移行するときにこれらのファイルの名前を変更するだけではいけません。少なくとも .gitignore の各行の先頭に「/」を追加して、すべてのサブフォルダーでパターンが一致しないようにします。
Git リポジトリの最上位フォルダーに .gitignore を直接作成し、/ /bin/ または// */bin/ (リポジトリのレイアウトによって異なります) を追加することをお勧めします。次に、プロジェクト レベルの無視ファイルから bin エントリを削除できます (それが唯一のエントリである場合は、無視ファイルも削除します)。
find コマンドはそのまま名前を変更する必要があります。形式は多少同じですが、後で変更する必要がある微妙な違いがいくつかあります。
概して、これは CVS から GIT に移行する最初の一歩としては良いスタートでした。これらの .cvsignore ファイルが何百もあり、cvs2git 変換後にこのアクションを実行しました
find . -name '*.cvsignore' -print -exec rename ".cvsignore" ".gitignore" {} \;
CVS には CVSROOT モジュールにグローバル無視ファイルがあることを忘れないでください。そのため、ローカルの .cvsignore を変換するだけで、CVS にあったファイルの一部が失われる可能性があります。
次のようにして、これらのグローバルなものにアクセスできます
cvs checkout CVSROOT は、「cvsignore」ファイルにあるものです。
checkoutlist config cvsignore editinfo modules rcsinfo verifymsg
commitinfo CVS cvswrappers loginfo notify taginfo
次に、これらのグローバルなものをルートフォルダーに配置することをお勧めします.gitignore
注: rename にはさまざまなバージョン (カーネル、perl) があり、rename が perl ベースの正規表現バージョンである場合、コマンドは失敗します。正しい名前変更を使用していることを確認してください。