git-svn: teach find-rev to find near matches
When a single SVN repository is split into multiple Git repositories many SVN revisions will exist in only one of the Git repositories created. For some projects the only way to build a working artifact is to check out corresponding versions of various repositories, with no indication of what those are in the Git world - in the SVN world the revision numbers are sufficient. By adding "--before" to "git-svn find-rev" we can say "tell me what this repository looked like when that other repository looked like this": git svn find-rev --before \ r$(git --git-dir=/over/there.git svn find-rev HEAD) Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Eric Wong <normalperson@yhbt.net>
This commit is contained in:
12
git-svn.perl
12
git-svn.perl
@ -114,6 +114,7 @@ my ($_stdin, $_help, $_edit,
|
||||
$_message, $_file, $_branch_dest,
|
||||
$_template, $_shared,
|
||||
$_version, $_fetch_all, $_no_rebase, $_fetch_parent,
|
||||
$_before, $_after,
|
||||
$_merge, $_strategy, $_preserve_merges, $_dry_run, $_local,
|
||||
$_prefix, $_no_checkout, $_url, $_verbose,
|
||||
$_commit_url, $_tag, $_merge_info, $_interactive);
|
||||
@ -258,7 +259,8 @@ my %cmd = (
|
||||
} ],
|
||||
'find-rev' => [ \&cmd_find_rev,
|
||||
"Translate between SVN revision numbers and tree-ish",
|
||||
{} ],
|
||||
{ 'before' => \$_before,
|
||||
'after' => \$_after } ],
|
||||
'rebase' => [ \&cmd_rebase, "Fetch and rebase your working directory",
|
||||
{ 'merge|m|M' => \$_merge,
|
||||
'verbose|v' => \$_verbose,
|
||||
@ -1191,7 +1193,13 @@ sub cmd_find_rev {
|
||||
"$head history\n";
|
||||
}
|
||||
my $desired_revision = substr($revision_or_hash, 1);
|
||||
$result = $gs->rev_map_get($desired_revision, $uuid);
|
||||
if ($_before) {
|
||||
$result = $gs->find_rev_before($desired_revision, 1);
|
||||
} elsif ($_after) {
|
||||
$result = $gs->find_rev_after($desired_revision, 1);
|
||||
} else {
|
||||
$result = $gs->rev_map_get($desired_revision, $uuid);
|
||||
}
|
||||
} else {
|
||||
my (undef, $rev, undef) = cmt_metadata($revision_or_hash);
|
||||
$result = $rev;
|
||||
|
Reference in New Issue
Block a user