$svn diff > patchfile
创建一个很好的补丁文件。但是,在Windows下使用TortoiseSVN我将一些文件设置为“在提交时被忽略”,也就是说,它在版本控制之下但在我提交时没有被选中。
TortoiseSVN似乎通过.svn/entries
中的自定义条目为此文件处理此问题。注意,它不是普通的SVN属性(也就是说,不能通过svn propget获取)。
我的问题是,我想通过命令行创建一个补丁文件(通过Cygwin的bash和SVN端口),但是这个补丁文件应该不包含带有'ignore-on-的文件commit'flag。
有没有人知道如何做到这一点(除了通过每个.svn/entries
递归地使用awk ...)?
答案 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'中的文件修改。