“导出” CVS 结账

“导出” CVS 结账

我签出了 CVS 存储库。原始存储库不再存在。是否可以在签出时运行类似于“导出”的操作?我希望最终得到的是来自签出的所有文件的集合,并删除之后添加的文件。

例如:我查看 superProject,并得到

superProject/checkedoutFile1.txt
superProject/checkedoutFile2.txt
superProject/checkedoutFile3.txt
然后我添加
superProject/someFile1.txt
superProject/someFile2.txt
superProject/someFile3.txt
并删除所有不在原始签出中的文件。

答案1

cvsu通过将磁盘上的文件的时间戳与记录在 中的时间戳进行比较,可以进行离线 cvs 更新CVS/Entries。这样,您就可以知道哪些文件已在本地修改,哪些文件尚未受到 CVS 控制。

sudo aptitude install cvsutils
cvsu --batch="tar cf export.tar " --types=AFGM

运行cvsu --help以查看支持的命令行选项。此功能由 Perl 提供,并且可能因机器而异。

在 Windows 上,Cygwin支持它

答案2

刚刚注意到您的评论并相应地修改了我的答案。

我最初的回答是:只需删除所有名为“CVS”的目录

当然,如果已将更多内容添加到已签出目录中,则应采用不同的方法。CVS 将其元数据保存在CVS每个已签出目录中的子目录中。各种文件在第 16 页中进行了描述塞德奎斯特手动的。

就您而言,有趣的信息保存在Entries文件中,该文件有两种不同的行格式:

/filename/...other stuff...
D/directory/...filler...

第一个用于普通文件,第二个用于目录;没有特定的顺序。

您可以编写一个脚本,遍历目录树,从这些Entries文件中提取目录和文件名。您可以将此列表输入到目录中,cpio -pmdv target-dir以创建目录结构的副本,其中包含cvs export要创建的文件。

我希望这有帮助

相关内容