{"thread":{"id":"16696","subject":"[PATCH 2/2] cvsserver: change generation of CVS author names","startedAt":"2008-12-12T15:24:08Z","lastAt":"2008-12-12T15:24:09Z","messageCount":2,"participants":["Fabian Emmes"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"97703","messageId":"1229095449-24755-1-git-send-email-fabian.emmes@rwth-aachen.de","threadId":"16696","inReplyTo":null,"subject":"[PATCH 1/2] cvsserver: add option to configure commit message","fromName":"Fabian Emmes","fromEmail":"fabian.emmes@rwth-aachen.de","sentAt":"2008-12-12T15:24:08Z","receivedAt":"2008-12-12T15:24:08Z","isPatch":true,"sender":{"key":"fabian.emmes@rwth-aachen.de","avatar":null},"body":"cvsserver annotates each commit message by \"via git-CVS emulator\". This is\nmade configurable via gitcvs.commitmsgannotation.\n\nSigned-off-by: Fabian Emmes <fabian.emmes@rwth-aachen.de>\nSigned-off-by: Lars Noschinski <lars@public.noschinski.de>\n---\n Documentation/config.txt |    4 ++++\n git-cvsserver.perl       |    8 +++++++-\n 2 files changed, 11 insertions(+), 1 deletions(-)\n\ndiff --git a/Documentation/config.txt b/Documentation/config.txt\nindex b233fe5..ee937fe 100644\n--- a/Documentation/config.txt\n+++ b/Documentation/config.txt\n@@ -723,6 +723,10 @@ gc.rerereunresolved::\n \tkept for this many days when 'git-rerere gc' is run.\n \tThe default is 15 days.  See linkgit:git-rerere[1].\n \n+gitcvs.commitmsgannotation::\n+\tAppend this string to each commit message. Set to empty string\n+\tto disable this feature. Defaults to \"via git-CVS emulator\".\n+\n gitcvs.enabled::\n \tWhether the CVS server interface is enabled for this repository.\n \tSee linkgit:git-cvsserver[1].\ndiff --git a/git-cvsserver.perl b/git-cvsserver.perl\nindex b0a805c..cbcaeb4 100755\n--- a/git-cvsserver.perl\n+++ b/git-cvsserver.perl\n@@ -1358,7 +1358,13 @@ sub req_ci\n     # write our commit message out if we have one ...\n     my ( $msg_fh, $msg_filename ) = tempfile( DIR => $TEMP_DIR );\n     print $msg_fh $state->{opt}{m};# if ( exists ( $state->{opt}{m} ) );\n-    print $msg_fh \"\\n\\nvia git-CVS emulator\\n\";\n+    if ( defined ( $cfg->{gitcvs}{commitmsgannotation} ) ) {\n+        if ($cfg->{gitcvs}{commitmsgannotation} !~ /^\\s*$/ ) {\n+            print $msg_fh \"\\n\\n\".$cfg->{gitcvs}{commitmsgannotation}.\"\\n\"\n+        }\n+    } else {\n+        print $msg_fh \"\\n\\nvia git-CVS emulator\\n\";\n+    }\n     close $msg_fh;\n \n     my $commithash = `git-commit-tree $treehash -p $parenthash < $msg_filename`;\n-- \n1.6.1.rc2.20.gde0d\n"},{"id":"97702","messageId":"1229095449-24755-2-git-send-email-fabian.emmes@rwth-aachen.de","threadId":"16696","inReplyTo":"1229095449-24755-1-git-send-email-fabian.emmes@rwth-aachen.de","subject":"[PATCH 2/2] cvsserver: change generation of CVS author names","fromName":"Fabian Emmes","fromEmail":"fabian.emmes@rwth-aachen.de","sentAt":"2008-12-12T15:24:09Z","receivedAt":"2008-12-12T15:24:09Z","isPatch":true,"sender":{"key":"fabian.emmes@rwth-aachen.de","avatar":null},"body":"CVS username is generated from local part email address.\nWe take the whole local part but restrict the character set to the\nPortable Filename Character Set, which is used for Unix login names\naccording to Single Unix Specification v3.\n\nSigned-off-by: Fabian Emmes <fabian.emmes@rwth-aachen.de>\nSigned-off-by: Lars Noschinski <lars@public.noschinski.de>\n---\n git-cvsserver.perl |   12 +++++++++---\n 1 files changed, 9 insertions(+), 3 deletions(-)\n\ndiff --git a/git-cvsserver.perl b/git-cvsserver.perl\nindex cbcaeb4..fef7faf 100755\n--- a/git-cvsserver.perl\n+++ b/git-cvsserver.perl\n@@ -2533,12 +2533,18 @@ sub open_blob_or_die\n     return $fh;\n }\n \n-# Generate a CVS author name from Git author information, by taking\n-# the first eight characters of the user part of the email address.\n+# Generate a CVS author name from Git author information, by taking the local\n+# part of the email address and replacing characters not in the Portable\n+# Filename Character Set (see IEEE Std 1003.1-2001, 3.276) by underscores. CVS\n+# Login names are Unix login names, which should be restricted to this\n+# character set.\n sub cvs_author\n {\n     my $author_line = shift;\n-    (my $author) = $author_line =~ /<([^>@]{1,8})/;\n+    (my $author) = $author_line =~ /<([^@>]*)/;\n+\n+    $author =~ s/[^-a-zA-Z0-9_.]/_/g;\n+    $author =~ s/^-/_/;\n \n     $author;\n }\n-- \n1.6.1.rc2.20.gde0d\n"}]}