0

OS とツールの情報: Windows 7 で Cygwin の mintty Unix bash の最新 (2015 年 2 月 11 日) の更新を使用しています。

Git を使用するように CVS リポジトリを変換する作業を行っており、tarball からファイルを復元する必要があります。ファイルを抽出した後、「cvs checkout」を使用してみましたが、いくつかのファイルが取得されましたが、ファイルの大部分は Attic ディレクトリにあり、チェックアウトされませんでした。このgnuフォーラムで提案されたように、屋根裏部屋にはありませんでした。これが機能しなかった後、解決しないcvs2svnを試しました。最後に、必要なファイルのほとんどを作成する通常の RCS co を使用してみました。

ただし、1 つの最上位ディレクトリにある Attic サブディレクトリから変換されたファイルはすべて空 (0kb) でした。.v ファイルを上位レベルに移動しても、正しく抽出されませんでした。

コード (rcs は次のように動作します)

$ pwd
/tmp/test/repo/<working-directories>/
$ find . -type f -wholename "*Attic/**,v" -exec rcs co {} \;
$ find . -type f -name "*,v" -exec rcs co {} \;

$ cd /tmp/test/repo/<trouble-directory>
$ find . -type f -name "*,v" ! -wholename "*Attic/**,v" -exec rcs co {} \;

ただし、次のコマンドでは rcs が正常に機能せず、サイズが 0kb のファイルが作成されます。

$ pwd
/tmp/test/repo/<trouble-directory>
$ find . -type f -wholename "*Attic/**,v" -exec rcs co {} \;

トップレベルへの移動が機能しませんでした

$ pwd
/tmp/test/repo/<trouble-directory>
$ find . -type f -wholename "*Attic/**,v" -exec mv {} . \;
$ find . -maxdepth 1 -type f -name "*,v" -exec rcs co {} \;

作業ディレクトリに移動しても機能しませんでした

$ pwd
/tmp/test/repo/<trouble-directory>
$ find . -type f -wholename "*Attic/**,v" -exec mv {} ../<working-directory> \;
$ cd /tmp/test/repo/<working-directory>
$ find . -maxdepth 1 -type f -name "*,v" -exec rcs co {} \;

この rcs co の振る舞いを説明できるものは何ですか? 他のファイルは、同様のサイズと拡張子です。この特定のディレクトリ内の Attic ファイルを別の方法で処理するためのリポジトリのドキュメントには何も見つからないようで、どの構成でも喫煙銃を見つけることができませんでした。何か案は?

4

2 に答える 2

0

ファイルが屋根裏部屋にある理由は、ファイルが削除されたか、何らかの理由で利用できなくなったためです。このようなファイルの最新のリビジョンは、空のファイルで表すか、ファイルをまったく持たないことで合理的に表すことができます。

屋根裏部屋から以前のバージョンを取得したい場合は、できると思います。しかし、その後、プロジェクトの歴史に矛盾が生じています。

の経験はほとんどありませんがgit cvsimport、私があなただったら最初に試してみたいことです。CVS から Git への移行を希望するのはあなたが最初ではありません。

于 2015-02-12T10:34:41.040 に答える
0

一部の開発者は、サイズがゼロのファイルをチェックインして、削除されたことを示します。または、バージョン ラベルに依存して、そのラベルからファイルを省略した可能性もあります。

それが行われた場合、rlog は変更を表示します (多くの場合、ファイルが削除されたことを示すコメントが表示されます)。

さらに、rlog によって表示されるヒント/ヘッド バージョンを使用してスクリプトを記述し、リビジョンを 1 つさかのぼって、ファイルの空でない最後のバージョンを取得できます。もちろん、これはもっと複雑です。しかし、問題はhow toではなくwhyであるため、適切なスクリプトは別の回答になります。

于 2015-02-11T23:45:59.870 に答える