是否有任何方法可以只提交特定文件的列表(例如,SVN想要提交的文件列表中的一个)。

我在MAC OS X终端下工作,没有任何UI。


当前回答

基本上就是把要提交的文件放在命令行上

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'`

使用变更列表。与指定文件相比,这样做的好处是可以在提交之前可视化并确认所需要的所有内容都包含在内。

$ svn changelist fix-issue-237 foo.c 
Path 'foo.c' is now a member of changelist 'fix-issue-237'.

完成后,svn现在为你分开。这在您同时处理多个更改时很有帮助

$ svn status
A       bar.c
A       baz.c

--- Changelist 'fix-issue-237':
A       foo.c

最后,告诉它提交您想要更改的内容。

$ svn commit --changelist fix-issue-237 -m "Issue 237"

除了像unwind和Wienczny那样显式列出文件外,您还可以设置更改列表并签入这些文件。这允许您管理相同工作副本的分离更改集。

您可以在优秀的SVN图书的在线版本中阅读它们。

基本上就是把要提交的文件放在命令行上

svn ci file1 file2 dir1/file3