Show 67 quoted lines
> Signed-off-by: Adam Roben <aroben@apple.com>
> ---
> 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
>