Skip to content

Commit

Permalink
cvsserver: change generation of CVS author names
Browse files Browse the repository at this point in the history
CVS username is generated from local part email address.
We take the whole local part but restrict the character set to the
Portable Filename Character Set, which is used for Unix login names
according to Single Unix Specification v3.

This will obviously report different usernames from existing repositories
for commits with the local part of the author e-mail address that contains
characters outside the PFCS.  Hopefully this won't break an old CVS
checkout from an earlier version of git-cvsserver, because the names are
always shown afresh to the CVS clients and not kept on the client side.

Signed-off-by: Fabian Emmes <fabian.emmes@rwth-aachen.de>
Signed-off-by: Lars Noschinski <lars@public.noschinski.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Fabian Emmes authored and Junio C Hamano committed Jan 5, 2009
1 parent 280514e commit d500a1e
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions git-cvsserver.perl
Original file line number Diff line number Diff line change
Expand Up @@ -2533,12 +2533,18 @@ sub open_blob_or_die
return $fh;
}

# Generate a CVS author name from Git author information, by taking
# the first eight characters of the user part of the email address.
# Generate a CVS author name from Git author information, by taking the local
# part of the email address and replacing characters not in the Portable
# Filename Character Set (see IEEE Std 1003.1-2001, 3.276) by underscores. CVS
# Login names are Unix login names, which should be restricted to this
# character set.
sub cvs_author
{
my $author_line = shift;
(my $author) = $author_line =~ /<([^>@]{1,8})/;
(my $author) = $author_line =~ /<([^@>]*)/;

$author =~ s/[^-a-zA-Z0-9_.]/_/g;
$author =~ s/^-/_/;

$author;
}
Expand Down

0 comments on commit d500a1e

Please sign in to comment.