从svn diff中排除TortoiseSVN的ignore-on-commit文件

时间:2010-01-13 13:01:07

标签: svn tortoisesvn diff patch ignore

$svn diff > patchfile

创建一个很好的补丁文件。但是,在Windows下使用TortoiseSVN我将一些文件设置为“在提交时被忽略”,也就是说,它在版本控制之下但在我提交时没有被选中。

TortoiseSVN似乎通过.svn/entries中的自定义条目为此文件处理此问题。注意,它不是普通的SVN属性(也就是说,不能通过svn propget获取)。

我的问题是,我想通过命令行创建一个补丁文件(通过Cygwin的bash和SVN端口),但是这个补丁文件应该包含带有'ignore-on-的文件commit'flag。

有没有人知道如何做到这一点(除了通过每个.svn/entries递归地使用awk ...)?

3 个答案:

答案 0 :(得分:2)

显然这是一个特殊的changelist entry。至于如何从命令行忽略文件,它看起来不像是particularly easy way

答案 1 :(得分:1)

您可以通过文件中的'svn info'查看更改列表。并通过'svn changelist'

设置/重置更改列表
$ svn help cl
changelist (cl): Associate (or dissociate) changelist CLNAME with the named files.
usage: 1. changelist CLNAME TARGET...
       2. changelist --remove TARGET...

Valid options:
  -q [--quiet]             : print nothing, or only summary information
  -R [--recursive]         : descend recursively, same as --depth=infinity
  --depth ARG              : limit operation by depth ARG ('empty', 'files',
                            'immediates', or 'infinity')
  --remove                 : remove changelist association
  --targets ARG            : pass contents of file ARG as additional args
  --changelist ARG         : operate only on members of changelist ARG
                             [aliases: --cl]

答案 2 :(得分:1)

我也有这个问题,因此开发了一个简单的命令链来满足服务需求:

svn st | grep -A 1000'ignore-on-commit'| grep -v'ignore-on-commit'| sed's /^.* // g'| xargs svn diff | gvim -

(假设在更改列表'ignore-on-commit'之外修改的文件少于1000个)

使用此命令,将更改在changelist'ignala-on-commit'之外修改的文件,并且不会包含'ignore-on-commit'中的文件修改。