Subversion: Как найти различия между двумя тегами?
Я знаю, что diff между двумя тегами перечисляет "файлы", которые были изменены между этими двумя тегами следующим способом.
svn diff tag1 tag2 |grep Index:
Есть ли какое-либо свойство в Subversion или какой-либо метод, чтобы узнать номера версий, из-за которых эти файлы изменились (т.е. различия между версией файла tag1 и версией tag2 того же файла).
спасибо
Вандана
Ответы
Ответ 1
Вы можете сначала найти ревизии тегов:
svn info http://svn.twig-project.org/tags/RELEASE_0_9_7 | grep 'Last Changed Rev'
Last Changed Rev: 331
svn info http://svn.twig-project.org/tags/RELEASE_0_9_8 | grep 'Last Changed Rev'
Last Changed Rev: 343
Вы действительно не ищете diff, вы ищете журнал. Так что сделайте подробный журнал между этими изменениями, и вы получите коммиты, включая измененные файлы.
svn log -v -q -r 331:343 http://svn.twig-project.org/trunk
------------------------------------------------------------------------
r332 | fabien | 2010-06-12 18:30:02 +0200 (Sat, 12 Jun 2010)
Changed paths:
M /trunk/CHANGELOG
M /trunk/lib/Twig/Environment.php
------------------------------------------------------------------------
r333 | fabien | 2010-06-12 18:45:04 +0200 (Sat, 12 Jun 2010)
Changed paths:
M /trunk/CHANGELOG
M /trunk/lib/Twig/Environment.php
Ответ 2
Если вы хотите узнать, какие файлы были изменены между двумя тегами, используйте в рабочей копии:
svn merge --dry-run URL_TAG_1 URL_TAG_2
Ответ 3
Если вам нужен список изменений, которые могут быть объединены из одного тега в другой, вы можете сгенерировать его со следующим:
svn mergeinfo --show-revs eligible URL_TAG_1 URL_TAG_2
Ответ 4
Следующая оболочка script принимает SOURCE и DEST и показывает изменения в SOURCE, которые не были объединены в DEST.
Итак, чтобы ответить на исходный вопрос:
svnincoming ^/tags/TAG1 ^/tags/TAG2
Или просмотреть изменения в соединительной линии, которые не были объединены в ветвь рабочей копии:
cd /working/copy/
svnincoming ^/trunk
svnincoming
script:
#!/bin/sh -e
SOURCE="$1"
DEST="${2:-.}"
if [ "$SOURCE" = "" ]; then
echo "Usage: `basename $0` SOURCE[@REV] [DEST[@REV]]"
echo "List revisions eligible for merging from SOURCE to DEST (or '.', if omitted)."
exit 1
fi
svn mergeinfo --show-revs eligible "$SOURCE" "$DEST" | sed 's/^/-/' | xargs -d '\n' svn log "$SOURCE"
Ответ 5
Поскольку SVN версия 1.9, у вас есть опция --log
для svn mergeinfo
:
svn mergeinfo --log --show-revs eligible SOURCE TARGET