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 git-us...@googlegroups.com.
To unsubscribe from this group, send email to 
git-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/git-users?hl=en.

Reply via email to