# # # patch "debian/control" # from [cdd1fd5b651354ddefb3538b0913d703638c4958] # to [dda812ddf83af01a939f1239f73d36bd153103ed] # # patch "debian/monotone-server.dirs" # from [11bc3e5e89f9f329ffe6701765af1acaf18194a5] # to [56cce4b0d51698cab1f729f8caab53d660fb1315] # # patch "debian/monotone-server.monotone.init" # from [c26896274c03e65144465faede5cd36fa9c9512e] # to [735d5825d1f5c83028026acf4704741decea796b] # # patch "debian/monotone-server.postinst" # from [a9b56e3c095363daae9e8ca9dea79ff679a6db6a] # to [03d7f4701f5e9351be468657b165cc54f3cb5049] # ============================================================ --- debian/control cdd1fd5b651354ddefb3538b0913d703638c4958 +++ debian/control dda812ddf83af01a939f1239f73d36bd153103ed @@ -21,7 +21,7 @@ Package: monotone-server Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, monotone +Depends: ${shlibs:Depends}, ${misc:Depends}, monotone (= 0.23) Description: A distributed version (revision) control system Monotone is a free, distributed version control system. It provides fully disconnected operation, manages complete tree versions, keeps ============================================================ --- debian/monotone-server.dirs 11bc3e5e89f9f329ffe6701765af1acaf18194a5 +++ debian/monotone-server.dirs 56cce4b0d51698cab1f729f8caab53d660fb1315 @@ -1,2 +1,3 @@ var/lib/monotone +var/lib/monotone/keys etc/monotone ============================================================ --- debian/monotone-server.monotone.init c26896274c03e65144465faede5cd36fa9c9512e +++ debian/monotone-server.monotone.init 735d5825d1f5c83028026acf4704741decea796b @@ -24,6 +24,10 @@ PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME +MTN_HOME=/var/lib/monotone +MTN_CONFDIR=/etc/monotone +MTN_KEYDIR=$MTN_HOME/keys + # Gracefully exit if the package has been removed. test -x $DAEMON || exit 0 @@ -43,10 +47,10 @@ fi start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE \ - --exec $DAEMON --chuid monotone --chdir /var/lib/monotone -- \ - --confdir=/etc/monotone --db=$DB --norc \ - --rcfile=/etc/monotone/hooks.lua serve \ - $ADDRESS $BRANCHES >> /var/log/monotone.log 2>&1 & + --exec $DAEMON --chuid monotone --chdir $MTN_HOME -- \ + --confdir=$MTN_CONFDIR --db=$DB --norc \ + --rcfile=$MTN_CONFDIR/hooks.lua --keydir=$MTN_KEYDIR \ + serve $ADDRESS $BRANCHES >> /var/log/monotone.log 2>&1 & } ============================================================ --- debian/monotone-server.postinst a9b56e3c095363daae9e8ca9dea79ff679a6db6a +++ debian/monotone-server.postinst 03d7f4701f5e9351be468657b165cc54f3cb5049 @@ -1,5 +1,5 @@ #! /bin/sh -# postinst script for #PACKAGE# +# postinst script for monotone-server # # see: dh_installdeb(1) @@ -17,33 +17,75 @@ # the debian-policy package # +MONOTONE=/usr/bin/monotone + case "$1" in configure) - MTN_DB=/var/lib/monotone/default.db - MTN_HOME=/var/lib/monotone + MTN_DB=/var/lib/monotone/default.db + MTN_HOME=/var/lib/monotone + MTN_CONFDIR=/etc/monotone + MTN_KEYDIR=$MTN_HOME/keys - # create monotone user and fix permissions of files - if [ -z "`id -u monotone 2> /dev/null`" ]; then - /usr/sbin/adduser --system --group --home $MTN_HOME --no-create-home --disabled-password --quiet monotone --gecos "Monotone" - chmod 0740 $MTN_HOME - chmod 0740 /etc/monotone - chown monotone.monotone /etc/monotone - fi + # TODO: debconf monotone stuff + #MTN_KEY= + #MTN_KEY_PASSWD= - if [ -e $MTN_DB ]; then - echo "Monotone database exists." - else - echo "Creating Monotone database..." - /usr/bin/monotone --db $MTN_DB db init - chmod 0600 $MTN_DB - echo "Creating Monotone server keypair..." - echo -ne "$MTN_KEY_PASSWD\n$MTN_KEY_PASSWD\n" | /usr/bin/monotone \ - --db $MTN_DB genkey $MTN_KEY &> /dev/null - /usr/bin/monotone --db $MTN_DB pubkey $MTN_KEY > $MTN_HOME/$MTN_KEY.pubkey - echo "Monotone database created successfully." - fi + MTN_VERSION=`echo "$2" | awk -F - '{print $1}'` + + # Since we are configuring, we should check if we are upgrading. If we are + # upgrading, we should run the proper db migrate commands if necessary. + if [ -z "$2"]; then + # not upgrading, fresh install + # create monotone user and fix permissions of files + if [ -z "`id -u monotone 2> /dev/null`" ]; then + /usr/sbin/adduser --system --group --home $MTN_HOME --no-create-home --disabled-password --quiet monotone --gecos "Monotone" + chown monotone.monotone $MTN_HOME + chown monotone.monotone $MTN_CONFDIR + chown monotone.monotone $MTN_KEYDIR + chmod 0740 $MTN_HOME + chmod 0740 $MTN_CONFDIR + chmod 0740 $MTN_KEYDIR + fi + + # if there is no database, create one + if [ -e $MTN_DB ]; then + echo "Monotone database exists." + else + echo "Creating Monotone database..." + $MONOTONE --db $MTN_DB db init + chmod 0600 $MTN_DB + echo "Creating Monotone server keypair..." + + echo -ne "$MTN_KEY_PASSWD\n$MTN_KEY_PASSWD\n" | + $MONOTONE --db $MTN_DB genkey $MTN_KEY \ + --norc --keydir $MTN_KEYDIR --confdir $MTN_CONFDIR &> /dev/null + + $MONOTONE --db $MTN_DB pubkey $MTN_KEY \ + --norc --keydir $MTN_KEYDIR --confdir $MTN_CONFDIR > $MTN_HOME/$MTN_KEY.pubkey + + echo "Monotone database created successfully." + fi + elif [ "`echo "$MTN_VERSION < 0.17" | bc`" == "1" ]; then + # monotone version to old to automatically upgrade + echo "Cannot automatically upgrade from monotone version $2." + echo -e "Please see UPGRADE and README.changesets in /usr/share/doc/monotone for\n \ + information on upgrading." + elif [ "`echo "$MTN_VERSION < 0.22" | bc`" == "1" ]; then + # upgradable version of monotone + echo "Attempting to migrate monotone database..." + echo "A backup will be created in $MTN_HOME." + + cp $MTN_DB $MTN_DB~ + (echo -ne "$MTN_KEY_PASSWD\n" | + $MONOTONE --db $MTN_DB db migrate \ + --norc --keydir $MTN_KEYDIR --confdir $MTN_CONFDIR && + echo "Database successfully migrated.") || + (echo "*** Error migrating database. ***" && + echo -e "Please see UPGRADE and README.changesets in /usr/share/doc/monotone for\n \ + information on manually upgrading your database.") + fi ;; abort-upgrade|abort-remove|abort-deconfigure)