threads / discuss / 27891

submodule add does not consider git svn

Subject: submodule add does not consider git svn

## tl;dr

4 messages between Jul 23, 2011 and Jul 24, 2011.

replies: 3people: 2as markdown or json

rupert THURNER· Jul 23, 2011, 03:33 UTC · lore

it seems that "git submodule add" looses information from "git svn clone". what am i missing here which would allow to "git svn rebase" the repository, even if it is newly added as submodule?

the following example takes a little, as the repository has 15'000 revisions, even 99% do not concern the checked out part.

rupert @ login : ~/tmp/subm-bug
 mkdir -p  ~/tmp/subm-bug
 cd ~/tmp/subm-bug
 git svn clone https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/GeoIP/trunk
GeoIP
 git init test
 cd test
 git submodule add ~/tmp/subm-bug/GeoIP
 cd GeoIP
 git svn rebase
Migrating from a git-svn v1 layout...
Data from a previous version of git-svn exists, but
        .git/svn
        (required for this version (1.7.5.4) of git-svn) does not exist.
Done migrating from a git-svn v1 layout
Unable to determine upstream SVN information from working tree history
Jens Lehmann· Jul 23, 2011, 18:19 UTC · re: rupert THURNER · lore

Re: submodule add does not consider git svn

Am 23.07.2011 05:33, schrieb rupert THURNER:
Show 24 quoted lines
> it seems that "git submodule add" looses information from "git svn
> clone". what am i missing here which would allow to "git svn rebase"
> the repository, even if it is newly added as submodule?
>
> the following example takes a little, as the repository has 15'000
> revisions, even 99% do not concern the checked out part.
> 
> rupert @ login : ~/tmp/subm-bug
>  mkdir -p  ~/tmp/subm-bug
>  cd ~/tmp/subm-bug
>  git svn clone https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/GeoIP/trunk
> GeoIP
>  git init test
>  cd test
>  git submodule add ~/tmp/subm-bug/GeoIP
>  cd GeoIP
>  git svn rebase
> 
> Migrating from a git-svn v1 layout...
> Data from a previous version of git-svn exists, but
>         .git/svn
>         (required for this version (1.7.5.4) of git-svn) does not exist.
> Done migrating from a git-svn v1 layout
> Unable to determine upstream SVN information from working tree history

That is because in your example "git submodule add" clones that repo *again* from where you put it using "git svn clone". I am not really familiar with git svn, but I assume it is intended that when you clone such a repo it "forgets" that it was connected with a svn repo. Try the following instead:

git init test cd test git svn clone https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/GeoIP/trunk GeoIP git submodule add ./GeoIP # Add existing git svn repo GeoIP in place cd GeoIP git svn rebase

Of course when you push that submodule somewhere else using git I expect that "git svn rebase" won't work when you clone that somewhere else, just like it happened in your example.

rupert THURNER· Jul 24, 2011, 08:00 UTC · re: Jens Lehmann · lore

Re: submodule add does not consider git svn

On Sat, Jul 23, 2011 at 20:19, Jens Lehmann <Jens.Lehmann@web.de> wrote:
Show 43 quoted lines
>
> Am 23.07.2011 05:33, schrieb rupert THURNER:
> > it seems that "git submodule add" looses information from "git svn
> > clone". what am i missing here which would allow to "git svn rebase"
> > the repository, even if it is newly added as submodule?
> >
> > the following example takes a little, as the repository has 15'000
> > revisions, even 99% do not concern the checked out part.
> >
> > rupert @ login : ~/tmp/subm-bug
> >  mkdir -p  ~/tmp/subm-bug
> >  cd ~/tmp/subm-bug
> >  git svn clone https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/GeoIP/trunk
> > GeoIP
> >  git init test
> >  cd test
> >  git submodule add ~/tmp/subm-bug/GeoIP
> >  cd GeoIP
> >  git svn rebase
> >
> > Migrating from a git-svn v1 layout...
> > Data from a previous version of git-svn exists, but
> >         .git/svn
> >         (required for this version (1.7.5.4) of git-svn) does not exist.
> > Done migrating from a git-svn v1 layout
> > Unable to determine upstream SVN information from working tree history
>
> That is because in your example "git submodule add" clones that repo
> *again* from where you put it using "git svn clone". I am not really
> familiar with git svn, but I assume it is intended that when you clone
> such a repo it "forgets" that it was connected with a svn repo. Try the
> following instead:
>
> git init test
> cd test
> git svn clone https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/GeoIP/trunk GeoIP
> git submodule add ./GeoIP      # Add existing git svn repo GeoIP in place
> cd GeoIP
> git svn rebase
>
> Of course when you push that submodule somewhere else using git I expect
> that "git svn rebase" won't work when you clone that somewhere else, just
> like it happened in your example.
how would the standard git case work, to continue with the example above:
  git clone test test1
  git clone test1 test2

if then sombody changes test, and i want to get these changes into test2, without involving test1, and rebase what is there?

rupert
Jens Lehmann· Jul 24, 2011, 19:44 UTC · re: rupert THURNER · lore

Re: submodule add does not consider git svn

Am 24.07.2011 10:00, schrieb rupert THURNER:
Show 17 quoted lines
> On Sat, Jul 23, 2011 at 20:19, Jens Lehmann <Jens.Lehmann@web.de> wrote:
>> Try the following instead:
>>
>> git init test
>> cd test
>> git svn clone https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/GeoIP/trunk GeoIP
>> git submodule add ./GeoIP      # Add existing git svn repo GeoIP in place
>> cd GeoIP
>> git svn rebase
>>
>> Of course when you push that submodule somewhere else using git I expect
>> that "git svn rebase" won't work when you clone that somewhere else, just
>> like it happened in your example.
> 
> how would the standard git case work, to continue with the example above:
>   git clone test test1
>   git clone test1 test2

I don't think you should clone "test" directly, but rather push that to a bare repo or git server so others can clone from there. And as the GeoIP submodule is its own git repo, it has to have someplace to be pushed to too. That url must be configured in the .gitmodules file and you have to call "git submodule sync" before you commit and push the "test" superproject and push the GeoIP submodule so others can use "git submodule init" and "git submodule update" in their "test" clone to get the submodule too.

The "test" repo you set up with "git svn clone" could be where you integrate changes coming from svn (git svn people please stop me if this is rubbish, I'm just making assumptions here!) which are then pushed to the shared git repo so your coworkers can fetch it from there.

> if then sombody changes test, and i want to get these changes into
> test2, without involving test1, and rebase what is there?

I'm not sure I understand what you mean here. But you can control what to check out using different branches for different purposes.

← back to recent threads