Как я могу получить все файлы из репозитория вместе со структурой папок, измененной в диапазоне ревизий, скажем, от 1000-1920?
Как получить файлы, измененные в диапазоне версий в Subversion?
Ответ 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
Ответ 3
Не уверен, что это помогает, но если вы используете Windows, и у вас установлен TortoiseSVN. Он имеет эту функциональность. Проверьте Использование TortoiseSVN для экспорта только новых/измененных файлов. Опять же, предполагается, что вы используете Windows.
Ответ 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.