Как сравнить ветку с сундуком в подрывной деятельности?
В 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
Ответы
Ответ 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
Это даст вам разницу между файлом в ветке и сундуке.