diff options
Diffstat (limited to 'absurd/git')
-rwxr-xr-x | absurd/git | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/absurd/git b/absurd/git new file mode 100755 index 0000000..0f562b5 --- /dev/null +++ b/absurd/git @@ -0,0 +1,115 @@ +#!/bin/sh +set -e + +case "$DGIT_ABSURD_DEBUG" in +''|0) exec 3>/dev/null ;; +1) exec 3>>../../gbp-pq-output ;; +*) exec 3>>../../gbp-pq-output 2>&3 ;; +esac + +log () { + echo >&3 "DGIT ABSURD GIT APPLY (DEBUG) $*" + echo >&2 "DGIT ABSURD GIT APPLY (STDERR) $*" +} + +fail () { + log "FAILED: $*" + exit 127 +} + +self=${0%/*} +npath=${PATH#$self:} +if test "x$PATH" = "x$npath"; then + fail "PATH FILTER FAIL ($0 $self $PATH)" +fi + +bypass=true +for arg in "$@"; do + case "$arg" in + apply) bypass=false; break ;; + -*) ;; + *) bypass=true; break ;; + esac +done + +if $bypass; then + PATH=$npath + echo >&3 "DGIT ABSURD GIT APPLY - BYPASS: $*" + exec git "$@" +fi + +log "NO BYPASS: $*" + +case "$DGIT_ABSURD_DEBUG" in +''|0|1) ;; +*) set -x ;; +esac + +#exec >/dev/tty 2>&1 + +index=0 +noo=0 + +for arg in "$@"; do + case "$noo.$arg" in + 1.--index) + index=1 + continue + ;; + 1.--whitespace=fix) + continue + ;; + ?.-*) + fail "UNKNOWN OPTION $arg ($*)" + ;; + 0.apply) + ;; + 1.*) patch="$arg" + ;; + *) + fail "BAD USAGE $arg ($noo $*)" + esac + noo=$(( $noo + 1 )) +done + +if [ $noo != 2 ]; then + fail "NO PATCH ($*)" +fi + +pwd=`pwd` +patch=${patch#$pwd/debian/patches/} +rm -f debian/patches/series + +# Work around #848611. +# We need a stunt filename which the source package must not +# contain. A trick is to use the commit hash of HEAD, whose +# hash value cannot appear in any file in its own tree. +omgwtf="dgit-omg-wtf-$(git rev-parse HEAD)" +cat <<END >debian/patches/$omgwtf +--- +--- a/$omgwtf 2016-10-31 23:28:47.314155919 +0000 ++++ b/$omgwtf 2016-12-18 22:40:01.870058270 +0000 +@@ -0,0 +1 @@ ++: +END +printf "%s\n" "$omgwtf" >debian/patches/series +printf "%s\n" "$patch" >>debian/patches/series + +# Just in case some joker tries to patch .git/something +mv .git ../.git +set +e +dpkg-source --before-build . +rc=$? +set -e +rm -rf .git +mv ../.git . +test $rc = 0 + +rm -f $omgwtf debian/patches/$omgwtf + +rm -rf .pc +git checkout debian/patches/series +git add -Af . + +log "APPLIED $patch" +#printf 'APPLIED '; date --iso-8601=ns |