SVN提交特定文件

010*_*101 210 svn terminal

有没有办法只提交特定文件列表(eq只是SVN想要提交的文件列表之一).

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

unw*_*ind 322

当然.只需列出文件:

$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png
Run Code Online (Sandbox Code Playgroud)

我不知道告诉它忽略某组文件的方法.当然,如果你想要提交的文件很容易被shell列出,你可以使用:

$ svn ci -m "No longer sets printer on fire" printer-driver/*.c
Run Code Online (Sandbox Code Playgroud)

您还可以让svn命令读取要从文件提交的文件列表:

$ svn ci -m "Now works" --targets fix4711.txt
Run Code Online (Sandbox Code Playgroud)

  • 我认为我的新挑战是*创建一个让打印机着火的错误. (16认同)
  • 你可以这样做:svn st | cut -c 9-> targets.txt,然后编辑targets.txt文件以删除特定文件,并使用--targets参数指定文件列表. (15认同)
  • 这是可悲和荒谬的.没有临时区域.```svn add```用于将文件添加到存储库. (3认同)

jcw*_*ger 62

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

$ svn changelist fix-issue-237 foo.c 
Path 'foo.c' is now a member of changelist 'fix-issue-237'.
Run Code Online (Sandbox Code Playgroud)

完成后,svn现在为你保持独立.当您处理多项更改时,这会有所帮助

$ svn status
A       bar.c
A       baz.c

--- Changelist 'fix-issue-237':
A       foo.c
Run Code Online (Sandbox Code Playgroud)

最后,告诉它提交你想要改变的内容.

$ svn commit --changelist fix-issue-237 -m "Issue 237"
Run Code Online (Sandbox Code Playgroud)

  • 多年前我转向Git,从未回头.被迫再次使用svn为客户,感觉就像在两条腿上运行球和链 (10认同)

Wie*_*zny 38

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

svn ci file1 file2 dir1/file3
Run Code Online (Sandbox Code Playgroud)

  • 如果在没有参数的情况下运行,则svn提交所有已更改的文件(如果以文件作为参数运行),如果使用目录运行,则提交此文件,提交目录中的所有已更改文件 (2认同)

Eri*_*ric 22

由于我的颠覆状态,我不得不发挥创造力. svn st结果显示M,A~状态.我只是想MA这样...

svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
Run Code Online (Sandbox Code Playgroud)

这个命令说找到svn st那个以Mor 开头输出的所有行A,用空格分隔符剪切,然后将colums 8到结尾.将其转储到targets.txt并覆盖.

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

svn ci -m "My commit message" --targets targets.txt
Run Code Online (Sandbox Code Playgroud)

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

  • 您也可以使用`grep -v'^〜'`来将您想要的内容列入黑名单. (2认同)

sbi*_*sbi 10

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

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


小智 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'`
Run Code Online (Sandbox Code Playgroud)