Subversion: как найти различия между двумя тегами? - PullRequest
11 голосов
/ 17 июля 2010

Я знаю, что в diff между двумя тегами перечислены «файлы», которые были изменены между этими двумя тегами следующим способом.

svn diff tag1 tag2 |grep Index:

Существует ли какое-либо свойство в Subversion или какой-либо методике для определения номеров ревизий, которые привели к изменению этих файлов (т. Е. Различия между версией tag1 файла и версией tag2 того же файла)?

Thx Вандана

Ответы [ 6 ]

13 голосов
/ 18 июля 2010

Сначала вы можете найти ревизии тегов:

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

Вы на самом деле не ищете различий, вы ищете журнал.Так что сделайте подробный журнал между этими ревизиями, и вы получите коммиты, включая измененные файлы.

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 голосов
/ 02 марта 2017

Поскольку SVN версия 1.9 , у вас есть опция --log для svn mergeinfo:

svn mergeinfo --log --show-revs eligible SOURCE TARGET
2 голосов
/ 22 июля 2013

Следующий сценарий оболочки принимает SOURCE и DEST и показывает наборы изменений в SOURCE, которые не были объединены в DEST.

Итак, чтобы ответить на исходный вопрос:

svnincoming ^/tags/TAG1 ^/tags/TAG2

Или увидеть изменения в стволе, которые не были объединены в ветвь рабочей копии:

cd /working/copy/
svnincoming ^/trunk

Сценарий svnincoming:

#!/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"
2 голосов
/ 30 августа 2012

Если вам нужен список ревизий, которые могут быть объединены из одного тега в другой, вы можете сгенерировать его следующим образом:

    svn mergeinfo --show-revs eligible URL_TAG_1 URL_TAG_2
2 голосов
/ 01 июня 2012

Если вы хотите узнать, какие файлы были изменены между двумя тегами, используйте в рабочей копии:

svn merge --dry-run URL_TAG_1 URL_TAG_2
1 голос
/ 27 июня 2018

с версией svn 1.9.7, хотя мои теги не находятся в той же ветке, это работает!

svn diff --old=URL_TAG_1 --new=URL_TAG_2
...