return $conflict if defined $conflict;
}
- rcs_add($file);
- return rcs_commit_staged($message, $user, $ipaddr);
+ rcs_add($params{file});
+ return rcs_commit_staged(
+ message => $params{message},
+ session => $params{session},
+ );
}
- sub rcs_commit_staged ($$$) {
+ sub rcs_commit_staged (@) {
# Commits all staged changes. Changes can be staged using rcs_add,
# rcs_remove, and rcs_rename.
- my ($message, $user, $ipaddr)=@_;
-
- # Set the commit author and email to the web committer.
+ my %params=@_;
+
my %env=%ENV;
- if (defined $user || defined $ipaddr) {
- my $u=encode_utf8(defined $user ? $user : $ipaddr);
- # MITLOGIN This algorithm could be improved
- $ENV{GIT_AUTHOR_NAME}=IkiWiki::userinfo_get($u, "realname");
- $ENV{GIT_AUTHOR_EMAIL}="$u\@mit.edu";
+
+ if (defined $params{session}) {
+ # Set the commit author and email based on web session info.
+ my $u;
+ if (defined $params{session}->param("name")) {
+ $u=$params{session}->param("name");
+ }
+ elsif (defined $params{session}->remote_addr()) {
+ $u=$params{session}->remote_addr();
+ }
+ if (defined $u) {
+ $u=encode_utf8($u);
- $ENV{GIT_AUTHOR_NAME}=$u;
- $ENV{GIT_AUTHOR_EMAIL}="$u\@web";
++ # MITLOGIN This algorithm could be improved
++ $ENV{GIT_AUTHOR_NAME}=IkiWiki::userinfo_get($u, "realname");
++ $ENV{GIT_AUTHOR_EMAIL}="$u\@mit.edu";
+ }
}
- $message = IkiWiki::possibly_foolish_untaint($message);
+ $params{message} = IkiWiki::possibly_foolish_untaint($params{message});
my @opts;
- if ($message !~ /\S/) {
+ if ($params{message} !~ /\S/) {
# Force git to allow empty commit messages.
# (If this version of git supports it.)
my ($version)=`git --version` =~ /git version (.*)/;