web-dev-qa-db-ja.com

プロジェクトをRCSからgitに移行しますか?

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

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

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


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

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

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

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

43
Norman Ramsey

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

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

23
Jakub Narębski

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_
1
Edward Falk

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

次に、Mercurialのconvertを発見しました: https://www.Mercurial-scm.org/wiki/ConvertExtension 問題は解決しました!

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

0
user317023

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

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

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

0
Jonas Berlin

原則として、実行するスクリプトには注意が必要です。 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|
...
0
md0