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
显示M
, A
和~
状态。 我只想要M
和A
所以…
svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
这个命令说find所有由svn st
输出的以M
或A
开头的行,使用空格分隔符剪切,然后让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'`
我做一个名为“隐藏”的(子)文件夹,移动我不想提交到那里的文件。 然后做我的承诺,忽略关于丢失的文件的投诉。 然后将隐藏的文件从隐藏移回到./
我知道这个策略没有任何缺点。