Трубопровод "svn st" в "svn commit" - PullRequest
4 голосов
/ 07 декабря 2010

У меня есть проект, в котором есть файл конфигурации, который я изменил. Я хочу зафиксировать все, что у меня есть, кроме файла конфигурации. Это статус 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 ]

2 голосов
/ 07 декабря 2010

Попробуйте:

sudo svn -q commit

-q - это тихий переключатель, который не должен заставлять svn открывать редактор, чтобы вставить сообщение коммита:)

В идеале вы должны также указать сообщение через -m switch

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

1 голос
/ 01 мая 2012

Вы можете моделировать удобство 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 в начало примера.

0 голосов
/ 20 апреля 2011

В основном вам нужно 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в ваш конвейер перед фиксацией, или, скорее всего, вам действительно нужно

  1. запустить svn add * --force в корневом каталоге, чтобы добавить все неверсированные файлы, затем
  2. svn revert config/core.php, чтоВы не хотите, чтобы
  3. запустил svn commit -m "I added some unversioned files" в корневом каталоге, чтобы зафиксировать все добавленные файлы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...