use warnings;
use strict;
use IkiWiki;
+use IkiWiki::UserInfo;
use Encode;
use open qw{:utf8 :std};
}
if (defined $u) {
$u=encode_utf8($u);
- $ENV{GIT_AUTHOR_NAME}=$u;
+ # MITLOGIN This algorithm could be improved
+ $ENV{GIT_AUTHOR_NAME}=IkiWiki::userinfo_get($u, "realname");
}
if (defined $params{session}->param("nickname")) {
$u=encode_utf8($params{session}->param("nickname"));
$u=~s/[^-_0-9[:alnum:]]+//g;
}
if (defined $u) {
- $ENV{GIT_AUTHOR_EMAIL}="$u\@web";
+ $ENV{GIT_AUTHOR_EMAIL}="$u\@mit.edu";
}
}
}
sub git_parse_changes {
+ my $reverted = shift;
my @changes = @_;
my ($subdir, $rootdir) = git_find_root();
$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 {
# 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;
}
# in order to see all changes.
my ($subdir, $rootdir) = git_find_root();
$git_dir=$rootdir;
- my @commits=git_commit_info($sha1, 1);
- $git_dir=undef;
+ my @commits=git_commit_info($sha1, 1);
if (! @commits) {
error "unknown commit"; # just in case
}
error gettext("you are not allowed to revert a merge");
}
- return git_parse_changes(@commits);
+ my @ret=git_parse_changes(1, @commits);
+
+ $git_dir=undef;
+ return @ret;
}
sub rcs_revert ($) {