RCSからgitにプロジェクトを移行しますか?
質問
20年前のプロジェクトがあります。履歴を失うことなく、RCSからgitに移行します。すべてのWebページは、One True PathがCVSを介していることを示唆しています。しかし、1時間のグーグル検索とさまざまなスクリプトの試行の後、RCSプロジェクトツリーをCVSに成功に変換するものをまだ見つけていません。 Stackoverflowの良き人々が、実際に機能していると主張しているのではなく、実際に機能していることを知っていることを望んでいます。
(ネイティブSO検索とGoogle検索の両方を使用してStackoverflowを検索しましたが、データベースに有用な回答がある場合、それを見逃しました。)
更新:rcs-fast-export ツール"noreferrer"> http://git.oblomov.eu/rcs-fast-export は2009年4月14日に修復され、このバージョンは私にとってはうまくいくようです。このツールは、中間CVSなしで straight をgitに変換します。ジュゼッペとヤクブに感謝します!!!
まだ機能しなかった、覚えていること:
-
CVSソースの
contrib
ディレクトリにあるrcs-to-cvs
スクリプト -
httpの
rcs-fast-export
ツール//git.oblomov.eu/rcs-fast-export 2010年4月13日以前のバージョン -
" CVS-RCS- HOW-TO Document for Linux"と呼ばれるドキュメントで見つかった
rcs2cvs
スクリプト
解決
Git Wikiの InterfacesFrontendsAndTools のページ(「ツール」および「他のユーザーとの相互作用」リビジョン管理システム」、「その他」。そこに説明と rcs-fast-export へのリンクがあります( gitweb )Giuseppe" Oblomov"によるRubyスクリプトビロッタ。
(Web検索ではOhlohページと言及されたプロジェクトの発表も検索されます)。
他のヒント
一般的なルールとして、実行するスクリプトに注意する必要があります。 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|
...
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_
これを見つけただけで、うまくいきました:
http://cynic.cc/blog/posts/migrate -from-rcs-to-git /
" cvs-source-dir"そのページの絶対パスである必要があります。
私もこの問題を抱えており、cvs2svn、parsecvs、その他と格闘しました。
parsecvs が最も近くなりましたが、Keithは置き去りにしたようで、ランダムフォークがポップアップします。私が思いついた問題は、RCSファイルを正常に解析することでしたが、最後に行ったのはファイルの git rm
であったため、 git reset
を押して削除を取り消します。
その後、mercurialの convert
を発見しました。
https://www.mercurial-scm.org/wiki/ConvertExtension
問題が解決しました!
個別のRCSツリーからいくつかのものを追加してみましたが、うまくいったようです。