Подтвердить что ты не робот

Как обнаружить измененные свойства с помощью журнала SVN

Справочная информация: запись автоматической версии script для экспорта измененных файлов между версиями из SVN и загрузки на удаленный сервер.

Команда svn log отображает измененные файлы и свойства, но, похоже, не отличает ее подробный вывод между модификацией содержимого по модификациям свойств.

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

Здесь мой пример cmd:

#: svn log "someurl" -r 2210:HEAD -v -q

Output:
------------------------------------------------------------------------
r2211 | author | 2010-02-08 12:36:56 +1300 (Mon, 08 Feb 2010)
Changed paths:
   M /branches/project/release-v1-r-maintenance
   M /branches/project/release-v1-r-maintenance/offroot/
   M /branches/project/release-v1-r-maintenance/offroot/test.config
------------------------------------------------------------------------

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

В любом случае, чтобы получить/отфильтровать только изменения содержимого из журнала svn или другую команду.

4b9b3361

Ответ 1

FYI, я отправил bash script в Как сделать изменения свойств svn log ignore?, которые реализуют то, что jeroenh намекал на... обрабатывая вывод журнала svn для передачи svn diff и фильтрации на выходе последнего.

Ответ 2

Вот script, который я только что написал, чтобы получить подробный журнал всех изменений, в которых свойство изменяется внутри текущего SVN файла, где это делается. Просто поместите правильную начальную и конечную версию, где вы догадались, что произошел change change. Это не очень быстро, но он работает.

#!/bin/bash
# Show the verbose log of the revisions, where svn properties 
# inside the current folder where added/removed
startrev=4600
endrev=4620
for i in $(eval echo {$startrev..$endrev})
  do
    svn diff -c $i 2>/dev/null | grep "Property changes on" 1>/dev/null
    if [ $? == 0 ]; then
      echo "Property change in revision $i:"
      svn log -r $i --verbose
    fi
done

Ответ 3

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

Вот как запись diff ищет файл с измененными свойствами:

c:\test\wc>svn diff -c 3

Property changes on: test.txt
___________________________________________________________________
Added: test
   + test

Вот как элемент diff ищет файл с измененным содержимым и измененными свойствами:

c:\test\wc>svn diff -c 4
Index: test.txt
===================================================================
--- test.txt    (revision 3)
+++ test.txt    (revision 4)
@@ -1 +1,2 @@

+asdfads

Property changes on: test.txt
___________________________________________________________________
Added: someproperty
   + somepropertyvalue

Ответ 4

Я знаю, что на этот вопрос был дан ответ, но в случае, если кто-то захочет получить небольшое руководство, я сделал этот пост о как получить получение запрашиваемых данных из svn log/diff (включая сценарии bash scripts, xslt и oracle database). Это позволяет запускать всевозможные полезные запросы против представления v_svnlog

"горячие" файлы в этом патче:

select path, count(*) num from v_svnlog
group by path
order by num desc, path asc

большинство тестов по автору

select author, count(*) num from v_svnlog
where path like '%Test%'
group by author
order by num desc

и т.д.

Ответ 5

Это работает?

svn log --xml --with-no-revprops