【问题标题】:How to only commit files in the unnamed changelist with SVN?如何使用 SVN 仅提交未命名更改列表中的文件?
【发布时间】:2011-04-08 17:54:07
【问题描述】:

我正在使用命令行 SVN 客户端(出于速度原因),并且有一个我希望在每次提交时忽略的文件更改列表(很像 TortoiseSVN)。有没有办法提交除特定更改列表之外的所有文件,或者只是提交不在更改列表中的所有文件?

谢谢

【问题讨论】:

    标签: svn commit changelist


    【解决方案1】:

    没有。更改列表用于相反的方式。只需提交包含在更改列表中的文件,而不是将它们排除在提交之外。如果您想忽略某些文件,您应该将它们放入 svn:ignore 属性中,但前提是它们不受版本控制。

    【讨论】:

    • 问题是,我已经在本地修改了它们,以便它们只向我显示某些信息,但不希望其他人看到。
    • 我希望我可以否决 svn 的这个“功能”。我目前在我的默认更改列表中有大量更改,并且正在寻找一种方法来避免签入我不想提交的几个文件,而无需按名称签入一百个文件。
    • 看起来 Subversion 1.8 将使用 --changelist "" 语法来定位不属于任何更改列表的文件。 subversion.apache.org/docs/release-notes/1.8.html#cmdline
    • @rlovtang 唉,这个功能似乎没有进入 1.8
    【解决方案2】:

    假设您有一个名为 TO_IGNORE 的更改列表,您将不想提交的文件放在其中:

    svn st | sed -e "/^--- Changelist 'TO_IGNORE'/,/^--- Changelist/d" | grep '^[ADMR]' | awk '{print $2}' | xargs svn ci
    

    这依赖于“svn st”首先列出不在任何更改列表中的所有文件,然后是所有更改列表一个接一个的事实。

    sed 命令会删除您要忽略的更改列表之间的所有行,直到下一个。

    grep 用于限制添加、删除、修改和替换文件的提交。

    awk 从 svn st 输出中提取文件名。

    【讨论】:

    • 这不适用于二进制文件 - awk 命令打印出 + 符号而不是文件名。我将其更改为 awk '{print $NF}' 似乎效果很好。
    猜你喜欢
    • 2018-09-21
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 2010-12-05
    • 2013-02-06
    • 2011-02-13
    相关资源
    最近更新 更多