I'm new to GIT and I'm having long thoughts about how to use GIT to
manage my projects structured as below.
CODE1 - .metadata
L appleserver
L shared-code-archive = common with bananaserver
L logger-archive = common with bananaserver
CODE2 - .metadata
L bananaserver
L shared-code-archive = common with appleserver
L logger-archive = common with appleserver
The .metadata is the Eclipse metadata and is project specific to
appleserver or bananaserver
appleserver has project specific code and is versioned as 1.0, 1.1 etc
shared-code-archive is shared code, and has its own versioning as 1.0,
1.1 etc.
logger-archive is shared code, and has its own versioning as 1.0, 1.1
etc.
Appleserver ver 1.0 depends on ver 1.5 shared-code-archive, and ver
1.3 of logger-archive.
Appleserver ver 1.1 depends on ver 1.6 shared-code-archive, and ver
1.3 of logger-archive.
I need to be able to manage appleserver project such that, when I
checkout version 1.0 of apple server,
I need the dependent versions to get checked out automatically.
The following solutions come to my mind.
1) create individual repos inside CODE1 and CODE2 including everything
in it.
cons: the shared-code-archive and logger-archive is duplicated.
If I want to merge the changes CODE1/shared-code-archive to CODE2,
I will have to do it manually
2) put both CODE1 and CODE2 together like
CODE3 - .metadata
L appleserver
L shared-code-archive = common with bananaserver
L logger-archive = common with bananaserver
L bananaserver
Create individual repos inside each of the folders, and have some
script in the "master_folders",
the appleServer and bananaServer, which automatically checks out
the corresponding versions from
.metadata, shared-code-archive, logger-archive
cons: scripts have to be created and set up to run at commits, and
I am not sure how complex that can be.
3) setup same as 2, but create branches within shared-code-archive as
shared-banana-branch, and shared-apple-branch
and make corresponding commits on these branches. ie ver 1.0 of
appleServer depends on ver 1.0 of shared-apple-branch.
There can be a scripts in CODE3 folder for checking out, say
checkoutAppleServer, which will checkout the same version is the
appropriate branches.
cons: If I want to try out something experimental, I will have to
create an experiment branch on appleServer, shared-code-archive,
and logger-archive. Can this be done in 1 step? If I have to
changeover to another branch, I will have to take care of each folder
individually.
Well, these are my thoughts. I was wondering if there are built in
features in GIT to manage such things.
--
You received this message because you are subscribed to the Google Groups "Git
for human beings" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/git-users?hl=en.