Fix web revert of a file deletion.
When reverting, an add is a remove, and a remove is an add.master
parent
bdcffa834a
commit
5cb0ecc000
|
@ -762,6 +762,7 @@ sub git_find_root {
|
||||||
}
|
}
|
||||||
|
|
||||||
sub git_parse_changes {
|
sub git_parse_changes {
|
||||||
|
my $reverted = shift;
|
||||||
my @changes = @_;
|
my @changes = @_;
|
||||||
|
|
||||||
my ($subdir, $rootdir) = git_find_root();
|
my ($subdir, $rootdir) = git_find_root();
|
||||||
|
@ -782,11 +783,11 @@ sub git_parse_changes {
|
||||||
$mode=$detail->{'mode_to'};
|
$mode=$detail->{'mode_to'};
|
||||||
}
|
}
|
||||||
elsif ($detail->{'status'} =~ /^[AM]+\d*$/) {
|
elsif ($detail->{'status'} =~ /^[AM]+\d*$/) {
|
||||||
$action="add";
|
$action= $reverted ? "remove" : "add";
|
||||||
$mode=$detail->{'mode_to'};
|
$mode=$detail->{'mode_to'};
|
||||||
}
|
}
|
||||||
elsif ($detail->{'status'} =~ /^[DAM]+\d*/) {
|
elsif ($detail->{'status'} =~ /^[DAM]+\d*/) {
|
||||||
$action="remove";
|
$action= $reverted ? "add" : "remove";
|
||||||
$mode=$detail->{'mode_from'};
|
$mode=$detail->{'mode_from'};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -845,7 +846,7 @@ sub rcs_receive () {
|
||||||
# it and only see changes in it.)
|
# it and only see changes in it.)
|
||||||
# The pre-receive hook already puts us in the right place.
|
# The pre-receive hook already puts us in the right place.
|
||||||
$git_dir=".";
|
$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;
|
$git_dir=undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -872,7 +873,7 @@ sub rcs_preprevert ($) {
|
||||||
error gettext("you are not allowed to revert a merge");
|
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;
|
$git_dir=undef;
|
||||||
return @ret;
|
return @ret;
|
||||||
|
|
|
@ -29,6 +29,7 @@ ikiwiki (3.20110716) UNRELEASED; urgency=low
|
||||||
is not installed. Closes: #637606
|
is not installed. Closes: #637606
|
||||||
* Promote RPC::XML to a Recommends, since it's used by auto-blog.setup.
|
* Promote RPC::XML to a Recommends, since it's used by auto-blog.setup.
|
||||||
Closes: #637603
|
Closes: #637603
|
||||||
|
* Fix web revert of a file deletion.
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Tue, 19 Jul 2011 11:22:52 -0400
|
-- Joey Hess <joeyh@debian.org> Tue, 19 Jul 2011 11:22:52 -0400
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,10 @@
|
||||||
After deleting a page with the "remove" button, it seems that the page deletion cannot be reverted using the "revert" icon in [[RecentChanges]].
|
After deleting a page with the "remove" button, it seems that the page deletion cannot be reverted using the "revert" icon in [[RecentChanges]].
|
||||||
It ironically says that "Error: ?$pagename does not exist". See [[http://ikiwiki.info/ikiwiki.cgi?rev=860c2c84d98ea0a38a4f91dacef6d4e09f6e6c2e&do=revert]]. [[JeanPrivat]]
|
It ironically says that "Error: ?$pagename does not exist". See [[http://ikiwiki.info/ikiwiki.cgi?rev=860c2c84d98ea0a38a4f91dacef6d4e09f6e6c2e&do=revert]]. [[JeanPrivat]]
|
||||||
|
|
||||||
|
> And it only gets that far if the remove plugin is enabled. Otherwise it
|
||||||
|
> complains that you cannot change $pagename.
|
||||||
|
>
|
||||||
|
> The root bug is that git's `rcs_preprevert` creates a structure that
|
||||||
|
> shows the change that was made (which includes a file deletion),
|
||||||
|
> not the change that would be made if it was reverted (which includes a
|
||||||
|
> file addition). [[Fixed|done]]. --[[Joey]]
|
||||||
|
|
Loading…
Reference in New Issue