threads / discuss / 19093

RE: how to arrange source control?

Subject: RE: how to arrange source control?

## tl;dr

2 messages between Apr 27, 2009 and Apr 28, 2009.

replies: 1people: 1as markdown or json

John Dlugosz· Apr 27, 2009, 22:08 UTC · lore
>> what is the best way to use git? Should I run "git add ." in
'rootdir' or run it in each 
>> application and library?
>> These libraries are used by all of the applications.
I had a similar issue I discussed on this mailing list a few weeks ago.

If the apps really are separate apps, from a development perspective, you will want each in a separate repository. That way you are not always being bothered by totally irrelevant changes by others.

But, git doesn't like the libraries arranged that way. If you make each library a git submodule, they will all be in a subdirectory under each app, not a peer with them. This does have the advantage that each app could be using a different version of the libs. If they are meant to be released as a suite, you will still find that handy during development, while waiting for the ripple effect to catch up to the top level after something changes in a lib.

I've not taken it to its logical conclusion of libs that use other libs which are also used directly by the app.

If you keep your existing directory structure, you can certainly make each lib its own repository, and not rely on git to track specific library versions for you. But I think that will bite you when you need to check out something old, such as to make a patch for an existing version or compare behavior against an older version.

--John (please forgive the footer; it's not my idea or my choice)

TradeStation Group, Inc. is a publicly-traded holding company (NASDAQ GS: TRAD) of three operating subsidiaries, TradeStation Securities, Inc. (Member NYSE, FINRA, SIPC and NFA), TradeStation Technologies, Inc., a trading software and subscription company, and TradeStation Europe Limited, a United Kingdom, FSA-authorized introducing brokerage firm. None of these companies provides trading or investment advice, recommendations or endorsements of any kind. The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited.
  If you received this in error, please contact the sender and delete the material from any computer.
John Dlugosz· Apr 28, 2009, 16:42 UTC · lore
(back on the list so others can correct what I said)
> So, if you make libraries submodules within an app, does git make a
new
> copy of the library source
> and put it under the app, or does it just store a different kind of
> object representing the current
> state of the library source under the app?

It looks like copies of the source. Obviously they are, if the versions differ! But git supposedly does some hard linking under the hood, so it doesn't waste disk space. I don't know if that applies to the working directory files too, or just to the internal repository implementation files.

> Is there a way to later automatically merge library changes done in
> different apps?

No, it's like any other change. That library will have its own git repo in that subdirectory. You need to check out a branch, change it, then push. The other apps, even on the same machine, will not use the new stuff until you tell it to. That's a feature -- it will keep pinned to what it was building against until you are ready to upgrade.

Show 10 quoted lines
> > I've not taken it to its logical conclusion of libs that use other
> libs
> > which are also used directly by the app.
> 
> Yes, some of my libs use other libs, all of which are used by certain
> apps.
> 
> I've never used version control before. I always made a 'snapshot' of
> code a a milestone, but I'm hoping
> there is a better way.

Another way I thought about, that might be just the ticket for you, is to make all the apps and libs in your current directory structure into submodules of a single master suite repository, which doesn't have anything in it other than those submodules.

--John (mind the footer... here it comes!)

TradeStation Group, Inc. is a publicly-traded holding company (NASDAQ GS: TRAD) of three operating subsidiaries, TradeStation Securities, Inc. (Member NYSE, FINRA, SIPC and NFA), TradeStation Technologies, Inc., a trading software and subscription company, and TradeStation Europe Limited, a United Kingdom, FSA-authorized introducing brokerage firm. None of these companies provides trading or investment advice, recommendations or endorsements of any kind. The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited.
  If you received this in error, please contact the sender and delete the material from any computer.

← back to recent threads