web-dev-qa-db-ja.com

CVSからGitへの移行ツールはありますか?

CVSからGitに切り替えるつもりです。 SVNの場合、cvs2svn。 CVSからGitに簡単に移行する同様のツールはありますか?

63
freddiefujiwara

incrementalインポートを持つ唯一のツールは git-cvsimport のようです。 (migrate)をCVSからGitに変換したい場合、現時点での最善の解決策は上記のようです cvs2svnのcvs2gitモード

Interfaces Frontends And Tools Git wikiのページ、他のリビジョン管理システムとの相互作用に関するセクションも参照してください。

32
Jakub Narębski

cvs2git

提供された回答に加えて、cvs2gitツールを使用してcvsをgitに変換する方法に関するガイドがあります。ここで、modulenameはインポートするCVSディレクトリの名前です。

前提条件

cvs2svnパッケージ(cvs2gitコマンドを含む)は既にインストールされているはずです。

更新:ステップ1と2は完全に正しくありません-試みる前に、cvs2gitのメンテナーであるmhaggerが以下のコメントを読んでください

  1. チェックアウトモジュール名

    cvs -d URL co -P modulename
    
  2. cvs2gitに必要な空のCVSROOTを作成します

    mkdir modulename/CVSROOT
    
  3. http://cvs2svn.tigris.org/svn/cvs2svn/trunk/cvs2git-example.options (パスワードなしのユーザー「ゲスト」)でcvs2git.optionsの例をダウンロードします

  4. 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]>',
    
  5. cvs2gitを実行してgit tempファイルを作成します

    cvs2git  --options=cvs2git.options --fallback-encoding utf-8
    
  6. gitリポジトリを作成する

    mkdir gitrepo && cd gitrepo && git init .
    
  7. cvs2gitによって作成されたgit tempファイルからインポート

    cat ../cvs2git-tmp/git-{blob,dump}.dat | git fast-import
    
  8. チェックアウト作業コピー

    git reset --hard
    
17
Vanuan

cvs2svnには cvs2git モードがあります。

13
bdonlan

まだCVSを使用することに不幸がある場合は、「crap」を試すことができます。 https://github.com/rcls/crap それは高速です(CVSへのアクセスが高速である限り)。 cvsリポジトリにある混乱と増分。

8
user2603340

代わりに git cvsimport * を使用することもできます

7
ralphtheninja

私は自分でこれを試したことはありませんが、友人は最初にCVSからSVNに変換し、次にSVNからGitに変換することに成功したと報告しています。これらのそれぞれの移行を行うためのツールは、CVSからGitへの直接の移行よりも徹底的に削られているようです。

5
Dave W. Smith

Cvs2git、git-cvsimport、parsecvsを試しました。

cvs2gitは時々(覚えている限りでは)タグの偽のブランチを作成します。

git-cvsimportは、チェンジセットの複数のタグをサポートしていません。ただし、cvspsをサポートするためにいくつかの追加の変更を取得し、元のgit-cvsimportを更新されたcvspsを使用するものに変更することは可能です(試してみて、動作するようです)。利点として、増分更新をサポートし、マージを適切にインポートするためのロジックがいくつかあります(ただし、コミットメッセージに適切な形式が必要です)。

parsecvsはこれまでのところ最高の結果をもたらしました。残念ながら、ウェブで利用可能なコードは最新のgitできれいにコンパイルされません。些細ではないが、変更は実行可能です。

編集: [〜#〜] esr [〜#〜] の両方を引き継いだ cvspsparsecvs ので、CVSにいくつかの希望があります-> GIT移行。しかし、彼はすでにいくつかのメーリングリストで、彼が最近引き継いだツールのいくつかを公式に死んでいると宣言するかもしれないと述べました。

2
Tomek

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を実行して、詳細を確認します。

1
kenorb

私はバヌアンの答えとそれに対する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ステップが必要です。簡単なチェックアウトでは十分ではありません。

1
josch

リストに fromcvs を追加できます。それはよく変換し、非常に高速でインクリメンタルです。ただし、スティッキータグは使用せず、ブランチのみを使用します。

1
robinr

cvs-fast-export が素晴らしい仕事をしたことがわかりました。私は自分でダウンロードしてコンパイルする必要がありましたが、そうすることで大きな問題はありませんでした。

0
Edward Falk