我正在寻找自动将 Windows XP 文件结构(一个 wiki)备份到 CVS 中。
通过重复调用cvs commit和cvs add我可以识别并提交更改的文件和新添加的文件,但是我看不到让我知道本地文件已被删除的 cvs 命令。
一种可能性是使用存储库中的最新文件更新并行文件结构,然后删除仅出现在第二个结构中的那些文件,但我希望有一个更有效的解决方案?
我正在寻找自动将 Windows XP 文件结构(一个 wiki)备份到 CVS 中。
通过重复调用cvs commit和cvs add我可以识别并提交更改的文件和新添加的文件,但是我看不到让我知道本地文件已被删除的 cvs 命令。
一种可能性是使用存储库中的最新文件更新并行文件结构,然后删除仅出现在第二个结构中的那些文件,但我希望有一个更有效的解决方案?
你可以做一个
cvs -nq update
并寻找像
cvs update: warning: SourceControlledFile.xml was lost
您需要运行 cvs update 并解析结果。它会告诉您哪些文件已被添加、删除等。然后您可以使用这些文件来运行正确的命令。一个警告:CVS 不容易自动化,因为它与它的消息不是很一致。但你最终会得到它的工作。
更新:
我在 Windows XP 上使用 CVSNT 2.5.05。发现如果你只是跑
cvs remove -R
在目录(没有-f
参数)上,它只会删除文件系统中实际丢失的文件。对于仍然存在的文件,它只会抛出一条您的自动化脚本可以安全忽略的消息。
这也非常适合在脚本之外使用。现在我可以运行:
cvs -nq update | findstr /C:"U "
检查以确保这些都是我想要删除的实际文件,然后在同一个目录上运行:
cvs remove -R
我使用 CVSNT 在 Windows XP 上取得了成功
cvs -nq update | findstr /C:"U "
这会产生如下结果:
U file1.cs
U file2_23.cs
U directory_1/Reports/test.rpt
当然,这个想法(和其他想法)仅适用于自动化,前提是这些文件实际上是自您上次更新工作副本以来有人添加到存储库中的文件。
我个人使用这个 cmd 只是为了创建一个我需要cvs remove
在提交之前手动执行的文件列表。