45

履歴を失うことなく、RCSからgitに移行したい20年前のプロジェクトがあります。すべてのWebページは、OneTruePathがCVSを経由することを示唆しています。しかし、1時間グーグルしてさまざまなスクリプトを試した後、RCSプロジェクトツリーをCVSに正常に変換するものはまだ見つかりませんでした。Stackoverflowの優秀な人々が、機能すると主張されているものと機能していないものではなく、実際に機能するものを知ってくれることを願っています。

(ネイティブSO検索とGoogle検索の両方を使用してStackoverflowを検索しましたが、データベースに役立つ回答がある場合は、それを見逃しました。)

更新:http://git.oblomov.eu/rcs-fast-exportのツールrcs-fast-exportは、2009年4月14日に修復されました。このバージョンは、私にとっては機能しているようです。このツールは、中間のCVSなしで直接gitに変換します。ジュゼッペとヤクブに感謝します!!!


私がまだ覚えている、うまくいかなかったこと:

  • CVSソースのディレクトリに出荷rcs-to-cvsされるスクリプトcontrib

  • 2010年4月13日より前のバージョンのhttp://git.oblomov.eu/rcs-fast-exportrcs-fast-exportツール

  • rcs2cvs「CVS-RCS-HOW-TODocumentforLinux」というドキュメントにあるスクリプト

4

6 に答える 6

24

Git Wikiの「ツール」、「他のリビジョン管理システムとの相互作用」、「その他」のInterfacesFrontendsAndToolsページを参照してください。そこには、Giuseppe "Oblomov" Bilottaによるrcs-fast-exportgitweb )Rubyスクリプトの説明とリンクがあります。

(Web検索では、Ohlohページと言及されたプロジェクトの発表も見つかります)

于 2009-10-25T11:32:47.857 に答える
1

OK、少しいじった後、RCSをCVSに変換するのは簡単だとわかりました。ファイルは同じ形式であるため、ファイルを既存のCVSルートに移動するだけです。これは、RCSファイルにアクセスできることを前提としています。

# Create CVS root dir. You only need to do this once.
mkdir $HOME/cvs/
cd $HOME/cvs/
cvs init

# Import a repository from RCS to CVS
cp -a _projectname_/RCS $HOME/cvs/_projectname_
于 2015-08-19T22:22:21.350 に答える
0

私もこの問題を抱えていて、cvs2svn、parsecvsなどと格闘しました。 parsecvsが最も接近しましたが、Keithがそれを置き去りにしたようで、ランダムなフォークがポップアップしています。私がそれで直面した問題は、RCSファイルをうまく解析することでしたが、最後に行ったのはファイルだったので、削除を元に戻すためgit rmにいじくり回さなければならなかったでしょう。git reset

それから私はmercurialのを発見しましたconverthttps ://www.mercurial-scm.org/wiki/ConvertExtension 問題は解決しました!

別々のRCSツリーからいくつかのものを段階的に追加しようとしましたが、うまくいったようです。

于 2010-04-15T01:20:26.030 に答える
0

原則として、実行するスクリプトには注意が必要です。RCS-> GITの場合、RCS->CVS->GITの方法論に従うことが最善の利益になる可能性があります。

2011-01-12の時点でrcs-fast-export.rbをざっと見て、コードのこの部分に出くわしました。これはせいぜい怖いです。

# steal username/email data from other init files that may contain the
# information
def steal_username
    [
            # the user's .hgrc file for a username field
            ['~/.hgrc',   /^\s*username\s*=\s*(["'])?(.*)\1$/,       2],
            # the user's .(g)vimrc for a changelog_username setting
            ['~/.vimrc',  /changelog_username\s*=\s*(["'])?(.*)\1$/, 2],
            ['~/.gvimrc', /changelog_username\s*=\s*(["'])?(.*)\1$/, 2],
            []
    ].each do |fn, rx, idx|
...
于 2011-03-06T22:34:32.607 に答える
0

ちょうどこれを見つけました、それは私にとってうまくいきました:

http://cynic.cc/blog/posts/migrate-from-rcs-to-git/

そのページの「cvs-source-dir」は絶対パスである必要があることに注意してください。

于 2015-01-16T14:01:43.020 に答える
0

ここでは、RCSからCVSに簡単に変換してから、CVSをGitに変換することで、EdwardFalkの答えを詳しく説明します。この例では、git-cvsimportを使用してCVSからGitに変換しますが、他のCVSからGitへの変換方法は機能するはずです。

mkdir $HOME/mydir/  # Any directory name will do.
cd $HOME/mydir/
cvs -d $HOME/mydir/ init

# Trivially import an RCS project into CVS.
cp -a /path/to/_projectname_/RCS $HOME/mydir/_projectname_

# Convert the CVS project to Git.
git cvsimport -d $HOME/mydir/ -C mynewgitrepository _projectname_
于 2021-10-30T03:25:50.570 に答える