set -e
usage() {
- echo "usage: dcp-init [-sh] [-C key=val] [-d REPODIR] PACKAGE [PATCH...]"
+ echo "usage: dcp-init [-sh] [-C key=val] [-d REPODIR] PACKAGE [(PATCH|-m)...]"
echo " PATCH ::= [-p LEVEL] [-bB BRANCH] FILE"
echo " -b creates a new branch at the current patch"
echo " -B creates a new branch at the upstream sources"
+ echo " -m merges the current branch into the master branch"
}
rungit() {
mkdir "$td/control/update.d"
cat >"$td/control/functions" <<EOF
readconf() {
+ if [ -r "\$HOME/.dcp-build-conf" ]; then
+ while read key val; do
+ export "CONF_\$key"="\$val"
+ done <"\$HOME/.dcp-build-conf"
+ fi
+ if [ -r "/etc/dcp-conf" ]; then
+ while read key val; do
+ export "CONF_\$key"="\$val"
+ done <"/etc/dcp-conf"
+ fi
while read key val; do
export "CONF_\$key"="\$val"
done <control/conf
rungit() {
(cd repo; git "\$@") || false
}
+
+logchange() {
+ tag="\${CONF_VERTAG:-dcp}"
+ ver="\$(dpkg-parsechangelog -lrepo/src/debian/changelog | sed -n 's/^Version: \(.*\)$/\1/p')"
+ [ -n "\$ver" ]
+ maint="\$CONF_MAINTAINER"
+ if [ -z "\$maint" ]; then
+ maint="\$(id -un) <\$(id -un)@\$(hostname -f)>"
+ fi
+ cat - repo/src/debian/changelog >repo/src/debian/changelog.new <<ENDCL
+\${CONF_APTPKG} (\${ver}+\${tag}1) unstable; urgency=low
+
+ * Remerged changes in DCP
+
+ -- \${maint} \$(date -R)
+ENDCL
+ mv -f repo/src/debian/changelog.new repo/src/debian/changelog
+}
EOF
cat >"$td/control/build" <<EOF
#!/bin/sh
. control/functions
readconf
+updated=n
for branch in repo/.git/refs/heads/*; do
branch="\${branch##*/}"
if [ -x "control/update.d/\$branch" ]; then
rungit checkout master
if [ "\$newrev" != "\$lastrev" ]; then
rungit merge -n "\$branch"
+ updated=y
fi
fi
done
+
+if [ "\$updated" = y ]; then
+ for file in control/update.d/post-*; do
+ if [ -x "\$file" ]; then "\$file"; fi
+ done
+fi
EOF
chmod 755 "$td/control/update"
rungit add control
set -e
+. control/functions
+
cd repo
dcp-update-apt "\$CONF_APTPKG"
-
EOF
chmod 755 "$td/control/update.d/upstream"
rungit add control/update.d/upstream
+ cat >"$td/control/update.d/post-logchange" <<EOF
+#!/bin/sh
+
+set -e
+. control/functions
+
+logchange
+rungit add src/debian/changelog
+rungit commit -q -m "Added changelog entry"
+
+EOF
echo "APTPKG $pkg" >>"$td/control/conf"
rungit add control/conf
}
level=0
}
initvals
+curbranch=master
while [ $# -gt 0 ]; do
arg="$1"
shift
level="$1"
shift
elif [ "$arg" = -b ]; then
- rungit checkout -q -b "$1"
+ curbranch="$1"
shift
+ rungit checkout -q -b "$curbranch"
elif [ "$arg" = -B ]; then
- rungit checkout -q -b "$1" upstream
+ curbranch="$1"
+ shift
+ rungit checkout -q -b "$curbranch" upstream
+ elif [ "$arg" = -m ]; then
+ rungit checkout -q master
+ rungit merge -n "$curbranch"
else
echo "dcp-init: unknown patch option '$arg'" >&2
exit 1