git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] git-svnimport: support for partial imports
@ 2006-10-25 22:50 Sasha Khapyorsky
  2006-10-26  8:47 ` Karl Hasselström
  2006-10-31 22:50 ` Sasha Khapyorsky
  0 siblings, 2 replies; 7+ messages in thread
From: Sasha Khapyorsky @ 2006-10-25 22:50 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Matthias Urlichs

This adds support for partial svn imports. Let's assume that SVN
repository layout looks like:

  $trunk/path/to/our/project
  $branches/path/to/our/project
  $tags/path/to/our/project

, and we would like to import only tree under this specific
'path/to/our/project' and not whole tree under $trunk, $branches, etc..
Now we will be be able to do it by using '-P path/to/our/project' option
with git-svnimport.

Signed-off-by: Sasha Khapyorsky <sashak@voltaire.com>
---
 git-svnimport.perl |   29 +++++++++++++++++++++++++----
 1 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/git-svnimport.perl b/git-svnimport.perl
index f6eff8e..cbaa8ab 100755
--- a/git-svnimport.perl
+++ b/git-svnimport.perl
@@ -31,7 +31,7 @@ die "Need SVN:Core 1.2.1 or better" if $
 $ENV{'TZ'}="UTC";
 
 our($opt_h,$opt_o,$opt_v,$opt_u,$opt_C,$opt_i,$opt_m,$opt_M,$opt_t,$opt_T,
-    $opt_b,$opt_r,$opt_I,$opt_A,$opt_s,$opt_l,$opt_d,$opt_D,$opt_S,$opt_F);
+    $opt_b,$opt_r,$opt_I,$opt_A,$opt_s,$opt_l,$opt_d,$opt_D,$opt_S,$opt_F,$opt_P);
 
 sub usage() {
 	print STDERR <<END;
@@ -39,17 +39,19 @@ Usage: ${\basename $0}     # fetch/updat
        [-o branch-for-HEAD] [-h] [-v] [-l max_rev]
        [-C GIT_repository] [-t tagname] [-T trunkname] [-b branchname]
        [-d|-D] [-i] [-u] [-r] [-I ignorefilename] [-s start_chg]
-       [-m] [-M regex] [-A author_file] [-S] [-F] [SVN_URL]
+       [-m] [-M regex] [-A author_file] [-S] [-F] [-P project_name] [SVN_URL]
 END
 	exit(1);
 }
 
-getopts("A:b:C:dDFhiI:l:mM:o:rs:t:T:Suv") or usage();
+getopts("A:b:C:dDFhiI:l:mM:o:rs:t:T:SP:uv") or usage();
 usage if $opt_h;
 
 my $tag_name = $opt_t || "tags";
 my $trunk_name = $opt_T || "trunk";
 my $branch_name = $opt_b || "branches";
+my $project_name = $opt_P || "";
+$project_name = "/" . $project_name if ($project_name);
 
 @ARGV == 1 or @ARGV == 2 or usage();
 
@@ -427,6 +429,20 @@ sub get_ignore($$$$$) {
 	}
 }
 
