我有一个项目有一个我修改过的配置文件。我想提交除配置文件之外的所有内容。这是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
答案 0 :(得分:2)
尝试:
sudo svn -q commit
-q
是静默开关,不应强制svn打开编辑器以输入提交消息:)
理想情况下,您还应通过-m
开关
答案 1 :(得分:1)
您可以使用xargs
backticks
的便利性
而不是:
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
添加到示例的前面。
答案 2 :(得分:-2)
主要是svn commit
之前需要svn add
。例如,这不起作用:
$ 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 commit -m "I added some unversioned files"
以提交所有添加的文件。