Видите комбинированный diff многих коммитов в subversion? - PullRequest
12 голосов
/ 21 января 2009

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

Edit: мне нравится знать, как делать вещи из командной строки в Subversion, но также приветствуется любое решение, которое работает с идеей Eclipse или Intellij (или любое отдельное приложение). Я также намеренно открываю что Я могу реально надеяться автоматизировать / получить поддержку инструмента, так как я действительно не понимаю, как сделать это умным способом.

Ответы [ 6 ]

5 голосов
/ 21 января 2009

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

4 голосов
/ 22 января 2009

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

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

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

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

1 голос
/ 26 января 2009

Несмотря на то, что этот вопрос давно закончился, сегодня я действительно написал сценарий, который выглядит следующим образом:


#!/bin/bash

REVISIONS=$@
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
1 голос
/ 21 января 2009

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

0 голосов
/ 21 января 2009

Вы не указали, хотите ли вы основывать различие от HEAD или каждого последующего номера REV (что неясно, почему вы на самом деле захотите это сделать?


#!/bin/bash
for revision in 123 178 199 245 288;
do
          svn diff http://path/to/svn/file@HEAD http://path/to/svn/file@$revision > $revision.diff
done

пожалуйста, поклонники Windows, понизьте меня, потому что мой ответ касается оболочки bash, а не оболочки Windows (несмотря на то, что в оригинальном сообщении никогда не упоминается ОС)

0 голосов
/ 21 января 2009

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

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