diff options
author | Joey Hess <joey@kitenet.net> | 2011-09-05 14:51:49 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2011-09-05 14:51:49 -0400 |
commit | 5cb0ecc00087d716a61dd42d7598a6fb78d60b7b (patch) | |
tree | 55c4fc8274c511d7bb32e44919f5224f4fcdaa9c /IkiWiki | |
parent | bdcffa834acf82581972e482745cf6da50a20e18 (diff) | |
download | ikiwiki-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')
-rw-r--r-- | IkiWiki/Plugin/git.pm | 9 |
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; |