Saturday 20 October 2012

The need to create forks/clones for website

(Here is an email I sent earlier today at SI, that covers a number of interesting challenges that we're now having with TeamMentor, and how Git/GitHub can help)

One of the scenarios/problems that is starting to happen is 'how to manage the specific requirements for deployed sites like who need custom changes?'

So here is a description of 'the problem':

a) there is a master version of the code:
b) there is a master version of the content:
c) there is a master version of the code+content (which is a 'virtual copy' of the two above): (think of this as a copy of the code and master repositories in a way that keeps the git connections and commit history)
d) there is a website that is based on the code + content version (i.e. , BUT has a number of specific requirements.
    * the content should not be publicly available (not TM default), ie require account creation
    * specific SI requirements (see this list:
e) how to deal with changes to , that are only relevant to that site (i.e will not be propagated to the main Code+Content repo)
   * interestingly in the case of site, (at least at the moment), the only changes will be on the Code (where the content is the same as the one in
   * but I can see how as our content generation capabilities improves (and we start to have fresh and 'current/recent-events' articles)  we might want to push those into (since they will be the best advertisement for TM that we could ever get)
f) since is a 'read-only' website, there is also an argument (from a security point of view) that that site should not have the advanced editing capabilities that TeamMentor has (this is also a feature that I can see customers wanting)

So what is the solution?

At the moment, the solution that I see is to:
* create a (private) fork of (the Code+Content) repository at TMClients organisation (technically it will be a clone not a fork).
* apply the Code changes (specific to SI) in that fork
* use that fork as the source repository of

Any other ideas on how to deal with this?

Note that we have the exact same issue (or a variation of this) on: