我有一个部分 CVS 存储库 - 主存储库中子文件夹的副本,我想签出 head。我尝试直接这样做:
$ cvs -d /path/B2MEj/ co B2MEj
cvs [checkout aborted]: /path/B2MEj/CVSROOT: No such file or directory
我的副本不包含 CVSROOT(因为我认为它是原始存储库根目录的子目录)。
我如何才能获得此文件夹中最新版本文件的清晰快照?我不在乎保留任何版本历史记录,因为对我来说这是单向提取。
答案1
如果没有 CVSROOT,cvs 根本就不知道您的文件夹中有什么,因为所有文件和版本信息都在那个 CVSROOT 目录中。
您要做的是使用 RCS,v
分别提取每个文件的最新版本,这应该与 bash 中的以下命令类似:
for fn in *,v; do
co ${fn%,v}
done
因为 RCS 的co
命令需要原始文件名,所以我们必须找到所有,v
文件并使用减去 ,v 的文件名运行 co。
一旦完成后,您将必须从 .v 文件中整理出代码。
答案2
似乎所有必要的信息都包含在我的部分存储库中的 .v 文件和 Attic 目录中。关键是只需创建一个空的 CVS 根目录,cvs -d /workingdir init
然后将原始(部分)存储库文件夹复制到 中workingdir
。此时,一个简单的cvs -d /workingdir co B2MEj
(或任何项目名称)将完成完整签出。