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