git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* git-svn and svnsync
@ 2008-10-16  8:07 Andriy Gapon
  2008-11-24 12:56 ` Andriy Gapon
  0 siblings, 1 reply; 4+ messages in thread
From: Andriy Gapon @ 2008-10-16  8:07 UTC (permalink / raw)
  To: git


I did the following:
1. mirror svn repository using svnsync
2. clone the mirror with git-svn --use-svnsync-props and some tweaking[*]
3. run git svn info in the clone
4. get error "Unable to determine upstream SVN information from working 
tree history"

git svn log and git svn rebase do not work either.
git log does work.

I have git version 1.6.0.2 (from FreeBSD ports).
[*] About the tweaking - I manually massaged config file to get the 
branches I was interested in, so .git/config is this:
[core]
         repositoryformatversion = 0
         filemode = true
         bare = false
         logallrefupdates = true
[svn-remote "svn"]
         useSvnsyncProps = 1
         url = file:///system/devel/svn/base
         fetch = head:refs/remotes/trunk
         fetch = stable/6:refs/remotes/stable_6
         fetch = stable/7:refs/remotes/stable_7
         fetch = releng/6.3:refs/remotes/releng_6_3
         fetch = releng/6.4:refs/remotes/releng_6_4
         fetch = releng/7.0:refs/remotes/releng_7_0
         fetch = release/6.3.0:refs/remotes/release_6_3_0
         fetch = release/7.0.0:refs/remotes/release_7_0_0

This is .git/svn/.metadata:
; This file is used internally by git-svn
; You should not have to edit it
[svn-remote "svn"]
         reposRoot = file:///system/devel/svn/base
         uuid = ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
         svnsync-uuid = ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
         svnsync-url = svn://svn.freebsd.org/base

So you can see the original svn repository URL.

git log reports svn info like the following:
git-svn-id: svn://svn.freebsd.org/base/stable/7@183898 
ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f

It seems that the problem is that the code in find_by_url() and/or 
read_all_remotes() subroutines (in git-svn.perl) are not aware of 
svnsync and do not realize an URL in logs and URL in svn-remote are 
different.
BTW, I see that there is some special svm logic in read_all_remotes.

Thank you very much for any help in advance.

-- 
Andriy Gapon

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

* Re: git-svn and svnsync
  2008-10-16  8:07 git-svn and svnsync Andriy Gapon
@ 2008-11-24 12:56 ` Andriy Gapon
  2008-11-24 17:15   ` Michael J Gruber
  0 siblings, 1 reply; 4+ messages in thread
From: Andriy Gapon @ 2008-11-24 12:56 UTC (permalink / raw)
  To: git

on 16/10/2008 11:07 Andriy Gapon said the following:
> 
> I did the following:
> 1. mirror svn repository using svnsync
> 2. clone the mirror with git-svn --use-svnsync-props and some tweaking[*]
> 3. run git svn info in the clone
> 4. get error "Unable to determine upstream SVN information from working
> tree history"
> 
> git svn log and git svn rebase do not work either.
> git log does work.
> 
> I have git version 1.6.0.2 (from FreeBSD ports).
> [*] About the tweaking - I manually massaged config file to get the
> branches I was interested in, so .git/config is this:
> [core]
>         repositoryformatversion = 0
>         filemode = true
>         bare = false
>         logallrefupdates = true
> [svn-remote "svn"]
>         useSvnsyncProps = 1
>         url = file:///system/devel/svn/base
>         fetch = head:refs/remotes/trunk
>         fetch = stable/6:refs/remotes/stable_6
>         fetch = stable/7:refs/remotes/stable_7
>         fetch = releng/6.3:refs/remotes/releng_6_3
>         fetch = releng/6.4:refs/remotes/releng_6_4
>         fetch = releng/7.0:refs/remotes/releng_7_0
>         fetch = release/6.3.0:refs/remotes/release_6_3_0
>         fetch = release/7.0.0:refs/remotes/release_7_0_0
> 
> This is .git/svn/.metadata:
> ; This file is used internally by git-svn
> ; You should not have to edit it
> [svn-remote "svn"]
>         reposRoot = file:///system/devel/svn/base
>         uuid = ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
>         svnsync-uuid = ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
>         svnsync-url = svn://svn.freebsd.org/base
> 
> So you can see the original svn repository URL.
> 
> git log reports svn info like the following:
> git-svn-id: svn://svn.freebsd.org/base/stable/7@183898
> ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
> 
> It seems that the problem is that the code in find_by_url() and/or
> read_all_remotes() subroutines (in git-svn.perl) are not aware of
> svnsync and do not realize an URL in logs and URL in svn-remote are
> different.
> BTW, I see that there is some special svm logic in read_all_remotes.
> 
> Thank you very much for any help in advance.
> 

Anyone?
I wonder if this is my local problem/misconfiguration or an issue with
git-svn.


-- 
Andriy Gapon

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

* Re: git-svn and svnsync
  2008-11-24 12:56 ` Andriy Gapon
