Видя комбинированное различие многих коммитов в подрывной деятельности?

Мне было предложено ознакомиться с изменениями, внесенными в версии SVN версии 123, 178, 199, 245 и 288, - которые являются целями, связанными с конкретной функцией. Каков разумный способ приблизиться к этому? Полагаю, я действительно хочу увидеть собранный diff в некотором роде, но я открыт для предложений. Сейчас мы в редакции 400.

Изменить: мне нравится знать, как делать что-то из командной строки в subversion, но также приветствуется любое решение, которое работает в eclipse или intellij idea (или любом отдельном приложении). Я также намеренно раскрываю то, что я могу реально надеяться автоматизировать/получить поддержку инструмента, так как я действительно не понимаю, как это сделать разумным образом.

Ответ 1

Создайте пять отдельных коммитов и соедините их все с integiff из patchutils.

Ответ 2

После поиска в IntelliJ-идее я нашел хорошее решение для этого:

Выберите "Управление версиями" | Показать изменения изменений.

С левой стороны вы выбираете репозиторий и нажимаете на все изменения, которые хотите просмотреть.

В правой панели вы получите список всех файлов, на которые повлияли изменения, которые вы выбрали. Когда вы выберете "diff", вы увидите внутренние изменения в выбранных наборах изменений. Внутренние повторные работы, которые происходят внутри коммитов, не отображаются (как и следовало ожидать)

Ответ 3

Я задал аналогичный вопрос о извлечении соответствующих изменений для проверки кода, но не получил удовлетворительного ответа. Ближе всего я пришел к решению, чтобы сделать то, что я упомянул, создать временную ветку и вишню - выбрать интересные коммиты в эту временную ветку. Если они сочетаются чисто, то вся дельта может быть рассмотрена сразу. В случае, если они не сочетаются чисто и полагаются на другое несвязанное изменение, возможно, это означает, что вся партия должна быть пересмотрена все равно в любом случае.

Ответ 4

Несмотря на то, что этот вопрос давно закончился, я на самом деле написал сегодня 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

Ответ 5

bendin ответить на этот вопрос имел функцию распечатать собранный diff для всех изменений файл. Его можно легко изменить, чтобы распечатать собранный diff интересующих вас ревизий.

Ответ 6

Вы не указали, хотите ли вы использовать 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 (несмотря на исходное сообщение, не упоминающее ОС)