diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2008-07-24 22:43:57 +0200 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2008-07-24 22:43:57 +0200 |
commit | 7538d356c8e7cd715c0a7109f84881487f853cfc (patch) | |
tree | 27bf40c7535df3e3f251c5afd9f262bb15640c3b /IkiWiki | |
parent | 1dec41278de8b0f33e1e87ec2f36cdd603528fad (diff) | |
download | ikiwiki-7538d356c8e7cd715c0a7109f84881487f853cfc.tar ikiwiki-7538d356c8e7cd715c0a7109f84881487f853cfc.tar.gz |
Support staging commands in bzr backend.
Diffstat (limited to 'IkiWiki')
-rw-r--r-- | IkiWiki/Rcs/bzr.pm | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/IkiWiki/Rcs/bzr.pm b/IkiWiki/Rcs/bzr.pm index e414e85d2..30d37a647 100644 --- a/IkiWiki/Rcs/bzr.pm +++ b/IkiWiki/Rcs/bzr.pm @@ -53,18 +53,24 @@ sub rcs_prepedit ($) { #{{{ return ""; } #}}} -sub rcs_commit ($$$;$$) { #{{{ - my ($file, $message, $rcstoken, $user, $ipaddr) = @_; +sub bzr_author ($$) { #{{{ + my ($user, $ipaddr) = @_; if (defined $user) { - $user = possibly_foolish_untaint($user); + return possibly_foolish_untaint($user); } elsif (defined $ipaddr) { - $user = "Anonymous from ".possibly_foolish_untaint($ipaddr); + return "Anonymous from ".possibly_foolish_untaint($ipaddr); } else { - $user = "Anonymous"; + return "Anonymous"; } +} #}}} + +sub rcs_commit ($$$;$$) { #{{{ + my ($file, $message, $rcstoken, $user, $ipaddr) = @_; + + $user = bzr_author($user, $ipaddr); $message = possibly_foolish_untaint($message); if (! length $message) { @@ -84,9 +90,22 @@ sub rcs_commit_staged ($$$) { # Commits all staged changes. Changes can be staged using rcs_add, # rcs_remove, and rcs_rename. my ($message, $user, $ipaddr)=@_; - - error("rcs_commit_staged not implemented for bzr"); # TODO -} + + $user = bzr_author($user, $ipaddr); + + $message = possibly_foolish_untaint($message); + if (! length $message) { + $message = "no message given"; + } + + my @cmdline = ("bzr", "commit", "--quiet", "-m", $message, "--author", $user, + $config{srcdir}); + if (system(@cmdline) != 0) { + warn "'@cmdline' failed: $!"; + } + + return undef; # success +} #}}} sub rcs_add ($) { # {{{ my ($file) = @_; @@ -100,13 +119,19 @@ sub rcs_add ($) { # {{{ sub rcs_remove ($) { # {{{ my ($file) = @_; - error("rcs_remove not implemented for bzr"); # TODO + my @cmdline = ("bzr", "rm", "--force", "--quiet", "$config{srcdir}/$file"); + if (system(@cmdline) != 0) { + warn "'@cmdline' failed: $!"; + } } #}}} sub rcs_rename ($$) { # {{{ my ($src, $dest) = @_; - error("rcs_rename not implemented for bzr"); # TODO + my @cmdline = ("bzr", "mv", "--quiet", "$config{srcdir}/$src", "$config{srcdir}/$dest"); + if (system(@cmdline) != 0) { + warn "'@cmdline' failed: $!"; + } } #}}} sub rcs_recentchanges ($) { #{{{ |