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? -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html