是否有任何方法可以只提交特定文件的列表(例如,SVN想要提交的文件列表中的一个)。
我在MAC OS X终端下工作,没有任何UI。
是否有任何方法可以只提交特定文件的列表(例如,SVN想要提交的文件列表中的一个)。
我在MAC OS X终端下工作,没有任何UI。
当前回答
由于我的颠覆状态,我不得不变得有创意。svn st显示M、A和~状态。我只想要M和A,所以…
svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
该命令表示查找svn st输出的所有以M或A开头的行,使用空格分隔符进行切割,然后获取第8列直到末尾。将其转储到targets.txt并覆盖。
然后修改targets.txt以进一步修剪文件列表。然后执行以下命令提交:
svn ci -m "My commit message" --targets targets.txt
可能不是最常见的用例,但希望它能帮助到一些人。
其他回答
当然。列出文件:
$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png
我不知道如何告诉它忽略特定的一组文件。当然,如果你想提交的文件很容易被shell列出,你可以使用它:
$ svn ci -m "No longer sets printer on fire" printer-driver/*.c
你也可以使用svn命令读取文件列表来提交文件:
$ svn ci -m "Now works" --targets fix4711.txt
基本上就是把要提交的文件放在命令行上
svn ci file1 file2 dir1/file3
由于我的颠覆状态,我不得不变得有创意。svn st显示M、A和~状态。我只想要M和A,所以…
svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
该命令表示查找svn st输出的所有以M或A开头的行,使用空格分隔符进行切割,然后获取第8列直到末尾。将其转储到targets.txt并覆盖。
然后修改targets.txt以进一步修剪文件列表。然后执行以下命令提交:
svn ci -m "My commit message" --targets targets.txt
可能不是最常见的用例,但希望它能帮助到一些人。
试试这个脚本..
#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`;
do LIST="${LIST} $f $NULL on";
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`
我创建了一个名为“hide”的(子)文件夹,将我不想提交的文件移动到那里。 然后做我的提交,忽略关于丢失文件的投诉。 然后将隐藏文件从hide移回。/
我不知道这种策略有什么坏处。