【问题标题】:How to write a batch file for svn commit and update如何为 svn 提交和更新编写批处理文件
【发布时间】:2013-05-22 09:25:39
【问题描述】:

到目前为止,我已经使用 Tortoise SVN 在版本控制下提交和更新文件夹。当我提交时,我会在 GUI 对话框中选中“全部”,以便提交删除和添加。

现在我有越来越多的文件夹受版本控制,我想要一个批处理文件来提交和更新所有文件夹。

到目前为止,我已经对命令行进行了实验,发现:

svn add . --force
svn commit -m"Adding missing files"

这会添加新文件,但不反映任何删除。

您能帮我处理批处理文件吗?这将使我的工作更轻松,但我对 SVN/批处理文件实在太缺乏经验,无法独自完成此操作...

我使用带有命令行扩展名的 Win7x64 和 Tortoise SVN 1.7.12。

谢谢!

【问题讨论】:

    标签: windows svn batch-file commit


    【解决方案1】:

    我想我使用 gammay 和 this 输入想出了一些东西:

    cd "C:\Users\User\Desktop"
    for /f "usebackq tokens=2*" %%i in (`svn status ^| findstr /r "^\?"`) do svn add "%%i %%j"
    for /f "usebackq tokens=2*" %%i in (`svn status ^| findstr /r "^\!"`) do svn delete "%%i %%j"
    svn commit -m "Commit via Batch"
    

    还有

    cd "C:\Users\User\Desktop"
    svn update
    

    并重复不同的路径!

    谢谢你:)

    【讨论】:

      【解决方案2】:

      首先,您使用哪些 svn 命令行工具?您可以将 CollabNet 用于“svn”命令。

      其次,要删除文件,您需要从 svn 中签出现有文件,然后使用 svn delete 和 svn commit。

      您的问题不清楚 - 如果这不能回答您的问题,请提供更多详细信息。


      编辑回答提问者的要求(在下面的 cmets 中): 好的。你想要的是一个脚本,它会在文件夹中找到新文件并将它们自动添加到 SVN,并在文件夹中找到已删除的文件并将它们也从 SVN 中删除。我可以告诉你这是很危险的,因为可以添加/删除不需要的文件。

      不过,如果您想继续使用此脚本,脚本可以执行以下操作:

      • 运行 svn status 显示丢失(已删除)文件和未知(待添加)文件
      !    FileA [Missing - deleted]
      ?    FileD [Unknown - to be added]
      
      • 解析输出以找到!文件并在这些文件上运行 svn delete
      svn delete FileA
      
      • 解析输出以找到 ?文件并在这些文件上运行 svn add
      svn add FileD
      
      • svn commit
        • 这将提交上述已删除和添加的文件以及任何修改。
        • 如果您不想提交修改,请提交单个添加/删除的文件

      【讨论】:

      • Tortoise(用户在他的问题中提到的)如果您在安装期间选中该选项,则具有命令行工具。
      • 您好,感谢您的回复!正如 djangofan 所说,我使用 Tortoise 附带的 SVN.exe。我将尝试进一步描述我的用例:我有一个包含子文件夹和文件的文件夹。此文件夹中的所有文件都受版本控制,因此当我提交时,更改将转到服务器。但是当我添加(或删除)一个全新的文件时,它不会添加(或删除)到(或从)服务器。我需要的是一个批处理文件,我可以双击它,无需询问即可提交现有文件的最新版本、添加新文件或删除已删除的文件。这是否更清楚?
      • 当你说“当我添加(或删除)一个全新的文件时,它没有添加(或删除)到(或从)服务器”,会发生什么?你得到什么错误?后续步骤是什么?
      • 我不认为这是一个错误。我只需要知道将删除提交到存储库的命令。以及如何从批处理文件运行代码。示例:PC1 包含一个文件夹,其中包含:FileA、FileB、FileC -> 我删除 FileA 并添加 FileD -> 我运行批处理我希望存储库包含 FileB、FileC、FileD -> 我现在在 PC2 上更新 PC2 上的文件夹包含 FileB、FileC、FileD
      • 非常感谢!但是,在批处理文件中自动运行您提到的所有步骤的代码是什么?我的意思是无需手动选择文件 A、D?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多