#! / 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