@ 2008-11-24 17:15   ` Michael J Gruber
  2008-11-24 17:33     ` Andriy Gapon
  0 siblings, 1 reply; 4+ messages in thread
From: Michael J Gruber @ 2008-11-24 17:15 UTC (permalink / raw)
  To: Andriy Gapon; +Cc: git

Andriy Gapon venit, vidit, dixit 24.11.2008 13:56:
> on 16/10/2008 11:07 Andriy Gapon said the following:
>> I did the following:
>> 1. mirror svn repository using svnsync
>> 2. clone the mirror with git-svn --use-svnsync-props and some tweaking[*]
>> 3. run git svn info in the clone
>> 4. get error "Unable to determine upstream SVN information from working
>> tree history"
>>
>> git svn log and git svn rebase do not work either.
>> git log does work.
>>
>> I have git version 1.6.0.2 (from FreeBSD ports).
>> [*] About the tweaking - I manually massaged config file to get the
>> branches I was interested in, so .git/config is this:
>> [core]
>>         repositoryformatversion = 0
>>         filemode = true
>>         bare = false
>>         logallrefupdates = true
>> [svn-remote "svn"]
>>         useSvnsyncProps = 1
>>         url = file:///system/devel/svn/base
>>         fetch = head:refs/remotes/trunk
>>         fetch = stable/6:refs/remotes/stable_6
>>         fetch = stable/7:refs/remotes/stable_7
>>         fetch = releng/6.3:refs/remotes/releng_6_3
>>         fetch = releng/6.4:refs/remotes/releng_6_4
>>         fetch = releng/7.0:refs/remotes/releng_7_0
>>         fetch = release/6.3.0:refs/remotes/release_6_3_0
>>         fetch = release/7.0.0:refs/remotes/release_7_0_0
>>
>> This is .git/svn/.metadata:
>> ; This file is used internally by git-svn
>> ; You should not have to edit it
>> [svn-remote "svn"]
>>         reposRoot = file:///system/devel/svn/base
>>         uuid = ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
>>         svnsync-uuid = ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
>>         svnsync-url = svn://svn.freebsd.org/base
>>
>> So you can see the original svn repository URL.
>>
>> git log reports svn info like the following:
>> git-svn-id: svn://svn.freebsd.org/base/stable/7@183898
>> ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
>>
>> It seems that the problem is that the code in find_by_url() and/or
>> read_all_remotes() subroutines (in git-svn.perl) are not aware of
>> svnsync and do not realize an URL in logs and URL in svn-remote are
>> different.
>> BTW, I see that there is some special svm logic in read_all_remotes.
>>
>> Thank you very much for any help in advance.
>>
> 
> Anyone?
> I wonder if this is my local problem/misconfiguration or an issue with
> git-svn.

Same happens here, so it's a general issue ;)

I think I encountered that before and ended up experimenting with
git-svn cloning from a svnsync source until I found the final config,
with which I git-svn cloned directly from upstream, so that I had to
wait only twice.

Michael

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

* Re: git-svn and svnsync
  2008-11-24 17:15   ` Michael J Gruber
@ 2008-11-24 17:33     ` Andriy Gapon
  0 siblings, 0 replies; 4+ messages in thread
From: Andriy Gapon @ 2008-11-24 17:33 UTC (permalink / raw)
  To: Michael J Gruber; +Cc: git

