TeamCity and complicated Git Repo Upstream/Downstream/CrossStream build and synch management

HI,


We have a complicated arrangement of 4 related Git repos - all of which undergo continuous concurrent development (both with isolation and synchronization).


Here is the structure of the relationship.


Git 'A" is the parent non-forked repo.


Git repos B C D are all forked/cloned repos of A.


B C D repos all have a UpStream Git remote branch view of A.  i.e  A is a remote  'upstream' branch in all of B C  D.


B C D repos all have CrossStream Git remote view relationships with one another.  i.e. B is a remote 'cross-stream' branch in  both C D.  C is a remote cross-stream branch in both B D,   and  D is a cross-stream branch in A C.


All of the B C D repos  have furiously paced development work with frequent cross-stream branch  commits/pushs between one another to remain synchronized.


The A repo is less frequently updated with commits/pushes ... but ... when it is ... all of the B C D repos need to do a fetch/merge with via its UpStream branch view (synchronizing them with the parent).  A <--> (B,C,D) never do direct commits/pushes across their upstream/downstream branch views.

We are not (yet!) TeamCity users.  We are IntelliJ users (of course).  Can TeamCity help us with automating the management of how these 4 repos interact with one-another?  Can we arrange TeamCity so that anytime A commits/pushes changes to its parent repo, triggers all of B,C,D to automatically fetch/merge those pushed A commits?  Etc.?  

Excited (but uncertain) that TeamCity might help us, thanks for any insights!

1 comment
Comment actions Permalink

Hi, TC does work pretty well with feature branches and can trigger build against VCS roots (repositories) that you need and pick up a proper branch name.

For instance, if you have A,B,C,D repos, you can setup build trigger to watch new commits in A's refs/heads/master and refs/heads/features/*. For each of those branches TC will pick up corresponding branch in every other repo. You can monitor one or several repos that participate in the build for changes and trigger new builds as you want.

We have feature called quiet period designed to avoid potential breaking of atomic changes if you need to put your commit in two or more repositories.

You can read more about feature branches here: http://confluence.jetbrains.com/display/TCD8/Working+with+Feature+Branches.

We also have feature that enables auto-merge: http://confluence.jetbrains.com/display/TCD8/Automatic+Merge, http://blog.jetbrains.com/teamcity/2013/10/automatic-merge/

0

Please sign in to leave a comment.