2012-04-18 179 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