SVN提交特定的文件

有什么办法只提交一个特定的文件列表(eq只是SVN想要提交的文件列表之一)。

我正在使用terminal下的MAC OS X,没有任何用户界面。

当然。 只需列出文件:

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

你基本上把你想要提交的文件放在命令行上

 svn ci file1 file2 dir1/file3 

由于我的颠覆国家,我不得不创意。 svn st显示MA~状态。 我只想要MA所以…

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

这个命令说find所有由svn st输出的以MA开头的行,使用空格分隔符剪切,然后让colums 8结束。 转储到targets.txt并覆盖。

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

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

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

除了显式列出显示的文件,如unwind和Wienczny所示,您可以设置更改列表并签入这些文件。 这些允许您pipe理对同一个工作副本的不同组更改。

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

试试这个脚本..

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

我做一个名为“隐藏”的(子)文件夹,移动我不想提交到那里的文件。 然后做我的承诺,忽略关于丢失的文件的投诉。 然后将隐藏的文件从隐藏移回到./

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