Difference between
modified post 77d by Anonymous on Fri 7th Feb 2020 16:22
original post c0b73 by Anonymous on Fri 7th Feb 2020 15:29
Download diff
Show
old version |
new version |
both versions
| 1 | 1 | #!/bin/ksh93 | |
| 2 | 2 | ||
| 3 | 3 | # | |
| 4 | 4 | # merge Rauchs Subversion tree into our git, | |
| 5 | 5 | # one patch at the time | |
| 6 | 6 | # | |
| 7 | 7 | ||
| 8 | 8 | set -o xtrace | |
| 9 | 9 | set -o errexit | |
| 10 | 10 | set -o pipefail | |
| 11 | 11 | ||
| 12 | 12 | which bunzip2 || exit 1 | |
| 13 | 13 | which git || exit 1 | |
| 14 | 14 | which realpath || exit 1 | |
| 15 | 15 | which svn || exit 1 | |
| 16 | 16 | which svnadmin || exit 1 | |
| 17 | 17 | which svnrdump || exit 1 | |
| 18 | 18 | ||
| 19 | 19 | ||
| 20 | 20 | builtin chmod || exit 1 | |
| 21 | 21 | #builtin ln || exit 1 # broken Debian ksh93 package config, grrr... | |
| 22 | 22 | builtin mkdir || exit 1 | |
| 23 | 23 | builtin printf || exit 1 | |
| 24 | 24 | #builtin rm || exit 1 # broken Debian ksh93 package config, grrr... | |
| 25 | 25 | builtin wc || exit 1 | |
| 26 | 26 | ||
| 27 | 27 | ||
| 28 | 28 | # clean data from previous run | |
| 29 | 29 | rm -Rf gitsvnclone1 svnstore convertedsrc compare_oldnew | |
| 30 | 30 | ||
| 31 | 31 | ||
| 32 | 32 | # squish locale settings, we need the POSIX defaults | |
| 33 | 33 | if [[ "${!LC_*}" != '' ]] ; then | |
| 34 | 34 | unset "${!LC_@}" | |
| 35 | 35 | fi | |
| 36 | 36 | unset LANG | |
| 37 | 37 | export LANG='POSIX' | |
| 38 | 38 | ||
| 39 | 39 | typeset -r infile='rauch_svndump20200128.svndump.bz2' | |
| 40 | 40 | ||
| 41 | 41 | typeset -r basedir="$PWD" | |
| 42 | 42 | compound svninfo | |
| 43 | 43 | ||
| 44 | 44 | [[ ! -f "${infile}" ]] && exit 1 | |
| 45 | 45 | [[ ! -r "${infile}" ]] && exit 1 | |
| 46 | 46 | ||
| 47 | 47 | # create empty SVN repository | |
| 48 | 48 | svnadmin create svnstore | |
| 49 | 49 | # add dummy hook to allow property changes for "svnrdump load" | |
| 50 | 50 | printf '#!/bin/sh\nexit 0\n' >'svnstore/hooks/pre-revprop-change' | |
| 51 | 51 | chmod a+x 'svnstore/hooks/pre-revprop-change' | |
| 52 | 52 | ||
| 53 | 53 | bunzip2 -c <"${infile}" | svnrdump load "file://$basedir/svnstore/" | |
| 54 | 54 | ||
| 55 | 55 | # get HEAD revision (number) from svn repository | |
| 56 | 56 | integer svninfo.revision | |
| 57 | 57 | svninfo.cmdout="$(svn info "file://$basedir/svnstore")" | |
| 58 | 58 | dummy="${svninfo.cmdout/~(E)Revision:[[:space:]]+([[:digit:]]+)/ }" | |
| 59 | 59 | (( svninfo.revision=.sh.match[1] )) | |
| 60 | 60 | ||
| 61 | 61 | printf '# Subversion info:\n' | |
| 62 | 62 | print -v svninfo | |
| 63 | 63 | ||
| 64 | 64 | mkdir 'gitsvnclone1' | |
| 65 | 65 | cd 'gitsvnclone1' | |
| 66 | 66 | git svn clone "file://$basedir/svnstore" | |
| 67 | 67 | ||
| 68 | 68 | ls -lad 'svnstore/trunk/projekt/ptxdist/' | |
| 69 | 69 | ||
| 70 | 70 | ||
| 71 | 71 | cd 'svnstore/trunk/projekt/ptxdist/' | |
| 72 | 72 | ||
| 73 | 73 | # extract all patches from git repository previously | |
| 74 | 74 | # stored by "git svn" there | |
| 75 | 75 | git format-patch -$(( svninfo.revision+1 )) | |
| 76 | 76 | ||
| 77 | 77 | # remove patch files which are empty | |
| 78 | 78 | (for i in *.patch ; do if [[ ! -s "$i" ]] ; then rm -- "$i" ; fi ; done) | |
| 79 | 79 | ||
| 80 | 80 | # list remaining patches | |
| 81 | 81 | IFS=$'\n' ; typeset -a patchlist=( $(ls -1ad $PWD/*.patch ) ) | |
| 82 | 82 | printf '\n#### Patches:\n' | |
| 83 | 83 | printf '%q\n' "${patchlist[@]}" | |
| 84 | 84 | printf '\n#### Number of patches: %d\n' "$(wc -l <<<"$patchlist")" | |
| 85 | 85 | ||
| 86 | 86 | cd "$basedir" | |
| 87 | 87 | mkdir 'convertedsrc' | |
| 88 | 88 | cd 'convertedsrc' | |
| 89 | 89 | ||
| 90 | 90 | printf '%s\n' "${patchlist[@]}" | sort -n | while read i ; do | |
| 91 | 91 | # 1. use "|| true" to circumvent -o errexit for now since | |
| 92 | 92 | # GNU patch does not support GIT binary patches and returns | |
| 93 | 93 | # a non-0 exit code for such patches | |
| 94 | - | # 2. use --force to avoid interactive queries about binary patches | |
| 94 | + | # 2. use --force to avoid interactive queries about GIT binary patches | |
| 95 | 95 | patch -p3 --force <"$i" || true | |
| 96 | 96 | done | |
| 97 | 97 | ||
| 98 | 98 | cd "$basedir" | |
| 99 | 99 | mkdir 'compare_oldnew' | |
| 100 | 100 | cd 'compare_oldnew' | |
| 101 | 101 | (mkdir 'old' && cd 'old' && svn export "file://$basedir/svnstore/trunk/projekt/ptxdist") | |
| 102 | 102 | mkdir new | |
| 103 | 103 | ln -s '../../convertedsrc/ptxdist' 'new/.' | |
| 104 | 104 | ||
| 105 | 105 | cd "$basedir" | |
| 106 | 106 | (diff -r -u 'compare_oldnew/old/ptxdist/' 'compare_oldnew/new/ptxdist/' || true) 2>&1 | | |
| 107 | - | egrep -v '^Only in .+(barebox-image|bareboxenv|libEMC|lin|\.(app|png|jpg|jpeg|gz|bin|iop|pdf|so\..+|crc|vtg))$' | |
| 107 | + | egrep -v '^Only in compare_oldnew/old/.+: (ecu-jobctl-demo|barebox-image|bareboxenv|libEMC|lin|.+\.(app|png|jpg|jpeg|gz|bin|iop|pdf|so\.[[:digit:]]+.+|crc|vtg))$' | |
| 108 | 108 | ||
| 109 | 109 | ||
| 110 | 110 | printf '# DONE!\n' | |
| 111 | 111 | exit 0 | |
| 112 | 112 | # EOF. | |
| 113 | 113 |
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.
eckelmann.kpaste.net RSS