移行 - svn git




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

私は歴史を失うことなく、RCSからgitに移行したい20歳のプロジェクトを持っています。 すべてのWebページは、真の1本のパスはCVSを介していることを示唆しています。 しかし、1時間のグーグルリングとさまざまなスクリプトを試した後、私はRCSプロジェクトツリーをCVSに変換するためのものはまだ見つけていません。 私はStackoverflowの善良な人たちが実際に働くものを知ってくれると期待しています。

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

アップデートhttp://git.oblomov.eu/rcs-fast-export : rcs-fast-exportツールは2009年4月14日に修復されました。このバージョンは私にとってはうまくいくようです。 このツールは中間のCVSなしでgitに変換します。 ありがとうジュゼッペとヤクブ!

私がまだ覚えていることがうまくいかないもの:

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

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

  • "CVS-RCS-HOW-TO Document for Linux"というドキュメントにあるrcs2cvsスクリプトは、


Git Wikiの「 InterfacesFrontendsAndTools 」のページ、「ツール」、「他のリビジョンコントロールシステムとの相互作用」、「その他」を参照してください。 そこには、Giuseppe "Oblomov" Bilottaのrcs-fast-exporthttp://git.oblomov.eu/rcs-fast-export )Rubyスクリプトの説明とリンクがあります。

(Web検索では、Ohlohのページと上記のプロジェクトの発表があります)


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_

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

私もこの問題を抱え、cvs2svn、parsecvsなどに取り組んでいました。 parsecvsは一番近いが、Keithはそれを残しているようだが、現在はランダムフォークがポップアップしている。 私が打った問題は、RCSファイルを正しく解析することでしたが、最後に実行したのはgit rmファイルなので、削除を取り消すにはgit resetを使用していたはずです。

その後、私は水銀のconvertを発見: https://www.mercurial-scm.org/wiki/ConvertExtension : https://www.mercurial-scm.org/wiki/ConvertExtension問題解決!

別のRCSツリーからいくつかのものを少しずつ追加しようとしましたが、これはうまくいったようです。





rcs