【问题标题】:How commit all files except one with SVN如何使用 SVN 提交除一个文件之外的所有文件
【发布时间】:2012-05-31 03:01:17
【问题描述】:

我想提交所有修改过的文件,除了一个使用 Subversion 的文件。

所以这里是场景:

$ svn st
M    file1
M    file2
M    file3
M    file4

我可以这样做:

svn ci -m "Commit 1" file1 file2 file3
svn ci -m "Commit 2" file4

但是当有大量文件时,我试图简化我的工作:

svn ci -m "Commit 1" `svn st | awk '{print $2}' | grep -v file4`
svn ci -m "Commit 2" file4

这个解决方案非常脆弱,因为这个场景不起作用:

$ svn st
M    file1
M    file2
D    file3
A +  file4

我认为 SVN 没有针对我的问题的内置解决方案,但我不确定。还有其他方法吗?

【问题讨论】:

    标签: file svn command commit


    【解决方案1】:

    选项 1,AWK:

    svn ci -m "Commit 1" `svn st | awk '{print $NF}' | grep -v file4`
    svn ci -m "Commit 2" file4
    

    选项 2,--targets:

    svn ci -m "Commit 1" --targets filesToCommit.txt
    svn ci -m "Commit 2" file4
    

    选项 3,--changelist:

    svn changelist my-changelist file1 file2 file3
    svn ci -m "Commit 1" --changelist my-changelist
    svn ci -m "Commit 2" file4
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      svn diff file4 > tmp.patch
      svn revert file4
      svn ci -m "Commit 1"
      svn patch tmp.patch
      

      此时所有文件都已提交,除了file4

      【讨论】:

      • svn patch 在 1.7 中添加。在本例中,我使用了patch -p0 -i tmp.patch 而不是最后一行。
      【解决方案3】:

      使用更改列表提交除一个之外的所有内容:

      svn changelist my-list -R .
      svn changelist --remove file4
      svn ci -m "Commit 1" --changelist my-list
      svn ci -m "Commit 2" file4
      

      【讨论】:

        【解决方案4】:

        虽然我确信您可以使用更复杂的awk 命令行来制定解决方案,因为我们只讨论一个文件,为什么不呢

        1. 将文件复制到临时位置
        2. svn revert修改后的文件取回原件
        3. 提交整个存储库
        4. 将修改后的文件复制回去

        简单、容易、快速。

        【讨论】:

          【解决方案5】:

          您可以通过将带有脚本的文件添加到change list 并提交它来稍微改进您的方法。您可以在提交之前检查列表以确保它包含正确的项目。

          参见svn ci --help 中的svn changelist --help--changelist 选项。

          【讨论】:

            【解决方案6】:

            只需提交过滤后的文件列表。

            svn ci `ls | grep -v file4`
            

            【讨论】:

              猜你喜欢
              • 2014-12-26
              • 2013-10-19
              • 2015-09-12
              • 1970-01-01
              • 2011-05-19
              • 2013-01-05
              • 2010-11-14
              • 2016-09-25
              • 1970-01-01
              相关资源
              最近更新 更多