This makes git-svn always issue the --first-parent option to git-log when trying to establish the "base" subversion branch, so the --first-parent option to git-svn is no longer needed. Instead a new option, --upstream <revspec>, is introduced. When this is specified the search for embedded git-svn-id lines in commit messages starts at the specified revision, if not specified the search starts at HEAD. Signed-off-by: Lars Hjemli <hjemli@xxxxxxxxx> --- Documentation/git-svn.txt | 10 +++++----- git-svn.perl | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index 42d7b82..2903777 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -317,15 +317,15 @@ This is only used with the 'dcommit' command. Print out the series of git arguments that would show which diffs would be committed to SVN. ---first-parent:: +--upstream=<revspec>:: This is only used with the 'dcommit', 'rebase', 'log', 'find-rev' and 'show-ignore' commands. -These commands tries to detect the upstream subversion branch by means of -the embedded 'git-svn-id' line in commit messages. When --first-parent is -specified, git-svn only follows the first parent of each commit, effectively -ignoring commits brought into the current branch through merge-operations. +These commands tries to detect the upstream subversion branch by traversing +the first parent of each commit (starting at HEAD), looking for an embedded +'git-svn-id' line in the commit messages. When --upstream is specified, +git-svn starts the traversal at the specified commit instead of HEAD. -- diff --git a/git-svn.perl b/git-svn.perl index d21eb7f..947a944 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -59,7 +59,7 @@ my ($_stdin, $_help, $_edit, $_template, $_shared, $_version, $_fetch_all, $_no_rebase, $_merge, $_strategy, $_dry_run, $_local, - $_prefix, $_no_checkout, $_verbose, $_first_parent); + $_prefix, $_no_checkout, $_verbose, $_upstream); $Git::SVN::_follow_parent = 1; my %remote_opts = ( 'username=s' => \$Git::SVN::Prompt::_username, 'config-dir=s' => \$Git::SVN::Ra::config_dir, @@ -119,14 +119,14 @@ my %cmd = ( 'dry-run|n' => \$_dry_run, 'fetch-all|all' => \$_fetch_all, 'no-rebase' => \$_no_rebase, - 'first-parent' => \$_first_parent, + 'upstream=s' => \$_upstream, %cmt_opts, %fc_opts } ], 'set-tree' => [ \&cmd_set_tree, "Set an SVN repository to a git tree-ish", { 'stdin|' => \$_stdin, %cmt_opts, %fc_opts, } ], 'show-ignore' => [ \&cmd_show_ignore, "Show svn:ignore listings", { 'revision|r=i' => \$_revision, - 'first-parent' => \$_first_parent + 'upstream=s' => \$_upstream } ], 'multi-fetch' => [ \&cmd_multi_fetch, "Deprecated alias for $0 fetch --all", @@ -148,11 +148,11 @@ my %cmd = ( 'authors-file|A=s' => \$_authors, 'color' => \$Git::SVN::Log::color, 'pager=s' => \$Git::SVN::Log::pager, - 'first-parent' => \$_first_parent + 'upstream=s' => \$_upstream } ], 'find-rev' => [ \&cmd_find_rev, "Translate between SVN revision numbers and tree-ish", { - 'first-parent' => \$_first_parent + 'upstream=s' => \$_upstream } ], 'rebase' => [ \&cmd_rebase, "Fetch and rebase your working directory", { 'merge|m|M' => \$_merge, @@ -160,7 +160,7 @@ my %cmd = ( 'strategy|s=s' => \$_strategy, 'local|l' => \$_local, 'fetch-all|all' => \$_fetch_all, - 'first-parent' => \$_first_parent, + 'upstream=s' => \$_upstream, %fc_opts } ], 'commit-diff' => [ \&cmd_commit_diff, 'Commit a diff between two trees', @@ -818,9 +818,9 @@ sub cmt_metadata { sub working_head_info { my ($head, $refs) = @_; - my @args = ('log', '--no-color'); - push @args, '--first-parent' if $_first_parent; - my ($fh, $ctx) = command_output_pipe(@args, $head); + my @args = ('log', '--no-color', '--first-parent'); + push @args, ($_upstream ? $_upstream : $head); + my ($fh, $ctx) = command_output_pipe(@args); my $hash; my %max; while (<$fh>) { -- 1.5.3.1.g0e33-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html