[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Monotone-devel] ikiwiki and monotone
From: |
Brian May |
Subject: |
[Monotone-devel] ikiwiki and monotone |
Date: |
Mon, 09 Oct 2006 13:27:32 +1000 |
User-agent: |
Gnus/5.110006 (No Gnus v0.6) XEmacs/21.4.19 (linux) |
Hello,
Anyone considered adding monotone support to ikiwiki?
http://ikiwiki.kitenet.net/
I have done the easy bits of such a plugin (see attachment, not
tested), but there are some difficult parts which are pushing my
(limited) knowledge of monotone to its limits. e.g.:
* How do you determine the creation date/time of a file? Or the
data/time of the first revision would probably be sufficient too.
sub rcs_getctime ($) {
# Optional, used to get the page creation time from the RCS.
error "getctime not implemented";
}
I believe this is a Unix format integer time (based on svn example).
* Recent changes:
sub rcs_recentchanges ($) {
# Examine the RCS history and generate a list of recent changes.
# The data structure returned for each change is:
# {
# user => # name of user who made the change,
# committype => # either "web" or the name of the rcs,
# when => # time when the change was made,
# message => [
# { line => "commit message line" },
# { line => "commit message line" },
# # etc,
# ],
# pages => [
# {
# page => # name of page changed,
# diffurl => # optional url to a diff showing
# # the changes,
# },
# # repeat for each page changed in this commit,
# ],
# }
my $num=shift;
my @ret;
}
My initial thought is to parse the output of "mtn log", but that seems
yucky, and prone to fail if the output format ever changes.
* I don't particular care about this one, but all the same, it is there:
sub rcs_notify () {
# This function is called when a change is committed to the wiki,
# and ikiwiki is running as a post-commit hook from the RCS.
# It should examine the repository to somehow determine what pages
# changed, and then send emails to users subscribed to those pages.
}
* conflicts and multi-heads: My current plan is to deal with this
manually at the command line. Perhaps not a good long time strategy,
but will keep me happy for now ;-).
I also filed a wishlist bug report at:
http://bugs.debian.org/391862
--
Brian May <address@hidden>
#!/usr/bin/perl
# Stubs for no revision control.
use warnings;
use strict;
use IkiWiki;
package IkiWiki;
sub rcs_update () {
# Update working directory to current version.
# (May be more complex for distributed RCS.)
if (-d "$config{srcdir}/_MTN") {
if (!chdir($config{srcdir})) {
warn("mtn update failed (chdir)\n");
} elsif (system("mtn", "update") != 0) {
warn("mtn update failed\n");
}
}
}
sub rcs_prepedit ($) {
# Prepares to edit a file under revision control. Returns a token
# that must be passed into rcs_commit when the file is ready
# for committing.
# The file is relative to the srcdir.
my $file=shift;
return ""
}
sub rcs_commit ($$$) {
# Tries to commit the page; returns undef on _success_ and
# a version of the page with the rcs's conflict markers on failure.
# The file is relative to the srcdir.
my $file=shift;
my $message=shift;
my $rcstoken=shift;
if (-d "$config{srcdir}/_MTN") {
if (!chdir($config{srcdir})) {
warn("mtn commit failed (chdir)\n");
} elsif (system("mtn", "commit", "$file") != 0) {
warn("mtn commit failed\n");
}
}
return undef # success
}
sub rcs_add ($) {
# Add a file. The filename is relative to the root of the srcdir.
my $file=shift;
if (-d "$config{srcdir}/_MTN") {
if (!chdir($config{srcdir})) {
warn("mtn add failed (chdir)\n");
} elsif (system("mtn", "add", "$config{srcdir}/$file") != 0) {
warn("mtn add failed\n");
}
}
}
sub rcs_recentchanges ($) {
# Examine the RCS history and generate a list of recent changes.
# The data structure returned for each change is:
# {
# user => # name of user who made the change,
# committype => # either "web" or the name of the rcs,
# when => # time when the change was made,
# message => [
# { line => "commit message line" },
# { line => "commit message line" },
# # etc,
# ],
# pages => [
# {
# page => # name of page changed,
# diffurl => # optional url to a diff showing
# # the changes,
# },
# # repeat for each page changed in this commit,
# ],
# }
my $num=shift;
my @ret;
}
sub rcs_notify () {
# This function is called when a change is committed to the wiki,
# and ikiwiki is running as a post-commit hook from the RCS.
# It should examine the repository to somehow determine what pages
# changed, and then send emails to users subscribed to those pages.
}
sub rcs_getctime ($) {
# Optional, used to get the page creation time from the RCS.
error "getctime not implemented";
}
1
- [Monotone-devel] ikiwiki and monotone,
Brian May <=
- Re: [Monotone-devel] ikiwiki and monotone, Brian May, 2006/10/10
- Re: [Monotone-devel] ikiwiki and monotone, Daniel Carosone, 2006/10/10
- Re: [Monotone-devel] ikiwiki and monotone, Brian May, 2006/10/11
- Re: [Monotone-devel] ikiwiki and monotone, hendrik, 2006/10/11
- Re: [Monotone-devel] ikiwiki and monotone, Daniel Carosone, 2006/10/11
- Re: [Monotone-devel] ikiwiki and monotone, hendrik, 2006/10/11
- [Monotone-devel] Re: ikiwiki and monotone, Bruce Stephens, 2006/10/11
- Re: [Monotone-devel] Re: ikiwiki and monotone, Daniel Carosone, 2006/10/11
- Re: [Monotone-devel] Re: ikiwiki and monotone, Brian May, 2006/10/12
- Re: [Monotone-devel] Re: ikiwiki and monotone, Daniel Carosone, 2006/10/12