aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/git.pm
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2011-09-05 14:51:49 -0400
committerJoey Hess <joey@kitenet.net>2011-09-05 14:51:49 -0400
commit5cb0ecc00087d716a61dd42d7598a6fb78d60b7b (patch)
tree55c4fc8274c511d7bb32e44919f5224f4fcdaa9c /IkiWiki/Plugin/git.pm
parentbdcffa834acf82581972e482745cf6da50a20e18 (diff)
downloadikiwiki-5cb0ecc00087d716a61dd42d7598a6fb78d60b7b.tar
ikiwiki-5cb0ecc00087d716a61dd42d7598a6fb78d60b7b.tar.gz
Fix web revert of a file deletion.
When reverting, an add is a remove, and a remove is an add.
Diffstat (limited to 'IkiWiki/Plugin/git.pm')
-rw-r--r--IkiWiki/Plugin/git.pm9
1 files changed, 5 insertions, 4 deletions
diff --git a/IkiWiki/Plugin/git.pm b/IkiWiki/Plugin/git.pm
index cf7fbe9b7..3117e4291 100644
--- a/IkiWiki/Plugin/git.pm
+++ b/IkiWiki/Plugin/git.pm
@@ -762,6 +762,7 @@ sub git_find_root {
}
sub git_parse_changes {
+ my $reverted = shift;
my @changes = @_;
my ($subdir, $rootdir) = git_find_root();
@@ -782,11 +783,11 @@ sub git_parse_changes {
$mode=$detail->{'mode_to'};
}
elsif ($detail->{'status'} =~ /^[AM]+\d*$/) {
- $action="add";
+ $action= $reverted ? "remove" : "add";
$mode=$detail->{'mode_to'};
}
elsif ($detail->{'status'} =~ /^[DAM]+\d*/) {
- $action="remove";
+ $action= $reverted ? "add" : "remove";
$mode=$detail->{'mode_from'};
}
else {
@@ -845,7 +846,7 @@ sub rcs_receive () {
# it and only see changes in it.)
# The pre-receive hook already puts us in the right place.
$git_dir=".";
- push @rets, git_parse_changes(git_commit_info($oldrev."..".$newrev));
+ push @rets, git_parse_changes(0, git_commit_info($oldrev."..".$newrev));
$git_dir=undef;
}
@@ -872,7 +873,7 @@ sub rcs_preprevert ($) {
error gettext("you are not allowed to revert a merge");
}
- my @ret=git_parse_changes(@commits);
+ my @ret=git_parse_changes(1, @commits);
$git_dir=undef;
return @ret;