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