From d7fdd04b5a113b6dded40cb79b670b16570c11b3 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 00:36:58 -0500 Subject: * Removed support for sending commit notification mails. Along with it went the svnrepo and notify settings, though both will be ignored if left in setup files. --- doc/rcs/monotone.mdwn | 1 - 1 file changed, 1 deletion(-) (limited to 'doc/rcs') diff --git a/doc/rcs/monotone.mdwn b/doc/rcs/monotone.mdwn index d79381571..1d3cd2bc4 100644 --- a/doc/rcs/monotone.mdwn +++ b/doc/rcs/monotone.mdwn @@ -10,7 +10,6 @@ The module is available from the monotone source repository at: Monotone support works, but there are still a few minor missing bits (listed here so they are not forgotten): * At the moment there are no links to display diffs between revisions. It shouldn't be hard to add links to a [ViewMTN](http://grahame.angrygoats.net/moinmoin/ViewMTN) instance, but it hasn't been done yet. -* The [[post-commit]] hook support, so that Ikiwiki sends change notifications when people commit using Monotone rather than the web interface, is partially implemented and untested. * Documentation (this page) could be improved. There is also a mismatch between the way Ikiwiki handles conflicts and the way Monotone handles conflicts. At present, if there is a conflict, then Ikiwiki will commit a revision with conflict markers before presenting it to the user. This is ugly, but there is no clean way to fix it at present. -- cgit v1.2.3 From e050f35261fe453b70294b58bc6c87bfe57cf231 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 29 Jan 2008 19:56:19 -0500 Subject: doc updates for bzr --- doc/ikiwiki.setup | 5 +++++ doc/rcs/bzr.mdwn | 8 ++++++++ doc/rcs/details.mdwn | 2 ++ doc/setup.mdwn | 7 +++++++ doc/todo/bzr.mdwn | 2 ++ 5 files changed, 24 insertions(+) create mode 100644 doc/rcs/bzr.mdwn (limited to 'doc/rcs') diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup index 9bf542981..e2974cfd5 100644 --- a/doc/ikiwiki.setup +++ b/doc/ikiwiki.setup @@ -42,6 +42,11 @@ use IkiWiki::Setup::Standard { #historyurl => "http://localhost:8000/log/tip/[[file]]", # hg serve'd local repository #diffurl => "http://localhost:8000/?fd=[[r2]];file=[[file]]", + # Bazaar stuff. + #rcs => "bzr", + #historyurl => ??, + #diffurl => ??, + # Monotone stuff #rcs => "monotone", #mtnkey => "web\@machine.company.com", diff --git a/doc/rcs/bzr.mdwn b/doc/rcs/bzr.mdwn new file mode 100644 index 000000000..19a7ae395 --- /dev/null +++ b/doc/rcs/bzr.mdwn @@ -0,0 +1,8 @@ +[Bazaar](http://bazaar-vcs.org/) is a distributed revison control +system developed by Canonical Ltd. Ikiwiki supports storing a wiki in a +bzr repository. + +Ikiwiki can run as a post-update hook to update a wiki whenever commits +come in. When running as a [[cgi]] with bzr, ikiwiki automatically +commits edited pages, and uses the bzr history to generate the +[[RecentChanges]] page. diff --git a/doc/rcs/details.mdwn b/doc/rcs/details.mdwn index 6b9ffb91f..449e129bd 100644 --- a/doc/rcs/details.mdwn +++ b/doc/rcs/details.mdwn @@ -352,3 +352,5 @@ merge again with a merger that inserts conflict markers. It commits this new revision with conflict markers to the repository. It then returns the text to the user for cleanup. This is less neat than it could be, in that a conflict marked revision gets committed to the repository. + +## [[bzr]] diff --git a/doc/setup.mdwn b/doc/setup.mdwn index 9bf7f7c7b..857a9dbae 100644 --- a/doc/setup.mdwn +++ b/doc/setup.mdwn @@ -135,6 +135,13 @@ about using the git repositories. ikiwiki-makerepo mercurial $SRCDIR """]] +[[toggle id=mercurial text="Bazaar"]] +[[toggleable id=bazaar text=""" + REPOSITORY=$SRCDIR + # FIXME: doesn't work yet with bzr + ikiwiki-makerepo bzr $SRCDIR +"""]] + [[toggle id=tla text="TLA"]] [[toggleable id=tla text=""" REPOSITORY=~/wikirepo diff --git a/doc/todo/bzr.mdwn b/doc/todo/bzr.mdwn index 51ae08146..179ea2f24 100644 --- a/doc/todo/bzr.mdwn +++ b/doc/todo/bzr.mdwn @@ -190,3 +190,5 @@ and rcs_getctime and rcs_notify aren't written at all. --[[bma]] > I've just posted another patch with support for bzr, including support for > --author and a testsuite to git://git.samba.org/jelmer/ikiwiki.git. I hadn't > seen this page earlier. --[[jelmer]] + +> I used jelmer's patch --[[done]]! --[[Joey]] -- cgit v1.2.3 From 4d1a794c3fd2116b2755877f73d6874db6c03083 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Wed, 30 Jan 2008 01:38:33 -0500 Subject: typography --- doc/rcs/git.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'doc/rcs') diff --git a/doc/rcs/git.mdwn b/doc/rcs/git.mdwn index 0353d1535..38a418a5b 100644 --- a/doc/rcs/git.mdwn +++ b/doc/rcs/git.mdwn @@ -39,7 +39,7 @@ should go to the bare repository, which has a `post-update` hook that uses ikiwiki to pull the changes to the srcdir. One setup that will work is to put all committers in a group (say, -ikiwiki), and use permissions to allow that group to commit to the bare git +"ikiwiki"), and use permissions to allow that group to commit to the bare git repository. Make both the post-update hook and ikiwiki.cgi be setgid to the group, as well as suid to the user who admins the wiki. The `wrappergroup` [[setup_file_option|usage]] can be used to make the wrappers -- cgit v1.2.3 From 97dfdf8c64673912c09b079da4c612506e036677 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 04:28:37 -0500 Subject: web commit by http://edward.myopenid.com/: fix broken link to http://git.or.cz/gitwiki/GitFaq --- doc/rcs/git.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'doc/rcs') diff --git a/doc/rcs/git.mdwn b/doc/rcs/git.mdwn index 38a418a5b..f97131742 100644 --- a/doc/rcs/git.mdwn +++ b/doc/rcs/git.mdwn @@ -22,7 +22,7 @@ but it works the best for typical ikiwiki use. and git. It is **paramount** that you **never** push to the non-bare repository -([this FAQ entry explains why](http://git.or.cz/gitwiki/GitFaq#head-b6a3d85f677763313159eb39f7dbf4579d4ee28b)). +([this FAQ entry explains why](http://git.or.cz/gitwiki/GitFaq#head-b96f48bc9c925074be9f95c0fce69bcece5f6e73)). Instead, if you want to work on the wiki from a remote machine, clone the bare repository, using either the `git` transport (if available), or `ssh`. -- cgit v1.2.3 From 749c1e36d90998043c1988a49894d9ee23e60ec4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 3 Feb 2008 18:14:39 -0500 Subject: * monotone changes by Brian May: - On commits, replace "mtn sync" bidirectional with "mtn push" single direction. No need to pull changes when doing a commit. mtn sync is still called in rcs_update. - Support for viewing differences via patches using viewmtn. --- IkiWiki/Rcs/monotone.pm | 28 ++++++-- debian/changelog | 5 ++ doc/bugs/Monotone_rcs_support.mdwn | 134 ++++++++++++++++--------------------- doc/ikiwiki.setup | 2 + doc/rcs/monotone.mdwn | 19 ++++-- 5 files changed, 98 insertions(+), 90 deletions(-) (limited to 'doc/rcs') diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm index 0ae2c1a32..a6c850f0d 100644 --- a/IkiWiki/Rcs/monotone.pm +++ b/IkiWiki/Rcs/monotone.pm @@ -342,10 +342,10 @@ sub rcs_commit ($$$;$$) { #{{{ return $conflict; } if (defined($config{mtnsync}) && $config{mtnsync}) { - if (system("mtn", "--root=$config{mtnrootdir}", "sync", + if (system("mtn", "--root=$config{mtnrootdir}", "push", "--quiet", "--ticker=none", "--key", $config{mtnkey}) != 0) { - debug("monotone sync failed"); + debug("monotone push failed"); } } @@ -431,10 +431,28 @@ sub rcs_recentchanges ($) { #{{{ my @changed_files = get_changed_files($automator, $rev); my $file; + my ($out, $err) = $automator->call("parents", $rev); + my @parents = ($out =~ m/^($sha1_pattern)$/); + my $parent = $parents[0]; + foreach $file (@changed_files) { - push @pages, { - page => pagename($file), - } if length $file; + next unless length $file; + + if (defined $config{diffurl} and (@parents == 1)) { + my $diffurl=$config{diffurl}; + $diffurl=~s/\[\[r1\]\]/$parent/g; + $diffurl=~s/\[\[r2\]\]/$rev/g; + $diffurl=~s/\[\[file\]\]/$file/g; + push @pages, { + page => pagename($file), + diffurl => $diffurl, + }; + } + else { + push @pages, { + page => pagename($file), + } + } } push @ret, { diff --git a/debian/changelog b/debian/changelog index 1266666e3..a1100500f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -22,6 +22,11 @@ ikiwiki (2.31) UNRELEASED; urgency=low * aggregate: Lots of changes; aggregation can now run without locking the wiki, and there is a separate aggregatelock to prevent multiple concurrent aggregation runs. + * monotone changes by Brian May: + - On commits, replace "mtn sync" bidirectional with "mtn push" single + direction. No need to pull changes when doing a commit. mtn sync + is still called in rcs_update. + - Support for viewing differences via patches using viewmtn. -- Joey Hess Sat, 02 Feb 2008 23:36:31 -0500 diff --git a/doc/bugs/Monotone_rcs_support.mdwn b/doc/bugs/Monotone_rcs_support.mdwn index 866805348..d5cc37c27 100644 --- a/doc/bugs/Monotone_rcs_support.mdwn +++ b/doc/bugs/Monotone_rcs_support.mdwn @@ -1,78 +1,56 @@ -#Ikiwiki plugin for the Monotone revision control system. - -I've just made a patch to the ikiwiki code that allows it to use the [[rcs/Monotone]] revision control system. It is available at: - - - -At the moment it is basically complete. At present rcs_notify() is implemeted but untested, the rest is implemented and tested. - -The current version of the patch handles conflicts through the web interface. It is still not perfect as it will break if there is a rename that conflicts with a web change (but so will the other Rcs plugins I think). It also commits a revision with conflict markers if there is a conflict requiring such markers... ick. - -Note: This patch requires a rather recent Monotone perl module (18 August 2007 or later). It is available from the monotone repository here: . - -> The setup instructions to add 40 lines of code to monotonerc is pretty frightning stuff. -> Is there some way this can be automated? --[[Joey]] - ->> I've committed a bunch of this to monotone so that in future it could be removed. ->> I've also just fixed this so it is in a separate, automagically generated, rc file. - ->>> Fair enough. Didn't realize you were a monotone committer. :-) - ->>>> I am, but still a little newish. Feedback is good. In particular, this is my first major bit of PERL. - -> Having rcs_commit return a warning message when there's an unresolved conflict -> isn't right; that message will populate the page edit box. You might want -> to use the error() function here? - ->> It should never reach that case, so I have changed that to error. - -> There'an incomplete comment ending with "note, this relies on the fact that" - ->> erg... sorry, fixed. - -[[tag patch]] - ->> I've [[accepted|done]] this patch, thank you! - ->>> Thanks for committing it. I hate keeping my own diffs. :) - ->> I did make a few changes. Please review, and make sure it still works ->> (a test case like we have for some of the other RCSes would be nice..) - ->>> Tested. It still works at least as well as it did. I'll try to get to a test case soon. ->>> In checking the source I noticed a few bogus comments I left in when editing, ->>> and a bug in page adding. ->>> Here is a small patch for them: - ->>>> applied - -Here is another patch. It fixes a FIXME you added. I was using $file within backticks because -I was getting an error trying to do it right. I've figured out the error, and now do it right. This -should also speed things up (very slightly) - -> applied - ->> BTW, will all the monotone output parsing work if LANG != C? - ->>> It should (he says crossing fingers). ->>> In the places where I do any complex parsing I'm using a special ->>> version of the mtn commands designed for scripting. They have a ->>> stable, easy to parse, output that doesn't get translated (I think). - ->> Do monotone post-commit hooks actually use REV? - ->>> Monotone post-commit hooks are written in Lua and can do ->>> what they please. Setting the REV environment var before ->>> calling Ikiwiki seems reasonable, but I've not written the ->>> Lua hook. - ->>>> So the rcs_notify support is not just untested, but can't work ->>>> at all w/o further development. - -I've just done this further development... The following patch adds support for diffurls. -I've also partially tested the commit message support. I was unable to get Ikiwiki to send -change emails at all (cgi or otherwise), so I tested by adding warn() calls. There were a -few things that needed to be fixed. Support is much closer now (including a simple default -monotone lua hook). - -> We handled this patchset by mail, I applied the still-relevant parts. --[[Joey]] +The Monotone module still lacks support for setting up a post-commit hook, +so commits made via monotone will not automatically update the wiki. + +Here for future reference is the most recent version of support for +that I've been sent. It's not yet working; there are path issues. --[[Joey]] + +
+diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm
+index cde6029..34f8f96 100644
+--- a/IkiWiki/Rcs/monotone.pm
++++ b/IkiWiki/Rcs/monotone.pm
+@@ -186,8 +186,9 @@ sub rcs_update () { #{{{
+ 	check_config();
+ 
+ 	if (defined($config{mtnsync}) && $config{mtnsync}) {
++		check_mergerc();
+ 		if (system("mtn", "--root=$config{mtnrootdir}", "sync",
+-		           "--quiet", "--ticker=none", 
++		           "--quiet", "--ticker=none", "--rcfile", $config{mtnmergerc},
+ 		           "--key", $config{mtnkey}) != 0) {
+ 			debug("monotone sync failed before update");
+ 		}
+@@ -604,4 +605,9 @@ __DATA__
+ 	           return true
+ 	      end
+ 	}
++	function note_netsync_revision_received(new_id, revision, certs, session_id)
++	    if (program_exists_in_path("ikiwiki-netsync-hook")) then
++	        execute("ikiwiki-netsync-hook", new_id)
++	    end
++	end
+ EOF
+diff --git a/IkiWiki/Wrapper.pm b/IkiWiki/Wrapper.pm
+index 2103ea5..cff718c 100644
+diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup
+index 1377315..0cbe27e 100644
+--- a/doc/ikiwiki.setup
++++ b/doc/ikiwiki.setup
+@@ -88,6 +88,16 @@ use IkiWiki::Setup::Standard {
+ 		#	# Enable mail notifications of commits.
+ 		#	notify => 1,
+ 		#},
++		#{
++		#	# The monotone netsync revision received wrapper.
++		#	# Note that you also need to install a lua
++		#	# hook into monotone to make this work
++		#	# see: http://ikiwiki.info/rcs/monotone/
++		#	wrapper => "/usr/local/bin/ikiwiki-netsync-hook",
++		#	wrappermode => "04755",
++		#	# Enable mail notifications of commits.
++		#	notify => 1,
++		#},
+ 	],
+ 
+ 	# Generate rss feeds for blogs?
+
diff --git a/doc/ikiwiki.setup b/doc/ikiwiki.setup index f808be2c2..059485d38 100644 --- a/doc/ikiwiki.setup +++ b/doc/ikiwiki.setup @@ -50,6 +50,8 @@ use IkiWiki::Setup::Standard { # Monotone stuff #rcs => "monotone", #mtnkey => "web\@machine.company.com", + #historyurl => "http://viewmtn.example.com/", + #diffurl => "http://viewmtn.example.com/revision/diff/[[r1]]/with/[[r2]]/[[file]]", # Set if you want the wiki to sync on update and commit. #mtnsync => 0, # The path to your workspace (defaults to the srcdir itself) diff --git a/doc/rcs/monotone.mdwn b/doc/rcs/monotone.mdwn index 1d3cd2bc4..f9f474291 100644 --- a/doc/rcs/monotone.mdwn +++ b/doc/rcs/monotone.mdwn @@ -1,15 +1,20 @@ -[monotone](http://monotone.ca/) is a distributed revision control system. -Ikiwiki supports storing a wiki in Monotone and editing it using the [[cgi]] interface. -It will use the Monotone logs to generate the [[RecentChanges]] page. +[Monotone](http://monotone.ca/) is a distributed revision control system. +Ikiwiki supports storing a wiki in a Monotone repository and editing it +using the [[cgi]] interface. It will use the Monotone logs to generate the +[[RecentChanges]] page. -The monotone support requires the Monotone perl module (from the contrib/ directory -in the monotone source) to be installed. In particular, it needs version 0.03 or higher of that module. +The monotone support in ikiwiki requires the Monotone perl module to be +installed. (It's available from the contrib/ directory in the monotone +source.) In particular, it needs version 0.03 or higher of that module. The module is available from the monotone source repository at: Monotone support works, but there are still a few minor missing bits (listed here so they are not forgotten): -* At the moment there are no links to display diffs between revisions. It shouldn't be hard to add links to a [ViewMTN](http://grahame.angrygoats.net/moinmoin/ViewMTN) instance, but it hasn't been done yet. +* The [[post-commit]] hook support is not yet completly implemented. * Documentation (this page) could be improved. -There is also a mismatch between the way Ikiwiki handles conflicts and the way Monotone handles conflicts. At present, if there is a conflict, then Ikiwiki will commit a revision with conflict markers before presenting it to the user. This is ugly, but there is no clean way to fix it at present. +There is also a mismatch between the way Ikiwiki handles conflicts and the +way Monotone handles conflicts. At present, if there is a conflict, then +Ikiwiki will commit a revision with conflict markers before presenting it +to the user. This is ugly, but there is no clean way to fix it at present. -- cgit v1.2.3