将“svn st”管道化为“svn commit”

时间:2010-12-07 01:12:25

标签: svn

我有一个项目有一个我修改过的配置文件。我想提交除配置文件之外的所有内容。这是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

3 个答案:

答案 0 :(得分:2)

尝试:

sudo svn -q commit

-q是静默开关,不应强制svn打开编辑器以输入提交消息:)

理想情况下,您还应通过-m开关

指定消息

http://svnbook.red-bean.com/en/1.1/re06.html

答案 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命令,或者更可能是您真正想要的是

  1. 在根目录中运行svn add * --force以添加所有未版本控制的文件,然后
  2. 您不想添加的
  3. svn revert config/core.php
  4. 在根目录中运行svn commit -m "I added some unversioned files"以提交所有添加的文件。