git workflow for fully distributed mini-teams
- From
- Rustom Mody <rustompmody@gmail.com>
- Date
- Sep 16, 2009, 07:35 UTC
- Message-ID
- <f46c52560909160035o6b09800eh5219d49e7569cf23@mail.gmail.com>
I am trying to formulate (and understand) what it means to have a fully-distributed mini team workflow with git.
By fully distributed I mean theres no central repo -- not for pushing or even pulling; all communication is by email. By mini-team I mean: Not more than 5 programmers.
Heres a typical scenario.
There are 3 programmers A B and C who communicate by email who have started off from the same code base.
A's branches: dev, master, B, C B's branches: dev, master, A, C C's branches: dev, master, A, B
A's best practices (and invariants) are: I (ie A) develop on dev (or other topic branches). I only merge onto master; never commit. I never work on nor merge onto B and C. When B sends me patches I apply them to the B branch likewise for C. Thereafter I merge that branch onto dev or master. There are no tracking branches because there are no remotes -- no central repo. [not clear about this]
B and C have corresponding practices/behavior.
So the questions...
Is there a better way of doing things? Can some of these practices/invariants be enforced by scripts/options etc? What about checkpointing and restoring from botches?