我们的一个内部编写工具提供了以下形式的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 的现有版本,则此命令可正常工作。但是当我们获得工作目录中没有版本的文件的跟踪时,该命令无法获取该文件。
有办法吗?
答案 0 :(得分:22)
目前尚不清楚您的最终目标是什么:将整个存储库置于所需状态(选择所选分支的修订版)或从存储库中获取单个文件以进行进一步处理。我认为是后者。
然后,你需要这个命令:
cvs checkout -r <revision> -p filename.ext > ~/tmp/filename.ext
这将转储到指定文件(或文件)的stdout指定版本,可以将其重定向到临时位置并进行处理。
或者您可以使用:
cvs export -r <revision> -d ~/tmp module/filename.ext
,它会将(部分)存储库导出到指定的目标目录。
答案 1 :(得分:2)
cvs --help
告诉您可以使用-H
arg查看特定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)
......教一个人如何钓鱼......:)
答案 2 :(得分: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
现在它工作正常。
答案 3 :(得分:1)
一种解决方案是更改工具以为文件发出“cvs co”,指定现在使用更新的修订版本。 checkout命令必须从树的顶部完成,而不是在包含该文件的目录中完成。我遇到过类似的情况,更新无法找到新文件,需要按照我的描述签出文件。
答案 4 :(得分:1)
这是唯一对我有用的方法,因为checkout命令总是会找不到&#34;模块&#34;错误:
1::2::3::Nil match {
case List(1, _, _*) => "Starts with 1. More than one element"
case List(1) => "Starts with 1. Only one element"
}
似乎cvs放弃了这个球。