git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/3] git-svn: Add --add-author-from option.

From
apenwarr@gmail.com <apenwarr@gmail.com>
Date
Apr 16, 2008, 01:04 UTC
Message-ID
<1208307858-31039-2-git-send-email-apenwarr@gmail.com>
In-Reply-To
<1208307858-31039-1-git-send-email-apenwarr@gmail.com>
From: Avery Pennarun <apenwarr@versabanq.com>

This adds a From: line (based on the commit's author information) when sending to svn. It doesn't add if a From: or Signed-off-by: header already exists for that commit.

This, combined with --use-log-author, can retain the author field of commits
through a round trip from git to svn and back.
Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
---
 git-svn.perl |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl
index b864b54..b7ad898 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -82,6 +82,7 @@ my %fc_opts = ( 'follow-parent|follow!' => \$Git::SVN::_follow_parent,
 		'repack-flags|repack-args|repack-opts=s' =>
 		   \$Git::SVN::_repack_flags,
 		'use-log-author' => \$Git::SVN::_use_log_author,
+		'add-author-from' => \$Git::SVN::_add_author_from,
 		%remote_opts );
 
 my ($_trunk, $_tags, $_branches, $_stdlayout);
@@ -1009,17 +1010,28 @@ sub get_commit_entry {
 		my ($msg_fh, $ctx) = command_output_pipe('cat-file',
 		                                         $type, $treeish);
 		my $in_msg = 0;
+		my $author;
+		my $saw_from = 0;
 		while (<$msg_fh>) {
 			if (!$in_msg) {
 				$in_msg = 1 if (/^\s*$/);
+				$author = $1 if (/^author (.*>)/);
 			} elsif (/^git-svn-id: /) {
 				# skip this for now, we regenerate the
 				# correct one on re-fetch anyways
 				# TODO: set *:merge properties or like...
 			} else {
+				if (/^From:/ || /^Signed-off-by:/) {
+					$saw_from = 1;
+				}
 				print $log_fh $_ or croak $!;
 			}
 		}
+		if ($Git::SVN::_add_author_from && defined($author)
+		    && !$saw_from) {
+			print $log_fh "\nFrom: $author\n"
+			      or croak $!;
+		}
 		command_close_pipe($msg_fh, $ctx);
 	}
 	close $log_fh or croak $!;
@@ -1246,7 +1258,7 @@ use constant rev_map_fmt => 'NH40';
 use vars qw/$default_repo_id $default_ref_id $_no_metadata $_follow_parent
             $_repack $_repack_flags $_use_svm_props $_head
             $_use_svnsync_props $no_reuse_existing $_minimize_url
-	    $_use_log_author/;
+	    $_use_log_author $_add_author_from/;
 use Carp qw/croak/;
 use File::Path qw/mkpath/;
 use File::Copy qw/copy/;
-- 
1.5.4.3
Previous: apenwarr@gmail.comNext: apenwarr@gmail.com
Message 2 of 12 in “git-svn: add documentation for --use-log-author option.”
  1. 1/3 git-svn: add documentation for --use-log-author option.apenwarr@gmail.com, Apr 16, 2008
  2. 2/3 git-svn: Add --add-author-from option.apenwarr@gmail.com, Apr 16, 2008
  3. 3/3 git-svn: add documentation for --add-author-from option.apenwarr@gmail.com, Apr 16, 2008
  4. Junio C HamanoApr 16, 2008
  5. Avery PennarunApr 16, 2008
  6. Junio C HamanoApr 16, 2008
  7. Avery PennarunApr 16, 2008
  8. Richard QuirkApr 16, 2008
  9. Dmitry PotapovApr 16, 2008
  10. Sam VilainApr 16, 2008
  11. Avery PennarunApr 16, 2008
  12. Eric WongApr 17, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.