CVSからGitに切り替えるつもりです。 SVNの場合、cvs2svn
。 CVSからGitに簡単に移行する同様のツールはありますか?
incrementalインポートを持つ唯一のツールは git-cvsimport のようです。 (migrate)をCVSからGitに変換したい場合、現時点での最善の解決策は上記のようです cvs2svnのcvs2gitモード 。
Interfaces Frontends And Tools Git wikiのページ、他のリビジョン管理システムとの相互作用に関するセクションも参照してください。
提供された回答に加えて、cvs2gitツールを使用してcvsをgitに変換する方法に関するガイドがあります。ここで、modulenameはインポートするCVSディレクトリの名前です。
前提条件
cvs2svn
パッケージ(cvs2gitコマンドを含む)は既にインストールされているはずです。
更新:ステップ1と2は完全に正しくありません-試みる前に、cvs2gitのメンテナーであるmhaggerが以下のコメントを読んでください
チェックアウトモジュール名
cvs -d URL co -P modulename
cvs2gitに必要な空のCVSROOTを作成します
mkdir modulename/CVSROOT
http://cvs2svn.tigris.org/svn/cvs2svn/trunk/cvs2git-example.options (パスワードなしのユーザー「ゲスト」)でcvs2git.optionsの例をダウンロードします
cvs2git.optionsファイルを編集します。 r'test-data/main-cvsrepos 'を' modulename 'に置き換えます。著者の変換を編集します。
# edit this
run_options.set_project( r'modulename',
# and this
author_transforms={
'jrandom' : ('J. Random', '[email protected]'),
'mhagger' : 'Michael Haggerty <[email protected]>',
cvs2gitを実行してgit tempファイルを作成します
cvs2git --options=cvs2git.options --fallback-encoding utf-8
gitリポジトリを作成する
mkdir gitrepo && cd gitrepo && git init .
cvs2gitによって作成されたgit tempファイルからインポート
cat ../cvs2git-tmp/git-{blob,dump}.dat | git fast-import
チェックアウト作業コピー
git reset --hard
cvs2svnには cvs2git モードがあります。
まだCVSを使用することに不幸がある場合は、「crap」を試すことができます。 https://github.com/rcls/crap それは高速です(CVSへのアクセスが高速である限り)。 cvsリポジトリにある混乱と増分。
代わりに git cvsimport * を使用することもできます
私は自分でこれを試したことはありませんが、友人は最初にCVSからSVNに変換し、次にSVNからGitに変換することに成功したと報告しています。これらのそれぞれの移行を行うためのツールは、CVSからGitへの直接の移行よりも徹底的に削られているようです。
Cvs2git、git-cvsimport、parsecvsを試しました。
cvs2gitは時々(覚えている限りでは)タグの偽のブランチを作成します。
git-cvsimportは、チェンジセットの複数のタグをサポートしていません。ただし、cvspsをサポートするためにいくつかの追加の変更を取得し、元のgit-cvsimportを更新されたcvspsを使用するものに変更することは可能です(試してみて、動作するようです)。利点として、増分更新をサポートし、マージを適切にインポートするためのロジックがいくつかあります(ただし、コミットメッセージに適切な形式が必要です)。
parsecvsはこれまでのところ最高の結果をもたらしました。残念ながら、ウェブで利用可能なコードは最新のgitできれいにコンパイルされません。些細ではないが、変更は実行可能です。
編集: [〜#〜] esr [〜#〜] の両方を引き継いだ cvsps と parsecvs ので、CVSにいくつかの希望があります-> GIT移行。しかし、彼はすでにいくつかのメーリングリストで、彼が最近引き継いだツールのいくつかを公式に死んでいると宣言するかもしれないと述べました。
git cvsimport
を使用できます。 cvsps
をインストールする必要がありますが、3.xは 非互換ではない であるため、2.xをインストールする必要があります。
次に、空のgitにCVSリポジトリをインポートします。サンプル使用法:
git cvsimport -C RepoName -r cvs -o master -k -v -d:pserver:[email protected]:/cvsroot/path ModuleName
OSXでは、次の方法でcvsps-2.1
をインストールします(brew
を使用):
brew tap homebrew/versions
brew install cvsps2
brew link cvsps2
CVSリポジトリをgitに変換できる cvs2git
ツールを使用することもできます。ただし、CVSROOTディレクトリにアクセスする必要があります。
インストール手順については、 cvs2git documentation を確認してください。
使用例:
cvs2git --blobfile=git-blob.dat --dumpfile=git-dump.dat --username=cvs2git /path/to/cvs/repo
これにより、git fast-import形式の2つの出力ファイルが作成されます。これらのファイルの名前は、オプションファイルまたはコマンドライン引数によって指定されます。この例では、これらのファイルの名前はcvs2git-tmp/git-blob.dat
およびcvs2git-tmp/git-dump.dat
です。
これらのファイルは、次の方法で空のgitリポジトリにインポートできます。
cat git-blob.dat git-dump.dat | git fast-import
次に、TAG.FIXUP
ブランチを削除し、gitk --all
を実行して、変換の結果を表示します。
cvs2git --help
を実行して、詳細を確認します。
私はバヌアンの答えとそれに対するmhaggerのコメントを読みました。残念ながら、mhaggerは_cvs2git
_でそれを行う方法を投稿しませんでした。ここにすべて非常によく書かれています: http://www.mcs.anl.gov/~jacob/cvs2svn/cvs2git.html
_cvs2git
_のドキュメントでは_git-cvsimport
_の問題を回避するために代わりに使用することを提案しているため、_git-cvsimport
_ではなく_git-cvsimport
_を使用しました: https:// www.kernel.org/pub/software/scm/git/docs/git-cvsimport.html#issues
Debian Sidのsourceforge CVSリポジトリからgitリポジトリを作成するのに役立ったのは、その本質に従います。
_$ apt-get install cvs2svn cvs
$ mkdir project.cvs
$ rsync -av rsync://${PROJECT}.cvs.sourceforge.net/cvsroot/${PROJECT}/ project.cvs
$ cvs2git --blobfile=git-blob.dat --dumpfile=git-dump.dat --username=cvs2git project.cvs
$ mkdir project.git
$ cd project.git
$ git init
$ cat ../git-blob.dat ../git-dump.dat | git fast-import
_
_cvs2git
_は履歴全体にアクセスする必要があるため、rsync
ステップが必要です。簡単なチェックアウトでは十分ではありません。
リストに fromcvs を追加できます。それはよく変換し、非常に高速でインクリメンタルです。ただし、スティッキータグは使用せず、ブランチのみを使用します。
cvs-fast-export が素晴らしい仕事をしたことがわかりました。私は自分でダウンロードしてコンパイルする必要がありましたが、そうすることで大きな問題はありませんでした。