From: Joey Hess <joey@kodama.kitenet.net>
Date: Fri, 22 Aug 2008 04:22:02 +0000 (-0400)
Subject: monotone updates
X-Git-Tag: 2.62~77
X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=4643233c180044bce1b588751a378ec361b43c54;p=ikiwiki.git

monotone updates

- Try to configure a wrapper
- Fix (?) ikiwiki-makerepo repo name mangling
- Add big warning about passphrases
- Doc updates
---

diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm
index a54b53817..724583761 100644
--- a/IkiWiki/Setup/Automator.pm
+++ b/IkiWiki/Setup/Automator.pm
@@ -52,6 +52,9 @@ sub import (@) { #{{{
 		elsif ($config{rcs} eq 'svn') {
 			$config{svn_wrapper}=$config{repository}."/hooks/post-commit";
 		}
+		elsif ($config{rcs} eq 'monotone') {
+			$config{mtn_wrapper}=$config{srcdir}."_MTN/ikiwiki-netsync-hook";
+		}
 		elsif ($config{rcs} eq 'bzr') {
 			# TODO
 		}
diff --git a/doc/ikiwiki-makerepo.mdwn b/doc/ikiwiki-makerepo.mdwn
index e76b3f318..dcebbb96a 100644
--- a/doc/ikiwiki-makerepo.mdwn
+++ b/doc/ikiwiki-makerepo.mdwn
@@ -4,7 +4,7 @@ ikiwiki-makerepo - check an ikiwiki srcdir into revision control
 
 # SYNOPSIS
 
-ikiwiki-makerepo svn|git srcdir repository
+ikiwiki-makerepo svn|git|monotone srcdir repository
 
 ikiwiki-makerepo mercurial srcdir
 
@@ -17,6 +17,9 @@ mercurial repository.
 Note that for mercurial, the srcdir is converted into a mercurial
 repository. There is no need to have a separate repository with mercurial.
 
+Note that for monotone, you are assumed to already have run "mtn genkey" to generate
+key.
+
 # AUTHOR
 
 Joey Hess <joey@ikiwiki.info>
diff --git a/doc/setup.mdwn b/doc/setup.mdwn
index 647e8b86f..affc3ec16 100644
--- a/doc/setup.mdwn
+++ b/doc/setup.mdwn
@@ -181,28 +181,9 @@ about using the git repositories.
 
 [[!toggle id=monotone text="Monotone"]]
 [[!toggleable id=monotone text="""
-	# These instructions are standard instructions to import a directory into monotone
-	# and set it up so that you don't need any passwords to use it
-	REPOSITORY=~/.ikiwiki/mtn.db
-	BRANCH=com.company.wikiname
-	# remember the password you use in the next step and
-	# substitute it for 'wikiKeyPass' in the get_passphrase() hook below
-	# note the you should never generate two monotone keys with the same name
-	mtn genkey web@example.com
-	mtn db init --db=$REPOSITORY
-	mv $SRCDIR $SRCDIR-old
-	cd $SRCDIR-old
-	echo ".ikiwiki" > $SRCDIR-old/.mtn-ignore
-	mtn --db=$REPOSITORY --branch=$BRANCH import . -m "initial import"
-	cd ..
-	mtn --db=$REPOSITORY --branch=$BRANCH checkout $SRCDIR
-	mv $SRCDIR-old/.ikiwiki $SRCDIR
-	cat << EOF > $SRCDIR/_MTN/monotonerc
-	function get_passphrase (branchname)
-	    return "wikiKeyPass"
-	end
-	EOF
-	rm -r $SRCDIR-old
+	# This assumes that you have already used "mtn genkey you@hostname".
+	REPOSITORY=~/wiki.monotone
+	ikiwiki-makerepo git $SRCDIR $REPOSITORY
 """]]
 
 ## Configure ikiwiki to use revision control.
diff --git a/ikiwiki-makerepo b/ikiwiki-makerepo
index aef3e4d0f..245043a5c 100755
--- a/ikiwiki-makerepo
+++ b/ikiwiki-makerepo
@@ -94,12 +94,12 @@ monotone)
 	fi
 	repodir=$(dirname "$repository")
 	mkdir -p "$repodir"
-	file_basename=$(basename -s .monotone "$repository" |\
+	file_basename=$(basename "$repository" | sed -e 's/\.monotone$//' |\
 		tr -s "[:space:]" "_" | sed 's/_$//g')
-	reverse_hostname=$((hostname -f 2>/dev/null || hostname) |\
-		tr  "." "\n" | tail -r | tr "\n" ".")
+	reverse_hostname=$( (hostname -f 2>/dev/null || hostname) |\
+		tr  "." "\n" | tac | tr "\n" ".")
 	branch_name="$reverse_hostname$file_basename"
-	reponame_with_ext="$file_basename.mtn"
+	reponame_with_ext="$file_basename.monotone"
 	mtn db init -d "$repodir/$reponame_with_ext"
 	mtn setup -d "$repodir/$reponame_with_ext" -b "$branch_name" "$srcdir"
 	cd "$srcdir"
@@ -109,6 +109,17 @@ monotone)
 	# with a default key floating around...
 	mtn ci -m "initial import"
 	echo "Directory $srcdir is now set up as a monotone repository"
+	echo ""
+	echo "Note: If your monotone key has a passphrase, you need to configure"
+	echo "monotone to automatically use it. Otherwise, web commits to ikiwiki"
+	echo "will fail."
+	echo ""
+	echo "You can create a $srcdir/_MTN/monotonerc"
+	echo "containing the passphrase:"
+	echo ""
+	echo "function get_passphrase (branchname)"
+	echo '    return "passphrasehere"'
+	echo "end"
 ;;
 *)
 	echo "Unsupported revision control system $rcs" >&2