Adam Roben <aroben@xxxxxxxxx> wrote: > This patch adds a new 'find-rev' command to git-svn that lets you easily > translate between SVN revision numbers and git tree-ish. Looks useful. Acked-by: Eric Wong <normalperson@xxxxxxxx> > Signed-off-by: Adam Roben <aroben@xxxxxxxxx> > --- > Documentation/git-svn.txt | 5 +++++ > git-svn.perl | 24 ++++++++++++++++++++++++ > 2 files changed, 29 insertions(+), 0 deletions(-) > > diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt > index a0d34e0..a35b9de 100644 > --- a/Documentation/git-svn.txt > +++ b/Documentation/git-svn.txt > @@ -159,6 +159,11 @@ New features: > Any other arguments are passed directly to `git log' > > -- > +'find-rev':: > + When given an SVN revision number of the form 'rN', returns the > + corresponding git commit hash. When given a tree-ish, returns the > + corresponding SVN revision number. > + > 'set-tree':: > You should consider using 'dcommit' instead of this command. > Commit specified commit or tree objects to SVN. This relies on > diff --git a/git-svn.perl b/git-svn.perl > index 7b5f8ab..4be8576 100755 > --- a/git-svn.perl > +++ b/git-svn.perl > @@ -141,6 +141,8 @@ my %cmd = ( > 'color' => \$Git::SVN::Log::color, > 'pager=s' => \$Git::SVN::Log::pager, > } ], > + 'find-rev' => [ \&cmd_find_rev, "Translate between SVN revision numbers and tree-ish", > + { } ], > 'rebase' => [ \&cmd_rebase, "Fetch and rebase your working directory", > { 'merge|m|M' => \$_merge, > 'verbose|v' => \$_verbose, > @@ -428,6 +430,28 @@ sub cmd_dcommit { > command_noisy(@finish, $gs->refname); > } > > +sub cmd_find_rev { > + my $revision_or_hash = shift; > + my $result; > + if ($revision_or_hash =~ /^r\d+$/) { > + my $desired_revision = substr($revision_or_hash, 1); > + my ($fh, $ctx) = command_output_pipe('rev-list', 'HEAD'); > + while (my $hash = <$fh>) { > + chomp($hash); > + my (undef, $rev, undef) = cmt_metadata($hash); > + if ($rev && $rev eq $desired_revision) { > + $result = $hash; > + last; > + } > + } > + command_close_pipe($fh, $ctx); > + } else { > + my (undef, $rev, undef) = cmt_metadata($revision_or_hash); > + $result = $rev; > + } > + print "$result\n" if $result; > +} > + > sub cmd_rebase { > command_noisy(qw/update-index --refresh/); > my ($url, $rev, $uuid, $gs) = working_head_info('HEAD'); > -- > 1.5.2.rc0.75.g959b-dirty > -- Eric Wong - 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