git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael J Gruber <git@drmicha.warpmail.net>
To: Knut Eldhuset <knut@3d-radar.com>
Cc: "git@vger.kernel.org >> Git Mailing List" <git@vger.kernel.org>
Subject: Re: Different svn-id URLs in history
Date: Thu, 09 Oct 2008 16:20:30 +0200	[thread overview]
Message-ID: <48EE132E.1040407@drmicha.warpmail.net> (raw)
In-Reply-To: <48EC7B52.4000100@3d-radar.com>

Knut Eldhuset venit, vidit, dixit 08.10.2008 11:20:
> Michael J Gruber wrote:
>> Knut Eldhuset venit, vidit, dixit 08.10.2008 08:34:
>>> Michael J Gruber wrote:
>>>> Knut Eldhuset venit, vidit, dixit 07.10.2008 12:58:
>>>>> Hi,
>>>>>
>>>>> After cloning my svn repository, I notice that the svn-id URL is 
>>>>> different when going back in history:
>>>>>
>>>>> git-svn-id: https://server/trunk@300
>>>>>
>>>>> vs
>>>>>
>>>>> git-svn-id: https://server/trunk/some_folder/project/src@250
>>>>>
>>>> I take this is as an invitation for guesswork (given the amount of
>>>> details)...
>>> Sorry about that... I'm confused.
>>>> You probably have commits which don't follow your usual svn repo layout
>>>> (trunk/some_folder/project/src) but commit to trunk/ directly. The output of
>>>>
>>>> svn log -v -r300 https://server/trunk@300
>>>> svn log -v -r250 https://server/trunk/some_folder/project/src@250
>>>>
>>>> should give some clues.
>>>>
>>> Svn log shows that the same path has been modified in both cases. I see 
>> Does "same path" mean:
>> - same relative to the above paths or
>> - same absolute path?
> 
> Both say "/trunk/some_folder/project/src/some_file".
> 
>>> something strange in git, though. Our svn repository has about 6500 
>>> commits, but git shows over 10.000. Further investigation shows that a 
>>> lot of svn commits have two entries in git. Some branches off of trunk 
>>> do not start at r1, but off of a duplicate rNNNN. Could this be due to 
>>> our unhealthy practice of creating branches off of subtrees in svn? By 
>>> this I mean create a branch off of 
>>> https://server/trunk/some_folder/project/src instead of 
>>> https://server/trunk. If so, what can be done to fix this?
>>>
>>> As a sidenote, during git svn clone, I noticed that each time a new 
>>> branch or tag was discovered, the "scanning" started back at r1. Is this 
>>> normal? I would think the history before the branch was already 
>>> imported. Of course, this could maybe be due to the bad branching 
>>> practice described above.
>> svn is typically "abused" in the sense that one svn repo is used for
>> separate projects (your subtrees). git-svn can deal with non-standard
>> repo layouts.
>>
>> I assume you can't share the svn repo publically, can you?
> 
> Sorry, no.
> 
>> So, in order to help you, we would need to know
>>
>> - the layout of your svn repo: where are trunk, branches and tags, how
>> did you create branches and tags in svn, are "projects" entirely separate
> 
> https://server/trunk
> https://server/branches
> https://server/tags
> 
> We really only have one "project" source tree at 
> https://server/trunk/some_folder/project/src
> 
> However, once the sources were at
> https://server/trunk/some_folder/project/old_source

That may be the source of the trouble. In fact, the log below indicates
that it is more like the following two paths:

https://server/trunk/project/old_source
https://server/trunk/project/src/client

> Therefore we have the following:
> 
> $ svn log -v -r4871 https://server/
> ------------------------------------------------------------------------
> r4871 | nn | 2007-09-25 13:36:25 +0200 (Tue, 25 Sep 2007) | 3 lines
> Changed paths:
>     M /trunk/project
>     D /trunk/project/old_source/some_file
>     A /trunk/project/src/client/some_file (from 
> /trunk/project/old_source/some_file:4795)
> 
>   commit-message
> ------------------------------------------------------------------------
> 
> $ svn log -v -r4869 https://server/
> ------------------------------------------------------------------------
> r4869 | nn | 2007-09-25 13:14:34 +0200 (Tue, 25 Sep 2007) | 3 lines
> Changed paths:
>     M /trunk/project
>     A /trunk/project/src
>     A /trunk/project/src/client
> 
>   commit-message
> 
> ------------------------------------------------------------------------
> 
> $ svn log -v -r4868 https://server/
> ------------------------------------------------------------------------
> r4868 | nn | 2007-09-25 13:14:28 +0200 (Tue, 25 Sep 2007) | 3 lines
> Changed paths:
>     M /trunk/project
> 
>   commit-message
> 

That one is funny. A modified directory but no paths modified
underneath. Was this a propset?

> ------------------------------------------------------------------------
> 
> $ svn log -v -r4867 https://server/
> ------------------------------------------------------------------------
> r4867 | nn | 2007-09-25 12:04:58 +0200 (Tue, 25 Sep 2007) | 3 lines
> Changed paths:
>     M /trunk/project
>     A /trunk/project/some_file
> 
>   commit-message
> ------------------------------------------------------------------------

Maybe you're trying too hard to disguise things. Are you really adding
some_file right under project here and under project/src/client in r4871?

> 
> r4868 appears twice in git. One commit is on master/trunk and has parent 
> and child, while the other is on a branch and has no parent.
> 
>> - your incarnation of git-svn
>>
> 
> # git --version
> git version 1.6.0.2

I actually meant incantation, I guess I should brush up on my little
latin, uhm ;)

So, did you use something like

git svn init -s https://server/

or

git svn init -T trunk/project/src/client -t 'tags/*/project/src/client'
-b 'branches/*/project/src/client' https://server/

My suggestion would to use two svn sections (option "-R") with different
configs for different repo structures, and to fetch the first one with
"-r1:4866" and the second one with "-r4871:HEAD". Reorganising the svn
repo layout can confuse git-svn quite a bit (and understandably so).
Using different configs for different "epochs" helps. grafts are your
friend when it comes to connecting the two.

Michael

  parent reply	other threads:[~2008-10-09 14:22 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-07 10:58 Different svn-id URLs in history Knut Eldhuset
2008-10-07 15:01 ` Michael J Gruber
2008-10-08  6:34   ` Knut Eldhuset
2008-10-08  8:32     ` Michael J Gruber
2008-10-08  9:20       ` Knut Eldhuset
2008-10-08  9:23         ` Knut Eldhuset
2008-10-09 14:20         ` Michael J Gruber [this message]
2008-10-10  8:56           ` Knut Eldhuset
2008-10-09  6:16       ` Knut Eldhuset

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48EE132E.1040407@drmicha.warpmail.net \
    --to=git@drmicha.warpmail.net \
    --cc=git@vger.kernel.org \
    --cc=knut@3d-radar.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).