バックグラウンド
CVS リポジトリからコードを回収しようとしています。私はreposurgeon
目的のために使用しており、git-fast-import
ストリームを取得するために次のツールを試しました。
cvs-fast-export
、エラーになります(循環分岐とされていますが、詳細は提供されていません)cvs2git
が続きgit-fast-export
、理解を超えて物事をマッシュアップしますgit-cvsimport
これはgit-fast-export
、これまでのところ最高の結果を生み出しますが、属していないブランチに何かを投げることになります。
この CVS リポジトリはさまざまな CVS バージョンで実行されており、タグとブランチは強制的に移動されています。これは、それらのブランチとタグをもうサルベージできないことを意味することを知っています。しかし、それはそうです。
それにもかかわらず、私は(さらに多くの中から)半ダースのブランチを持っており、ストリームMAIN
への変換中に保持することに興味がありgit-fast-import
ます。ターゲットの VCS はGit ではありませんreposurgeon
が、ポイントは入力をこのように処理し、出力もこのように処理することです。
アーティファクトを理解し、古いもの (孤立したリビジョンを含む) を前処理段階でrcs -o<rev>
(もちろん、私のレポのコピーで;)) きれいにするためには、どのようにrcsfile
フォーマット作業の内部。
rcsfile.py
からモジュールを変更した後の解析は簡単ですrcsgrep
。しかし、リビジョン番号、特に対応するデルタ+ログがないリビジョン番号が何を意味するかについての情報はまだ提供されていません。
私が見るもの
RCS ファイルのマニュアル ページによると、リビジョン ID の 3 番目のセグメントが 0 であってはなりません。
これが私がやったことです(実験として)。
- On
MAIN
: ファイルをコミットします (1.1
) - From
MAIN
: 分岐先BranchX
(1.1
) - オン
BranchX
: ファイルを変更します (1.1.2.1
) - オン
BranchX
: ファイルを再度変更します (1.1.2.2
) - オン
MAIN
: ファイルを変更します (1.2
) - オン
MAIN
: ファイルにタグを付けるfoobar
(1.2
) - From
MAIN
: branch toBranchX
、branch タグ ( ) を移動1.2
し、前のブランチを事実上孤立させます。1.1.2.x
- On
BranchX
: ファイルを削除 (1.2.2.1
) - オン
MAIN
: ファイルを変更します (1.3
) - オン
MAIN
: ファイルに強制的にタグを付けるfoobar
(1.3
) - オン
MAIN
: ファイルを変更します (1.4
) - オン
MAIN
: ファイルにタグを付けるfoobarbaz
(1.4
)
上記のリストと以下の完全に再現されたファイルでわかるように、1.2.0.2
ログ付きデルタの形でのリビジョンはありません。
今私の質問
リビジョンを新たに分岐するとx.y
(ファイルの変更はありません!)、結果のリビジョン ID はx.y.0.2
. これは、私が見て質問している謎のリビジョン ID に似ています。
0
ファイルにデルタがないことを示しているので、実際の内容については祖先に戻る必要がありますか?- それとも、0 は単にそのブランチの「ルート」を示し、4 番目のセグメントがそのブランチの最新リビジョンであることを示していますか?
誰かがこれらの質問に光を当てたり、上記のリンクされたマニュアルページよりも包括的な資料を指摘したりできますか?
以下は、完全な RCS ファイルです。
head 1.4;
access;
symbols
foobarbaz:1.3
foobar:1.4
BranchX:1.2.0.2;
locks; strict;
comment @# @;
1.4
date 2014.12.11.13.46.46; author username; state Exp;
branches;
next 1.3;
1.3
date 2014.12.11.13.44.49; author username; state Exp;
branches;
next 1.2;
1.2
date 2014.12.11.13.39.31; author username; state Exp;
branches
1.2.2.1;
next 1.1;
1.1
date 2014.12.11.13.31.41; author username; state Exp;
branches
1.1.2.1;
next ;
1.1.2.1
date 2014.12.11.13.34.36; author username; state Exp;
branches;
next 1.1.2.2;
1.1.2.2
date 2014.12.11.13.35.08; author username; state Exp;
branches;
next ;
1.2.2.1
date 2014.12.11.13.42.32; author username; state dead;
branches;
next ;
desc
@@
1.4
log
@Change on MAIN
@
text
@NOTE: this file will be removed!
Another change on MAIN@
1.3
log
@Change on MAIN
@
text
@d3 1
a3 1
ANother change on MAIN@
1.2
log
@Change on MAIN
@
text
@d3 1
a3 1
File on MAIN will be forcibly tagged X again ... how does this affect the rev ID?@
1.2.2.1
log
@Removing the two files from X
@
text
@@
1.1
log
@Adding the experiment file
@
text
@d3 1
a3 1
Introducing file on MAIN@
1.1.2.1
log
@Changing the file on the X branch
@
text
@d3 1
a3 1
Changing on X branch@
1.1.2.2
log
@Another change on the X branch
@
text
@d3 1
a3 1
Another change on the X branch@