[-- Attachment #1: Type: text/plain, Size: 2870 bytes --]

on 24/11/2008 19:15 Michael J Gruber said the following:
> Andriy Gapon venit, vidit, dixit 24.11.2008 13:56:
>> on 16/10/2008 11:07 Andriy Gapon said the following:
>>> I did the following:
>>> 1. mirror svn repository using svnsync
>>> 2. clone the mirror with git-svn --use-svnsync-props and some tweaking[*]
>>> 3. run git svn info in the clone
>>> 4. get error "Unable to determine upstream SVN information from working
>>> tree history"
>>>
>>> git svn log and git svn rebase do not work either.
>>> git log does work.
>>>
>>> I have git version 1.6.0.2 (from FreeBSD ports).
>>> [*] About the tweaking - I manually massaged config file to get the
>>> branches I was interested in, so .git/config is this:
>>> [core]
>>>         repositoryformatversion = 0
>>>         filemode = true
>>>         bare = false
>>>         logallrefupdates = true
>>> [svn-remote "svn"]
>>>         useSvnsyncProps = 1
>>>         url = file:///system/devel/svn/base
>>>         fetch = head:refs/remotes/trunk
>>>         fetch = stable/6:refs/remotes/stable_6
>>>         fetch = stable/7:refs/remotes/stable_7
>>>         fetch = releng/6.3:refs/remotes/releng_6_3
>>>         fetch = releng/6.4:refs/remotes/releng_6_4
>>>         fetch = releng/7.0:refs/remotes/releng_7_0
>>>         fetch = release/6.3.0:refs/remotes/release_6_3_0
>>>         fetch = release/7.0.0:refs/remotes/release_7_0_0
>>>
>>> This is .git/svn/.metadata:
>>> ; This file is used internally by git-svn
>>> ; You should not have to edit it
>>> [svn-remote "svn"]
>>>         reposRoot = file:///system/devel/svn/base
>>>         uuid = ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
>>>         svnsync-uuid = ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
>>>         svnsync-url = svn://svn.freebsd.org/base
>>>
>>> So you can see the original svn repository URL.
>>>
>>> git log reports svn info like the following:
>>> git-svn-id: svn://svn.freebsd.org/base/stable/7@183898
>>> ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
>>>
>>> It seems that the problem is that the code in find_by_url() and/or
>>> read_all_remotes() subroutines (in git-svn.perl) are not aware of
>>> svnsync and do not realize an URL in logs and URL in svn-remote are
>>> different.
>>> BTW, I see that there is some special svm logic in read_all_remotes.
>>>
>>> Thank you very much for any help in advance.
>>>
>> Anyone?
>> I wonder if this is my local problem/misconfiguration or an issue with
>> git-svn.
> 
> Same happens here, so it's a general issue ;)
> 
> I think I encountered that before and ended up experimenting with
> git-svn cloning from a svnsync source until I found the final config,
> with which I git-svn cloned directly from upstream, so that I had to
> wait only twice.

I hacked together an ugly patch that replaces svm support with snvsync
support. This works for me, not sure if it will be useful in general.


-- 
Andriy Gapon

[-- Attachment #2: git-svn.patch --]
[-- Type: text/plain, Size: 1113 bytes --]

--- git-svn	2008-11-11 10:20:38.714620442 +0200
+++ git-svn	2008-11-07 17:10:49.245681213 +0200
@@ -1433,7 +1433,7 @@
 sub read_all_remotes {
 	my $r = {};
 	my $use_svm_props = eval { command_oneline(qw/config --bool
-	    svn.useSvmProps/) };
+	    svn.useSvnsyncProps/) };
 	$use_svm_props = $use_svm_props eq 'true' if $use_svm_props;
 	foreach (grep { s/^svn-remote\.// } command(qw/config -l/)) {
 		if (m!^(.+)\.fetch=\s*(.*)\s*:\s*(.+)\s*$!) {
@@ -1445,7 +1445,7 @@
 			$local_ref =~ s{^/}{};
 			$r->{$remote}->{fetch}->{$local_ref} = $remote_ref;
 			$r->{$remote}->{svm} = {} if $use_svm_props;
-		} elsif (m!^(.+)\.usesvmprops=\s*(.*)\s*$!) {
+		} elsif (m!^(.+)\.usesvnsyncprops=\s*(.*)\s*$!) {
 			$r->{$1}->{svm} = {};
 		} elsif (m!^(.+)\.url=\s*(.*)\s*$!) {
 			$r->{$1}->{url} = $2;
@@ -1471,9 +1471,8 @@
 				my $section = "svn-remote.$_";
 				$svm = {
 					source => tmp_config('--get',
-					    "$section.svm-source"),
-					replace => tmp_config('--get',
-					    "$section.svm-replace"),
+					    "$section.svnsync-url"),
+					replace => '',
 				}
 			};
 			$r->{$_}->{svm} = $svm;

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

end of thread, other threads:[~2008-11-24 17:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-16  8:07 git-svn and svnsync Andriy Gapon
2008-11-24 12:56 ` Andriy Gapon
2008-11-24 17:15   ` Michael J Gruber
2008-11-24 17:33     ` Andriy Gapon

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).