Ответ 1
Создайте пять отдельных коммитов и соедините их все с integiff из patchutils.
Мне было предложено ознакомиться с изменениями, внесенными в версии SVN версии 123, 178, 199, 245 и 288, - которые являются целями, связанными с конкретной функцией. Каков разумный способ приблизиться к этому? Полагаю, я действительно хочу увидеть собранный diff в некотором роде, но я открыт для предложений. Сейчас мы в редакции 400.
Изменить: мне нравится знать, как делать что-то из командной строки в subversion, но также приветствуется любое решение, которое работает в eclipse или intellij idea (или любом отдельном приложении). Я также намеренно раскрываю то, что я могу реально надеяться автоматизировать/получить поддержку инструмента, так как я действительно не понимаю, как это сделать разумным образом.
Создайте пять отдельных коммитов и соедините их все с integiff из patchutils.
После поиска в IntelliJ-идее я нашел хорошее решение для этого:
Выберите "Управление версиями" | Показать изменения изменений.
С левой стороны вы выбираете репозиторий и нажимаете на все изменения, которые хотите просмотреть.
В правой панели вы получите список всех файлов, на которые повлияли изменения, которые вы выбрали. Когда вы выберете "diff", вы увидите внутренние изменения в выбранных наборах изменений. Внутренние повторные работы, которые происходят внутри коммитов, не отображаются (как и следовало ожидать)
Я задал аналогичный вопрос о извлечении соответствующих изменений для проверки кода, но не получил удовлетворительного ответа. Ближе всего я пришел к решению, чтобы сделать то, что я упомянул, создать временную ветку и вишню - выбрать интересные коммиты в эту временную ветку. Если они сочетаются чисто, то вся дельта может быть рассмотрена сразу. В случае, если они не сочетаются чисто и полагаются на другое несвязанное изменение, возможно, это означает, что вся партия должна быть пересмотрена все равно в любом случае.
Несмотря на то, что этот вопрос давно закончился, я на самом деле написал сегодня script, который идет по этим строкам:
#!/bin/bash
[email protected]
LAST_REVISION="NULL"
MASTER="master" # path to WC
for THIS_REVISION in ${REVISIONS[@]};
do
if [ "$LAST_REVISION" != "NULL" ];
then
svn diff $MASTER -r ${LAST_REVISION}:${THIS_REVISION} --summarize | while read f;
do
echo ${f#* } | sed "s/[a-zA-Z0-9:\/.]*$MASTER\///" >> "$LAST_REVISION-to-$THIS_REVISION.log"
done
fi
LAST_REVISION=$THIS_REVISION
done
и вы можете называть его "my_diff_script.sh rev1 rev2 rev3 rev4"
вывод будет:
rev1-to-rev2.log rev2-to-rev3.log rev3-to-rev4.log
bendin ответить на этот вопрос имел функцию распечатать собранный diff для всех изменений файл. Его можно легко изменить, чтобы распечатать собранный diff интересующих вас ревизий.
Вы не указали, хотите ли вы использовать diff HEAD или каждый последующий номер REV (который не уверен, почему вы действительно хотите это сделать?) (не делайте, если вы этого не сделали)).
#!/bin/bash
for revision in 123 178 199 245 288;
do
svn diff http://path/to/svn/[email protected] http://path/to/svn/[email protected]$revision > $revision.diff
done
пожалуйста, мальчики оконных вентиляторов, уменьшите меня, потому что мой ответ включает оболочку bash, а не оболочку Windows (несмотря на исходное сообщение, не упоминающее ОС)