Как сравнить ветку с транком в Subversion? - PullRequest
38 голосов
/ 24 января 2011

В Subversion я создал ветку из ствола, используя svn copy.Согласно руководству SVN 1.5 , «это самый простой способ« пометить »ревизию в вашем хранилище - просто скопируйте эту ревизию (обычно HEAD) в вашу директорию тегов."

svn copy file:////svn/projectX/trunk file:///svn/projectX/branches/stefanl

Затем я делаю свои модификации в ветке stefanl.Я хочу зафиксировать свои изменения в стволе, но прежде чем я это сделаю, я бы хотел увидеть разницу изменений.

Как я могу отразить ветку 'stefanl' против ветви 'ствола'?Я пытался svn diff, но он не предоставил много информации:

% svn diff file:////svn/projectX/trunk file:///svn/projectX/branches/stefanl
Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
   Reverse-merged /trunk:r1699-1870

Ответы [ 6 ]

58 голосов
/ 04 февраля 2013

Добавление к предыдущим ответам (при использовании Tortoise SVN в Windows):

  • Щелкните правой кнопкой мыши любую папку. В контекстном меню выберите TortoiseSVN -> Repo-browser .
  • Введите свой адрес репо в поле URL .
  • Перейдите к первой папке, которую вы хотите сравнить. Щелкните правой кнопкой мыши и выберите Отметить для сравнения .
  • Перейдите ко второй папке. Щелкните правой кнопкой мыши и выберите Сравнить URL
8 голосов
/ 07 октября 2011

Вы можете использовать Unix diff для сравнения каталогов.

Чтобы найти отсутствующие файлы:

diff -r svn/projectX/trunk svn/projectX/branches/stefanl | grep -i only

Чтобы узнать, в чем различия между файлами:

diff -ru svn/projectX/trunk svn/projectX/branches/stefanl

У меня был тот же вопрос, и я нашел предложение в почтовой ветке: http://svn.haxx.se/users/archive-2003-08/0538.shtml

3 голосов
/ 05 апреля 2013

Основываясь на других ответах и ​​небольшом исследовании, я написал скрипт, который делает это автоматически.

#!/bin/bash
url=$(svn info | grep ^URL: | sed -e 's,^URL: ,,' )
root=$(svn info | grep '^Repository Root:' | sed -e 's,.*Root: ,,' )
trunk=$root/trunk
if [[ -n "$1" && ! -e "$1" ]]
then
    echo "What? svn diff \"$1\"? really?"
    exit
fi
svn diff $url/$1 $trunk/$1 > trunk.diff

Вы запускаете его прямо под веткой.Вы можете передать путь (каталог или файл), и он будет работать как положено.Если нет, то это будет просто дифференцировать ветку и ствол.

1 голос
/ 18 июня 2014

Использование:

 svn diff ^/trunkUrl/fileName ^/branchUrl/fileName

Это даст вам разницу между файлом в ветви и транке.

1 голос
/ 12 июня 2012

Если вы используете плагин Subversive с eclipse (другой ide?), Переключитесь в режим просмотра репозитория. На панели SVN Repositories просто щелкните правой кнопкой мыши по любому элементу и выберите опцию «Сравнить ...». Это должно быть интуитивно понятно.

1 голос
/ 22 марта 2012

Спасибо за информацию, ребята, я хотел бы добавить что-то, чтобы улучшить читаемость результатов сравнения. Если вы использовали: svn diff svn: // url: 9090 / branch / PRD_0002 svn: // url: 9090 / branch / TST_0003> svn_diff_filename.txt

Вы также можете использовать: findstr "Index:" C: \ path \ svn_diff_filename.txt> svn_diff_file_list.txt

, который предоставит вам читаемый список файлов с любымразличия.

С уважением, Кра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...