[英]Piping “svn st” into “svn commit”
我有一個項目有一個我修改過的配置文件。 我想提交除配置文件之外的所有內容。 這是svn的狀態。
? web/trunk/webroot/tmp
M web/trunk/webroot/css/styles.css
M web/trunk/views/posts/list_all.ctp
M web/trunk/config/core.php
這就是我跑的命令。
svn st | grep ? -v | grep config/core.php -v | awk '{print $2;}' | xargs sudo svn commit
但我不斷收到這條消息。
Received SIGHUP or SIGTERM
svn: Commit failed (details follow):
svn: system('/usr/bin/editor svn-commit.tmp') returned 256
任何關於如何解決這個問題的建議都會非常感激。
編輯:這有點兒有趣。 我回應了結果,這就是我得到的。
svn st | grep ? -v | grep gearman -v | awk '{print $2;}' | xargs echo | awk '{ print "sudo svn commit " $0; }'
輸出:
sudo svn commit web/trunk/webroot/css/backend.css web/trunk/views/store_subscribers/list_all.ctp
手動運行上面的結果工作正常,但當我把它輸入sh,
svn st | grep ? -v | grep gearman -v | awk '{print $2;}' | xargs echo | awk '{ print "sudo svn commit " $0; }' | sh
輸出:
Received SIGHUP or SIGTERM
svn: Commit failed (details follow):
svn: system('/usr/bin/editor svn-commit.tmp') returned 256
嘗試:
sudo svn -q commit
-q
是靜默開關,不應強制svn打開編輯器以輸入提交消息:)
理想情況下,您還應通過-m
開關指定消息
您可以使用backticks
模擬xargs
的便利性
代替:
svn st | grep ? -v | grep config/core.php -v | awk '{print $2;}' | xargs sudo svn commit
你可以試試:
svn ci `svn st | grep ? -v | grep config/core.php -v | awk '{print $2;}'`
只需將xargs
命令放在最后,將查詢包裝在backticks
,然后將svn ci
添加到示例的前面。
主要是你需要在svn commit
之前svn add
svn commit
。 例如,這不起作用:
$ touch testfile
$ svn st
$ svn commit testfile -m 'playing with svn'
svn: Commit failed (details follow):
svn: '/cygdrive/c/web/cpoe_ordersets/testfile' is not under version control
但是,如果我記得svn add
它它是有效的。
$ svn add testfile
A testfile
$ svn commit testfile -m 'playing with svn'
Adding testfile
Transmitting file data .
Committed revision 1505.
因此,您可能希望在提交之前向管道添加svn add
命令,或者更可能是您真正想要的那樣
svn add * --force
以添加所有未版本控制的文件 svn revert config/core.php
你不想添加的svn revert config/core.php
svn commit -m "I added some unversioned files"
在根目錄中svn commit -m "I added some unversioned files"
以提交所有添加的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.