Подтвердить что ты не робот

Как сравнить ветку с сундуком в подрывной деятельности?

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

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

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

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

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

Ответ 1

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

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

Ответ 2

Вы можете использовать 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

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

#!/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

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

Ответ 4

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

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

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

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

Ответ 5

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

Ответ 6

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

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

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