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>
			
			
				maint
			
			
		
							parent
							
								
									9012f571b4
								
							
						
					
					
						commit
						2934a484fd
					
				|  | @ -346,6 +346,16 @@ Any other arguments are passed directly to 'git log' | |||
| 	corresponding git commit hash (this can optionally be followed by a | ||||
| 	tree-ish to specify which branch should be searched).  When given a | ||||
| 	tree-ish, returns the corresponding SVN revision number. | ||||
| + | ||||
| --before;; | ||||
| 	Don't require an exact match if given an SVN revision, instead find | ||||
| 	the commit corresponding to the state of the SVN repository (on the | ||||
| 	current branch) at the specified revision. | ||||
| + | ||||
| --after;; | ||||
| 	Don't require an exact match if given an SVN revision; if there is | ||||
| 	not an exact match return the closest match searching forward in the | ||||
| 	history. | ||||
|  | ||||
| 'set-tree':: | ||||
| 	You should consider using 'dcommit' instead of this command. | ||||
|  |  | |||
							
								
								
									
										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; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 John Keeping
						John Keeping