SVN提交特定文件

时间:2009-10-04 11:22:48

标签: svn terminal

有没有办法只提交特定文件列表(例如,只是SVN想要提交的文件列表之一)。

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

7 个答案:

答案 0 :(得分:317)

不确定。只需列出文件:

$ 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

答案 1 :(得分:60)

使用更改列表。指定文件的优点是,您可以在提交之前可视化并确认您想要的所有内容。

$ 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"

答案 2 :(得分:38)

您基本上将要提交的文件放在命令行上

svn ci file1 file2 dir1/file3

答案 3 :(得分:22)

由于我的颠覆状态,我必须要有创意。 svn st显示MA~状态。我只想MA所以......

svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt

此命令说明找到svn st输出的所有行,以MA开头,使用空格分隔符剪切,然后将结尾8列为结尾。将其转储到targets.txt并覆盖。

然后修改targets.txt以进一步修剪文件列表。然后在下面运行提交:

svn ci -m "My commit message" --targets targets.txt

可能不是最常见的用例,但希望它可以帮助某人。

答案 4 :(得分:10)

除了明确列出unwindWienczny所示的文件外,您还可以设置更改列表并签入这些文件。这些允许您管理对同一工作副本的分离更改集。

您可以在online version of the excellent SVN book中了解相关信息。

答案 5 :(得分:7)

试试这个脚本..

#!/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'`

答案 6 :(得分:1)

我创建一个名为&#34的(子)文件夹;隐藏",移动我不想想要提交到那里的文件。 然后做我的提交,忽略对丢失文件的投诉。 然后将隐藏文件从隐藏文件移回./

我知道这种策略没有任何缺点。