+sub project_path($$)
+{
+	my ($path, $project) = @_;
+
+	$path = "/".$path unless ($path =~ m#^\/#) ;
+	return $1 if ($path =~ m#^$project\/(.*)$#);
+
+	$path =~ s#\.#\\\.#g;
+	$path =~ s#\+#\\\+#g;
+	return "/" if ($project =~ m#^$path.*$#);
+
+	return undef;
+}
+
 sub split_path($$) {
 	my($rev,$path) = @_;
 	my $branch;
@@ -446,7 +462,11 @@ sub split_path($$) {
 		print STDERR "$rev: Unrecognized path: $path\n" unless (defined $no_error{$path});
 		return ()
 	}
-	$path = "/" if $path eq "";
+	if ($path eq "") {
+		$path = "/";
+	} elsif ($project_name) {
+		$path = project_path($path, $project_name);
+	}
 	return ($branch,$path);
 }
 
@@ -898,6 +918,7 @@ sub commit_all {
 	while(my($path,$action) = each %$changed_paths) {
 		($branch,$path) = split_path($revision,$path);
 		next if not defined $branch;
+		next if not defined $path;
 		$done{$branch}{$path} = $action;
 	}
 	while(($branch,$changed_paths) = each %done) {
-- 
1.4.3.1.g9f9e

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svnimport: support for partial imports
  2006-10-25 22:50 [PATCH] git-svnimport: support for partial imports Sasha Khapyorsky
@ 2006-10-26  8:47 ` Karl Hasselström
  2006-10-26 10:31   ` Sasha Khapyorsky
  2006-10-31 22:50 ` Sasha Khapyorsky
  1 sibling, 1 reply; 7+ messages in thread
From: Karl Hasselström @ 2006-10-26  8:47 UTC (permalink / raw)
  To: Sasha Khapyorsky; +Cc: Junio C Hamano, git, Matthias Urlichs

On 2006-10-26 00:50:26 +0200, Sasha Khapyorsky wrote:

> This adds support for partial svn imports. Let's assume that SVN
> repository layout looks like:
>
>   $trunk/path/to/our/project
>   $branches/path/to/our/project
>   $tags/path/to/our/project
>
> , and we would like to import only tree under this specific
> 'path/to/our/project' and not whole tree under $trunk, $branches,
> etc.. Now we will be be able to do it by using '-P
> path/to/our/project' option with git-svnimport.

Isn't this already doable with "-T trunk/path/to/our/project -t
tags/path/to/our/project -b branches/path/to/our/project"?

-- 
Karl Hasselström, kha@treskal.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svnimport: support for partial imports
  2006-10-26  8:47 ` Karl Hasselström
@ 2006-10-26 10:31   ` Sasha Khapyorsky
  2006-10-26 10:54     ` Karl Hasselström
  0 siblings, 1 reply; 7+ messages in thread
From: Sasha Khapyorsky @ 2006-10-26 10:31 UTC (permalink / raw)
  To: Karl Hasselstr?m; +Cc: Junio C Hamano, git, Matthias Urlichs

On 10:47 Thu 26 Oct     , Karl Hasselstr?m wrote:
> On 2006-10-26 00:50:26 +0200, Sasha Khapyorsky wrote:
> 
> > This adds support for partial svn imports. Let's assume that SVN
> > repository layout looks like:
> >
> >   $trunk/path/to/our/project
> >   $branches/path/to/our/project
> >   $tags/path/to/our/project
> >
> > , and we would like to import only tree under this specific
> > 'path/to/our/project' and not whole tree under $trunk, $branches,
> > etc.. Now we will be be able to do it by using '-P
> > path/to/our/project' option with git-svnimport.
> 
> Isn't this already doable with "-T trunk/path/to/our/project -t
> tags/path/to/our/project -b branches/path/to/our/project"?

In such case git-svnimport will not be able to resolve branches and
tags names - note that actual SVN paths are:

  branches/<branch-name>/path/to/our/project
  tags/<tag-name>/path/to/our/project


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svnimport: support for partial imports
  2006-10-26 10:31   ` Sasha Khapyorsky
@ 2006-10-26 10:54     ` Karl Hasselström
  0 siblings, 0 replies; 7+ messages in thread
From: Karl Hasselström @ 2006-10-26 10:54 UTC (permalink / raw)
  To: Sasha Khapyorsky; +Cc: Junio C Hamano, git, Matthias Urlichs

On 2006-10-26 12:31:20 +0200, Sasha Khapyorsky wrote:

> On 10:47 Thu 26 Oct, Karl Hasselström wrote:

> > Isn't this already doable with "-T trunk/path/to/our/project -t
> > tags/path/to/our/project -b branches/path/to/our/project"?
>
> In such case git-svnimport will not be able to resolve branches and
> tags names - note that actual SVN paths are:
>
>   branches/<branch-name>/path/to/our/project
>   tags/<tag-name>/path/to/our/project

Aahh, right. I didn't think of that.

-- 
Karl Hasselström, kha@treskal.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svnimport: support for partial imports
  2006-10-25 22:50 [PATCH] git-svnimport: support for partial imports Sasha Khapyorsky
  2006-10-26  8:47 ` Karl Hasselström
@ 2006-10-31 22:50 ` Sasha Khapyorsky
  2006-10-31 23:48   ` Junio C Hamano
  1 sibling, 1 reply; 7+ messages in thread
From: Sasha Khapyorsky @ 2006-10-31 22:50 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Matthias Urlichs

On 00:50 Thu 26 Oct     , Sasha Khapyorsky wrote:
> This adds support for partial svn imports. Let's assume that SVN
> repository layout looks like:
> 
>   $trunk/path/to/our/project
>   $branches/path/to/our/project
>   $tags/path/to/our/project
> 
> , and we would like to import only tree under this specific
> 'path/to/our/project' and not whole tree under $trunk, $branches, etc..
> Now we will be be able to do it by using '-P path/to/our/project' option
> with git-svnimport.
> 
> Signed-off-by: Sasha Khapyorsky <sashak@voltaire.com>

Any news about status of this patch?


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svnimport: support for partial imports
  2006-10-31 22:50 ` Sasha Khapyorsky
@ 2006-10-31 23:48   ` Junio C Hamano
  2006-11-01  0:51     ` Sasha Khapyorsky
  0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2006-10-31 23:48 UTC (permalink / raw)
  To: Sasha Khapyorsky; +Cc: git, Matthias Urlichs

Sasha Khapyorsky <sashak@voltaire.com> writes:

> On 00:50 Thu 26 Oct     , Sasha Khapyorsky wrote:
>> This adds support for partial svn imports. Let's assume that SVN
>> repository layout looks like:
>> 
>>   $trunk/path/to/our/project
>>   $branches/path/to/our/project
>>   $tags/path/to/our/project
>> 
>> , and we would like to import only tree under this specific
>> 'path/to/our/project' and not whole tree under $trunk, $branches, etc..
>> Now we will be be able to do it by using '-P path/to/our/project' option
>> with git-svnimport.
>> 
>> Signed-off-by: Sasha Khapyorsky <sashak@voltaire.com>
>
> Any news about status of this patch?

Somebody mentioned this duplicates something that can be already
done, and I saw you refuted that.  At that point I thought then
it would be Ok to add, and then I forgot about it.  Sorry.

Will apply unless somebody objects immediately ;-).

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svnimport: support for partial imports
  2006-10-31 23:48   ` Junio C Hamano
@ 2006-11-01  0:51     ` Sasha Khapyorsky
  0 siblings, 0 replies; 7+ messages in thread
From: Sasha Khapyorsky @ 2006-11-01  0:51 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Matthias Urlichs

On 15:48 Tue 31 Oct     , Junio C Hamano wrote:
> Sasha Khapyorsky <sashak@voltaire.com> writes:
> 
> > On 00:50 Thu 26 Oct     , Sasha Khapyorsky wrote:
> >> This adds support for partial svn imports. Let's assume that SVN
> >> repository layout looks like:
> >> 
> >>   $trunk/path/to/our/project
> >>   $branches/path/to/our/project
> >>   $tags/path/to/our/project
> >> 
> >> , and we would like to import only tree under this specific
> >> 'path/to/our/project' and not whole tree under $trunk, $branches, etc..
> >> Now we will be be able to do it by using '-P path/to/our/project' option
> >> with git-svnimport.
> >> 
> >> Signed-off-by: Sasha Khapyorsky <sashak@voltaire.com>
> >
> > Any news about status of this patch?
> 
> Somebody mentioned this duplicates something that can be already
> done, and I saw you refuted that.  At that point I thought then
> it would be Ok to add, and then I forgot about it.  Sorry.

No problem.


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-11-01  0:45 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-25 22:50 [PATCH] git-svnimport: support for partial imports Sasha Khapyorsky
2006-10-26  8:47 ` Karl Hasselström
2006-10-26 10:31   ` Sasha Khapyorsky
2006-10-26 10:54     ` Karl Hasselström
2006-10-31 22:50 ` Sasha Khapyorsky
2006-10-31 23:48   ` Junio C Hamano
2006-11-01  0:51     ` Sasha Khapyorsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).