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