8

内部で作成されたツールの 1 つに、次の形式の cvs コミット トレースが供給されます。

Checking in src/com/package/AFile.java;
    /home/cvs/src/com/package/AFile.java,v <-- Afile.java
    new revision: 1.1.2.56; previous revision: 1.1.2.55
    done

次に、ツールはcvs update -r 1.1.2.56、コードの特定のブランチが既にチェックアウトされている作業ディレクトリでコマンドを発行することにより、cvs からファイルを取得します。

このコマンドは、作業ディレクトリに既存のバージョンのAFile.javaがある場合に正しく機能します。しかし、作業ディレクトリにバージョンがないファイルのトレースを取得すると、コマンドはファイルを取得できません。

それを行う方法はありますか?

4

5 に答える 5

25

リポジトリ全体を必要な状態にする (選択したブランチの選択したリビジョン) か、さらに処理するためにリポジトリから単一のファイルを取得するという、最終的な目標が明確ではありません。私はそれが後者であると仮定します。

次に、次のコマンドが必要です。

cvs checkout -r <revision> -p filename.ext > ~/tmp/filename.ext

これにより、指定されたファイル (または複数のファイル) の指定されたリビジョンが stdout にダンプされ、一時的な場所にリダイレクトされて処理される可能性があります。

または、次を使用できます。

cvs export -r <revision> -d ~/tmp module/filename.ext

、指定された宛先ディレクトリにリポジトリ (の一部) をエクスポートします。

于 2008-10-10T06:21:19.397 に答える
3

cvs --help

-H次のように、引数を使用して特定の CVS コマンドのヘルプを表示できることがわかります。

$ cvs -H checkout
Usage:
  cvs checkout [-ANPRcflnps] [-r rev] [-D date] [-d dir]
    [-j rev1] [-j rev2] [-k kopt] modules...
        -A      Reset any sticky tags/date/kopts.
        -N      Don't shorten module paths if -d specified.
        -P      Prune empty directories.
        -R      Process directories recursively.
        -c      "cat" the module database.
        -f      Force a head revision match if tag/date not found.
        -l      Local directory only, not recursive
        -n      Do not run module program (if any).
        -p      Check out files to standard output (avoids stickiness).
        -s      Like -c, but include module status.
        -r rev  Check out revision or tag. (implies -P) (is sticky)
        -D date Check out revisions as of date. (implies -P) (is sticky)
        -d dir  Check out into dir instead of module name.
        -k kopt Use RCS kopt -k option on checkout. (is sticky)
        -j rev  Merge in changes made between current revision and rev.
(Specify the --help global option for a list of other help options)

...人に釣り方を教える... :)

于 2013-04-22T15:19:54.143 に答える
2

私は以下の方法で試しました

cvs checkout -r <revision> -p filename.ext > ~/tmp/filename.ext

のようなエラーを出していました

cvs checkout: cannot find module `filename.ext` -ignored.

だから私は以下のようにしました

cvs checkout -r <revision> -p Module_name/path_to_file/filename.ext > ~/tmp/filename.ext

今はうまくいきました。

于 2015-12-03T09:58:54.437 に答える
1

解決策の 1 つは、ツールを変更してファイルの「cvs co」を発行し、現在更新されているリビジョンを指定することです。チェックアウト コマンドは、ファイルを含むディレクトリではなく、ツリーの一番上から実行する必要があります。更新プログラムが新しいファイルを見つけられず、説明したようにファイルのチェックアウトが必要になる同様のケースに遭遇しました。

于 2008-10-10T06:07:18.833 に答える
1

checkout コマンドでは常に「モジュールが見つかりません」というエラーが表示されるため、これが唯一の方法です。

cvs diff -r <revision> <file> > /tmp/patch
cp <file> /tmp
cd /tmp
patch -R < patch

cvs はこれにボールを落としたようです。

于 2017-03-15T15:49:01.857 に答える