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

Как получить файлы, измененные в диапазоне версий в Subversion?

Как я могу получить все файлы из репозитория вместе со структурой папок, измененной в диапазоне ревизий, скажем, от 1000-1920?

4b9b3361

Ответ 1

Если вам просто нужен список измененных путей, посмотрите на параметр --summarize на diff.

svn diff --summarize -r1000:1920 https://my.org/myrepo/

Ответ 2

Это немного зависит от того, что вы намерены делать с данными. Если вас интересует только просмотр данных вручную, вы можете сделать

svn log -r1000:1920 -q -v | grep "   M" | sort -u

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

Если вы хотите сделать что-то более программно, вы можете передать флаг -xml в svn-журнал и получить все данные журнала как XML-вывод:

svn log -r1000:1920 --xml > log1000-1920.xml

Ответ 4

Вот решение, которое даст вам дерево, содержащее только те файлы, которые существуют в r1920, и были изменены или добавлены между r1000 и r1920. Это bash script, поэтому вам понадобятся Linux и инструменты GNU или что-то сравнимое.

 #!/bin/bash

repo=https://zsvn.brz.gv.at/svn/ju-vj/trunk/vj
lo=1000
hi=1920
wc=changed_files$hi

# all files as of revision $hi
svn export [email protected]$hi $wc

(# files that have changed
 svn diff --summarize -r$lo:$hi $repo \
    | egrep -e "^[AM]" \
    | cut -c7- \
    | sed -e "s,$repo,," \
    | sed -e "s, /,," \
     | while read p
 do # omit directories, emit only files
     if [[ -f $wc/$p ]]
     then
         echo "$p"
     fi
 done
 # all files (omit directories)
 svn ls -R [email protected]$hi | egrep -v -e "/$"
) \
| sort | uniq -u \
| (cd $wc ; xargs rm)

# The last lines select only those files which are unique when the two
# lists are combined, that is all those files that are in revision $hi
# and have not changed.  These are then fed to rm by xargs to remove
# them.

# what left is an export containing only those files that changed or
# were added between revisions $lo and $hi.