diff options
author | Avery Pennarun <apenwarr@versabanq.com> | 2008-04-15 21:04:17 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-05-04 17:42:29 -0700 |
commit | 6aa9ba14a0259d86eec2077308358caf891c162a (patch) | |
tree | ef82fe7bf216d2ce87a84a0b0ddabd6e271f0882 /git-svn.perl | |
parent | de451dff15a3404e1c7025ebf72c70e624cf2f5c (diff) | |
download | git-6aa9ba14a0259d86eec2077308358caf891c162a.tar.gz git-6aa9ba14a0259d86eec2077308358caf891c162a.tar.xz |
git-svn: Add --add-author-from option.
This option adds a From: line (based on the commit's author information)
at the beginning of the body of the commit log message when sending to
svn, if a From: or Signed-off-by: header does not exist.
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-x | git-svn.perl | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/git-svn.perl b/git-svn.perl index b70f8efaa..262acd9b3 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); @@ -1011,17 +1012,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 $!; @@ -1248,7 +1260,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/; |