summaryrefslogtreecommitdiffstats
path: root/bin/git-debian-changelog
diff options
context:
space:
mode:
Diffstat (limited to 'bin/git-debian-changelog')
-rwxr-xr-xbin/git-debian-changelog197
1 files changed, 197 insertions, 0 deletions
diff --git a/bin/git-debian-changelog b/bin/git-debian-changelog
new file mode 100755
index 0000000..2197979
--- /dev/null
+++ b/bin/git-debian-changelog
@@ -0,0 +1,197 @@
+#!/bin/sh
+
+set -e
+
+if [ ! -x "$(which gbp 2> /dev/null)" ]
+then
+ echo "gbp - command not found" >&2
+ exit 1
+fi
+
+if [ ! -e debian/changelog ]
+then
+ echo "E: debian/changelog - no such file" >&2
+ exit 1
+fi
+
+MODE="$(basename ${0} | sed -e 's|^git-||' -e 's|-changelog$||')"
+
+WRAP_SCRIPT="/usr/share/doc/git-buildpackage/examples/wrap_cl.py"
+
+if [ -e "/usr/share/doc/git-buildpackage/examples/wrap_cl.py" ]
+then
+ CUSTOMIZATION="--customization ${WRAP_SCRIPT}"
+fi
+
+ID="${1}"
+
+if [ -z "${ID}" ]
+then
+ if [ -n "$(git log | grep -m1 'Adding version ')" ]
+ then
+ ID="$(git log | grep -B4 -m1 "Adding version " | awk '/^commit / { print $2 }')"
+ fi
+
+ if [ -z "${ID}" ] && [ -n "$(git log | grep -m1 'Releasing version ')" ]
+ then
+ ID="$(git log | grep -B4 -m1 "Releasing version " | awk '/^commit / { print $2 }')"
+ fi
+
+ if [ -z "${ID}" ] && [ -n "$(git log | grep -m1 "Releasing ${MODE} version ")" ]
+ then
+ ID="$(git log | grep -B4 -m1 "Releasing ${MODE} version " | awk '/^commit / { print $2 }')"
+ fi
+
+ if [ -z "${ID}" ] && [ -n "$(git log | grep -m1 "Adding ${MODE} version ")" ]
+ then
+ ID="$(git log | grep -B4 -m1 "Adding ${MODE} version " | awk '/^commit / { print $2 }')"
+ fi
+else
+ shift
+fi
+
+if [ -e debian/gbp.conf ]
+then
+ TEMPFILE="$(mktemp -p . -u)"
+ mv debian/gbp.conf "${TEMPFILE}"
+fi
+
+SOURCE="$(dpkg-parsechangelog -S Source)"
+URGENCY="$(dpkg-parsechangelog -S Urgency)"
+
+if grep -qs "git.*.progress-linux.org" .git/config && grep -qs maintainers@lists.progress-linux.org debian/control
+then
+ DIST="$(git config --get remote.origin.url | awk -F/ '{ print $(NF-1) }')"
+ DISTRIBUTION="--distribution=${DIST}"
+
+ VERSION="$(dpkg-parsechangelog -S Version)"
+
+ case "${VERSION}" in
+ *progress*)
+ VERSION=""
+ ;;
+
+ *)
+ case "${DIST}" in
+ engywuck)
+ case "${VERSION}" in
+ *-*)
+ # non-native
+ VERSION="--dch-opt=-b -N ${VERSION}progress5u1"
+ ;;
+
+ *)
+ # native
+ VERSION="--dch-opt=-b -N ${VERSION}-0progress5u1"
+ ;;
+ esac
+ ;;
+
+ engywuck-backports)
+ case "${VERSION}" in
+ *-*)
+ # non-native
+ VERSION="--dch-opt=-b -N ${VERSION}~progress5+u1"
+ ;;
+
+ *)
+ # native
+ VERSION="--dch-opt=-b -N ${VERSION}-0.0~progress5+u1"
+ ;;
+ esac
+ ;;
+
+ fuchur)
+ case "${VERSION}" in
+ *-*)
+ # non-native
+ VERSION="--dch-opt=-b -N ${VERSION}progress6u1"
+ ;;
+
+ *)
+ # native
+ VERSION="--dch-opt=-b -N ${VERSION}-0progress6u1"
+ ;;
+ esac
+ ;;
+
+ fuchur-backports)
+ case "${VERSION}" in
+ *-*)
+ # non-native
+ VERSION="--dch-opt=-b -N ${VERSION}~progress6+u1"
+ ;;
+
+ *)
+ # native
+ VERSION="--dch-opt=-b -N ${VERSION}-0.0~progress6+u1"
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+fi
+
+if grep -qs "git.*.bfh.science" .git/config
+then
+ DIST="$(git config --get remote.origin.url | awk -F/ '{ print $(NF-1) }')"
+ DISTRIBUTION="--distribution=${DIST}"
+
+ case "${VERSION}" in
+ *bfh*)
+ VERSION=""
+ ;;
+
+ *)
+ case "${VERSION}" in
+ *-*)
+ # non-native
+ VERSION="--dch-opt=-b -N ${VERSION}~bfh10+u1"
+ ;;
+
+ *)
+ # native
+ VERSION="--dch-opt=-b -N ${VERSION}-0.0~bfh10+u1"
+ ;;
+ esac
+ ;;
+ esac
+fi
+
+if [ -n "${ID}" ]
+then
+ gbp dch --spawn-editor=never ${DISTRIBUTION} ${VERSION} --urgency ${URGENCY} --git-log="--no-show-signature" --debian-branch $(git branch --show-current) --git-author --release --since ${ID} ${CUSTOMIZATION} ${@}
+else
+ gbp dch --spawn-editor=never ${DISTRIBUTION} ${VERSION} --urgency ${URGENCY} --git-log="--no-show-signature" --auto --debian-branch $(git branch --show-current) --git-author --release ${CUSTOMIZATION} ${@}
+fi
+
+if [ -n "${DIST}" ]
+then
+ # derivatives
+ if ! grep -qs "Initial upload to ${DIST}" debian/changelog
+ then
+ sed -i -e "0,/^$/s//\n * Initial upload to ${DIST}./" debian/changelog
+ else
+ sed -i -e "0,/^$/s//\n * Uploading to ${DIST}, remaining changes:/" debian/changelog
+ fi
+else
+ # debian
+ DIST="$(dpkg-parsechangelog -S Distribution)"
+ sed -i -e "0,/^$/s//\n * Uploading to ${DIST}./" debian/changelog
+
+ if git log ${ID}..HEAD | grep -qs 'Merging upstream version '
+ then
+ VERSION_NEW="$(git log ${ID}..HEAD | awk '/Merging upstream version/ { print $4 }' | sed -e 's|.$||')"
+ VERSION_OLD="$(dpkg-parsechangelog -S Version)"
+
+ sed -i -e "s|^${SOURCE} (${VERSION_OLD}) ${DIST}; urgency=${URGENCY}|${SOURCE} (${VERSION_NEW}-1) ${DIST}; urgency=${URGENCY}|" debian/changelog
+ fi
+fi
+
+if [ -e "${TEMPFILE}" ]
+then
+ mv "${TEMPFILE}" debian/gbp.conf
+fi
+
+vi debian/changelog