代码之家  ›  专栏  ›  技术社区  ›  Ian Thake

CVS自动化:如何检测本地文件已被删除,从而触发CVS删除?

  •  0
  • Ian Thake  · 技术社区  · 16 年前

    我希望将Windows XP文件结构(维基)自动备份到CVS中。
    通过反复呼叫 签入当前文件 cvs添加 我可以识别和提交更改的文件和新添加的文件,但我看不到cvs命令可以让我知道本地文件已被删除。

    一种可能是使用存储库中的最新文件更新并行文件结构,然后删除仅出现在第二个结构中的文件,但我希望有更有效的解决方案?

    3 回复  |  直到 16 年前
        1
  •  3
  •   David Norman    16 年前

    你可以做一个

    cvs -nq update
    

    并寻找以下线条

    cvs update: warning: SourceControlledFile.xml was lost
    
        2
  •  0
  •   JW.    16 年前

    您需要运行cvs-update,并解析结果。它会告诉你哪些文件已被添加、删除等。然后,您可以使用这些来运行正确的命令。警告:CVS不容易自动化,因为它与其消息不太一致。但你最终会让它工作的。

        3
  •  0
  •   Adam Nofsinger imBollaveni    14 年前

    更新:

    我在Windows XP上使用CVSNT 2.5.05。发现如果你只是跑步

    cvs remove -R
    

    在一个目录上(没有 -f param),它只会删除文件系统中实际缺失的文件。对于仍然存在的文件,它只会抛出一条消息,您的自动化脚本可以安全地忽略该消息。

    这也非常适合在脚本之外使用。现在我可以跑了:

    cvs -nq update | findstr /C:"U "
    

    检查以确保这些都是我想要删除的文件,然后在同一目录下运行:

    cvs移除-R
    

    我使用CVSNT在Windows XP上取得了成功

    cvs-nq更新| findstr/C:“U”
    

    结果如下:

    U file1.cs
    U file2_23.cs
    U directory_1/Reports/test.rpt
    

    当然,只有当这些文件不可能是自上次更新工作副本以来添加到存储库中的文件时,这个想法(和其他想法)才适用于自动化。

    我个人使用这个cmd只是为了创建我需要手动执行的文件列表 cvs remove 在做出承诺之前。