2015-02-09 3 views
0

Я хотел бы создать патч из диапазона ревизий автораКак отменить изменения Svn из диапазона изменений автором в SVN

моей текущей командной строки заключается в следующем:

svn diff -rFIRSTREVISION:LATESTREVISION pathOfWorkingCopy > /myPatchFile.patch 

является все равно, что я могу указать и автора, внесшего эти изменения?

+0

Какую версию SVN и ОС вы используете? Кроме того, вам помогли какие-либо из нижеперечисленных ответов? – SoftwareCarpenter

+0

Привет, да, я уже выбрал ответ, спасибо – jorgevasquezang

ответ

1

Короткий ответ: Нет, не со стандартной командной строкой.

Однако должно быть достаточно легко найти исправления автора, используя svn log -q. Это отобразит только строку ревизии, которая включает автора. Вы можете комбинировать это с awk, чтобы найти строки автора, а затем снять ревизии.

Оттуда вы можете использовать -c найти различия в этой ревизии:

$ svn log -q \ 
    | awk -v author=$author -F '|' '$0 ~ /^r/ && $2 = " "author" " {   
      print substr ($1, 2) 
     }' | while read rev 
      do 
       svn diff -c$rev 
      done 

AWK -v author=$author позволяет установить переменную Awk author с именем реального автора. $0 ~ /^r/ && $2 = " "author" " говорит, что строки должны начинаться с r (пропуская строки, содержащие ничего, кроме тире), а второе поле должно быть автором, окруженным пространством с каждой стороны. Это подтягивает линии, за которые отвечает автор.

И наконец, print substr ($1,2) распечатывает ревизию без r спереди.

Я трубу это через цикл while read, чтобы сделать svn diff -c$rev для всех ревизий.

+0

Эй, Дэвид, спасибо, что это мне очень помогает, и хорошо объяснил :) – jorgevasquezang

0

В каждой редакции есть только один автор, поэтому вам просто нужно определить изменения, сделанные автором, изменения которых вы хотите разделить.

Вам нужно будет сделать это поэтапно, если другие авторы внесли изменения в один и тот же путь (ы), чередующиеся с этим конкретным автором (укажите изменения, созданные пользователем, которого вы ищете, затем выполните разницу для каждого ревизия/блок изменений).

0

Начиная с Subversion 1.8 вы можете использовать команду --search, чтобы найти все коммиты, сделанные определенным пользователем.

Поиска Синтаксис: --search

svn log --search usernam e -l 50 

Затем нужно будет разобрать совершающие и делать различия для каждого из них.

Если вы находитесь в Linux, вы можете использовать bash для выполнения diff, сделанного пользователем после выполнения поиска. Bash-linux-svn solution

Смежные вопросы