2012-04-18 143 views
2

我有一个长的提交列表,因此,想交错的提交。所以,当我这样做:只提交使用颠覆提交修改的文件

svn st | ACK '^ M'

我想提交这些文件只有

这是可能通过命令行?

+0

只是为了澄清:您只想提交修改过的文件,而不是那些被删除,添加或替换的文件? – 2012-04-18 17:54:40

+0

@malenkiy_scot是的,我可以确认我只想提交*修改*文件。 – crmpicco 2012-04-19 08:25:10

回答

9

xargs command对这种事情很有用。

假设你没有包含空格字符的文件名任意,你可以这样做:

svn st | sed -n 's/^M//p' | xargs svn commit 

如果你有文件名中空格字符,则sed命令变得有点复杂,增加各地各报价文件名:

svn st | sed -n 's/$/"/; s/^M */"/p' | xargs svn commit 

(我不熟悉ack - 或许可以这样也可以代替sed在这些例子中使用)

+0

如果未指定-u或-v选项,则文件名开始之前的字符数已知(它是8),因此可以简化sed:svn st | grep'^ M'| sed's /。\ {8 \} \(。* \)/ \ 1 /'| xargs svn ci – 2012-04-19 11:46:16

+0

一切都取决于你对“简单”的定义,我想;-) – slowdog 2012-04-19 12:18:10

+0

非常好,sed的第一个例子运行良好。我尝试使用ack,这是我首选的正常工具,但我无法正常工作。谢谢。 – crmpicco 2012-04-19 12:42:45