diff options
author | Michael J Gruber <git@drmicha.warpmail.net> | 2015-09-10 14:32:13 +0200 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2015-09-10 17:59:38 +0000 |
commit | f7c6de0ea1bd5722a1181c6279676c6831b38a34 (patch) | |
tree | ebe3ce2622af7758edd4d3bfab1532b87795b840 | |
parent | 7a2c4af7a82eebf2ed0e60a2b36c31e70c619264 (diff) | |
download | git-f7c6de0ea1bd5722a1181c6279676c6831b38a34.tar.gz |
git-svn: parse authors file more leniently
Currently, git-svn parses an authors file using the perl regex
/^(.+?|\(no author\))\s*=\s*(.+?)\s*<(.+)>\s*$/
in order to extract svn user name, real name and e-mail.
This does not match an empty e-mail field like "<>". On the other hand,
the output of an authors-prog is parsed with the perl regex
/^\s*(.+?)\s*<(.*)>\s*$/
in order to extract real name and e-mail.
So, specifying a trivial file grep such as
grep "$1" /tmp/authors | head -n 1 | cut -d'=' -f2 | cut -c'2-'
as the authors prog gives different results compared to specifying
/tmp/authors as the authors file directly.
Instead, make git svn uses the perl regex
/^(.+?|\(no author\))\s*=\s*(.+?)\s*<(.*)>\s*$/
for parsing the authors file so that the same (slightly more lenient)
regex is used in both cases.
Reported-by: Till Schäfer <till2.schaefer@tu-dortmund.de>
Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
-rwxr-xr-x | git-svn.perl | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/git-svn.perl b/git-svn.perl index 36f7240c99..fa5f253065 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -1924,7 +1924,7 @@ sub load_authors { my $log = $cmd eq 'log'; while (<$authors>) { chomp; - next unless /^(.+?|\(no author\))\s*=\s*(.+?)\s*<(.+)>\s*$/; + next unless /^(.+?|\(no author\))\s*=\s*(.+?)\s*<(.*)>\s*$/; my ($user, $name, $email) = ($1, $2, $3); if ($log) { $Git::SVN::Log::rusers{"$name <$email>"} = $user; |