1

バックグラウンド

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 であってはなりません。

これが私がやったことです(実験として)。

  1. On MAIN: ファイルをコミットします ( 1.1)
  2. From MAIN: 分岐先BranchX( 1.1)
  3. オンBranchX: ファイルを変更します ( 1.1.2.1)
  4. オンBranchX: ファイルを再度変更します ( 1.1.2.2)
  5. オンMAIN: ファイルを変更します ( 1.2)
  6. オンMAIN: ファイルにタグを付けるfoobar( 1.2)
  7. From MAIN: branch to BranchX、branch タグ ( ) を移動1.2し、前のブランチを事実上孤立させます。1.1.2.x
  8. On BranchX: ファイルを削除 ( 1.2.2.1)
  9. オンMAIN: ファイルを変更します ( 1.3)
  10. オンMAIN: ファイルに強制的にタグを付けるfoobar( 1.3)
  11. オンMAIN: ファイルを変更します ( 1.4)
  12. オン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@
4

1 に答える 1