1
$svn diff > patchfile

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

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

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

有谁知道如何做到这一点(除了用 awk 递归地遍历每个.svn/entries......)?

4

3 回答 3

2

显然这是一个特殊的变更列表条目。至于如何从命令行忽略文件,看起来没有特别简单的方法

于 2010-01-13T13:11:04.547 回答
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]
于 2010-01-13T16:01:25.280 回答
1

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

svn st | grep -A 1000 '忽略提交' | grep -v '忽略提交' | sed 's/^.* //g' | xargs svn 差异 | gvim -

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

使用此命令,将区分更改列表“ignore-on-commit”之外修改的文件,并且不会包含“ignore-on-commit”内的任何文件修改。

于 2012-03-26T06:42:44.983 回答