#! / bin / bash
if [$ # -lt 2]; then
echo "usage: start_revision end_revision [project_name]"
exit 0
fi
dir_prefix = '! UPDATES /'
svn_repo = 'svn: // <svn_host>: <svn_port>'
if [[$ 3! = '']]
then
project = $ svn_repo '/' $ 3 '/'
fi
revision_start = $ 1
revision_end = $ 2
files = `svn diff --summarize -r $ revision_start: $ revision_end $ project | awk '{print \ $ 2}' `
echo "svn diff --summarize -r $ revision_start: $ revision_end $ project | awk '{print \ $ 2}'"
declare -a filelist
i = 0
for file in $ files;
do
dir = ""
filelist [$ i] = `echo $ file | sed -e 's / \ // \ n / g'`
j = 0
declare -a items
for item in $ {filelist [$ i]};
do
items [$ j] = $ item
j = `echo $ j + 1 | bc`
done
#create dirs
j = 0
cur_dir = "'
els_count = `echo $ {# items [@]} - 1 | bc`
for ditem in $ {items [@]};
do
if [[$ j = $ els_count]] #if lat element - it's filename
then
#store filename
file_name = $ ditem
break
fi
cur_dir = $ cur_dir $ ditem '/'
j = `echo $ j + 1 | bc`
done
dir = $ {dir_prefix} `date +% Y-% m-% d` '/' $ {revision_end} '/' $ cur_dir
mkdir -p $ dir
#export files in created dirs
svn export -r $ revision_end $ project $ file ./$dir$file_name
i = `echo $ i + 1 | bc`
done Source: https://habr.com/ru/post/46266/
All Articles