Передача номеров версий Subversion для сравнения - PullRequest
0 голосов
/ 26 января 2012

ОК, поэтому я могу запустить такую ​​команду, чтобы получить список номеров редакций, сделанных в определенный день или диапазон дат:

svn log -q -r{2012-01-25}:HEAD | grep '^r[0-9]' | cut -d\| -f1 | cut -b2-

Это прекрасно работает и дает мне список, подобный этому

12345
12346
12347

Теперь я хотел бы передать эти номера ревизий в команду diff, поэтому запуск простого svn diff для номера ревизии вручную работает, как и ожидалось, т.е.

svn diff -c12345

Но, если я попытаюсь передать список ревизий команде diff, как это

svn log -q -r{2012-01-25}:HEAD | grep '^r[0-9]' | cut -d\| -f1 | cut -b2- | xargs svn diff -c

возвращает ошибку, что узел не был найден - мне кажется, что я передаю неверные аргументы.

Ответы [ 2 ]

0 голосов
/ 26 января 2012

Проблема в том, что каждый из 12345, 12346, 12347 передается как отдельный аргумент;вам нужно, чтобы он был объединен с -c в один аргумент.

Предполагая, что вы используете GNU findutils версию xargs, вы можете использовать опцию -I.Пример, в котором не используется svn:

$ printf "12345\n12346\n12347\n" | xargs -n 1 -I{} echo svn diff -c{}
svn diff -c12345
svn diff -c12346
svn diff -c12347

Обратите внимание, что это вызывает svn diff один раз для каждого номера версии.Ваша команда вызывает svn один раз с несколькими номерами версий.Если вы хотите вызвать svn один раз для нескольких номеров версий:

svn diff -c12345 12346 12347

, тогда потребуется другое решение.

РЕДАКТИРОВАТЬ:

Чтениедругой ответ и документация по svn, похоже, что после -c может быть пробел, поэтому допустимы либо svn diff -c12345, либо svn diff -c 12345.В этом случае, просто с помощью -n 1 следует добиться цели.

0 голосов
/ 26 января 2012

Похоже, в последней части канала xargs пытается выполнить:

svn diff -c 12345 12346 12347

когда следует попробовать:

svn diff -c 12345
svn diff -c 12346
svn diff -c 12347

потому что опция -c принимает только один аргумент.

Чтобы это исправить, попробуйте заменить xargs на xargs -n1.

...