threads / discuss / 23808

How to migrate folders using svn:externals exclusively (no actual data inside folder) to git submodules?

Subject: How to migrate folders using svn:externals exclusively (no actual data inside folder) to git submodules?

## tl;dr

2 messages between May 14, 2010 and May 14, 2010.

replies: 1people: 2as markdown or json

Jensen Somers· May 14, 2010, 18:53 UTC · lore
Hello,

Having used Git a couple of times on some open source projects I am beginning to be more and more convinced of the power and benefit it has over subversion. One of the major benefits for me is the possibility to create local branches - and thus work on several things at the same time - without interfering with the actual master repository or to have 10 different /trunk folders on my hard drive.

Where I work we currently use subversion but I am looking into migrating everything to Git. There is one thing that is not very clear to me though and I hope somebody could shine some light on the matter.

Our current repository is set up as follows:
/
+ /Modules
+ + /ModuleA
+ + /ModuleB
+ + /ModuleC
+ /Applications
+ + /ApplicationA
+ + /ApplicationB
+ /Views
+ + /ViewApplicationA
+ + /ViewApplicationB

ViewApplicationA and ViewApplicationB are empty folders which use the svn:externals property to include all required folders. For ViewApplicationA this would for example be ApplicationA, ModuleA and ModuleC, for ViewApplicationB this would be ApplicationB, ModuleB and ModuleC. Using the views the developers are able to checkout only what's needed for the given project they work on. And this is where Git confuses me. As an alternative for svn:externals I stumbled upon Git submodules but I am not entirely sure they allow me to do the same thing. Can I create a sub folder on my root Git repository and let developers check out only that folder or do I need to create a separate repository per view and reference another repository (holding all actual data) as a submodule? And can I actually do that on the server? Most examples I found talk about cloning another repository as a submodule, but all of them seem to do it locally, and not on the server and I don't want to bother every developer doing all that every time he decides to start fresh.

Any tips, pointers, links to websites and other help to clarify this is greatly appreciated.

- Jensen
Michael J Gruber· May 14, 2010, 19:17 UTC · re: Jensen Somers · lore

Re: How to migrate folders using svn:externals exclusively (no actual data inside folder) to git submodules?

Jensen Somers venit, vidit, dixit 14.05.2010 20:53:
Show 26 quoted lines
> Hello,
> 
> Having used Git a couple of times on some open source projects I am
> beginning to be more and more convinced of the power and benefit it
> has over subversion. One of the major benefits for me is the
> possibility to create local branches - and thus work on several things
> at the same time - without interfering with the actual master
> repository or to have 10 different /trunk folders on my hard drive.
> 
> Where I work we currently use subversion but I am looking into
> migrating everything to Git. There is one thing that is not very clear
> to me though and I hope somebody could shine some light on the matter.
> 
> Our current repository is set up as follows:
> /
> + /Modules
> + + /ModuleA
> + + /ModuleB
> + + /ModuleC
> + /Applications
> + + /ApplicationA
> + + /ApplicationB
> + /Views
> + + /ViewApplicationA
> + + /ViewApplicationB
> 

When I switched from svn to git, the first thing I needed to do was to "think small": Don't use one big repo for vaguely related things - use many small ones. You see, in git it's so simple to create one, it doesn't even hurt!

I don't think Views, Applications and Modules belong in the same repo here.
Show 16 quoted lines
> ViewApplicationA and ViewApplicationB are empty folders which use the
> svn:externals property to include all required folders. For
> ViewApplicationA this would for example be ApplicationA, ModuleA and
> ModuleC, for ViewApplicationB this would be ApplicationB, ModuleB and
> ModuleC. Using the views the developers are able to checkout only
> what's needed for the given project they work on.
> And this is where Git confuses me. As an alternative for svn:externals
> I stumbled upon Git submodules but I am not entirely sure they allow
> me to do the same thing. Can I create a sub folder on my root Git
> repository and let developers check out only that folder or do I need
> to create a separate repository per view and reference another
> repository (holding all actual data) as a submodule? And can I
> actually do that on the server? Most examples I found talk about
> cloning another repository as a submodule, but all of them seem to do
> it locally, and not on the server and I don't want to bother every
> developer doing all that every time he decides to start fresh.

Are your Modules interrelated, are your Applications interrelated enough so that it makes sense you have branches ModuleX in a repo Modules etc.? If not you may just have one repo per Module and per Application.

Views are a candidate for submodules referencing the Application and Module repos they need.

Michael

← back to recent threads