Branch Usage: Difference between revisions

From GCD
Jump to navigation Jump to search
(Henry's initial proposal: https://groups.google.com/forum/#!msg/gcd-tech/Z4sQcoB6YqQ/UoALD9pUujsJ)
 
No edit summary
Line 1: Line 1:
GrandComicsDatabase/master
* Always deployable to production, and always deployed to production.  You can only fix something here if it's the most urgent of hot fixes.


GrandComicsDatabases/beta
* Always deployable to beta, and usually deployed to beta unless we're trying out some more experimental branch.  Nearly every fix should pass through the beta branch on its way to master.  Hotfixes to production must always get into beta (we should sort out the best way to do this- there are example strategies online).


GrandComicsDatabase/<group project>
* Only exists if we've collectively agreed that something needs its own branch separately from beta.  The branch should come off of GrandComicsDatabase/beta.


local/master
* [https://github.com/GrandComicsDatabase/gcd-django/tree/master GrandComicsDatabase/master]
* You should almost never do anything hereYou should rebase to avoid merge commits
** Always deployable to production, and always deployed to production.  You can only fix something here if it's the most urgent of hot fixes.
local/beta
* [https://github.com/GrandComicsDatabase/gcd-django/tree/devel GrandComicsDatabases/devel]
* You can do simple stuff here, although you should rebase or pull --rebase to avoid merge commits.  However, it's better to use...
** Always deployable to beta, and usually deployed to beta unless we're trying out some more experimental branch.  Nearly every fix should pass through the devel branch on its way to master.  Hotfixes to production must always get into beta.
local/<personal project>
* GrandComicsDatabase/<group project>
* Never pushed to the server, but you can post code reviews diffing from local/beta which should be sync'd to GrandComicsDatabase/beta
** Only exists if we've collectively agreed that something needs its own branch separately from betaThe branch should come off of GrandComicsDatabase/devel.
local/<group project>
* Can do work here, and diff directly to GrandComicsDatabase/<group project>As always, should rebase to avoid merge commits where feasible.


<github user>/master
* local/master
* Should only ever be updated from GrandComicsDatabase/master, *NEVER* from a local clone of the user's repo, nor from a merge within the user's repo
** You should almost never do anything here.  You should rebase to avoid merge commits
<github user>/beta
* local/devel
* Same deal as master- only updated from GrandComicsDatabase/beta
** You can do simple stuff here, although you should rebase or pull --rebase to avoid merge commits.  However, it's better to use...
<github user>/<group project>
*local/<personal project>
* Again, same deal, only from GrandComicsDatabase/<group project>
** Never pushed to the server, but you can post code reviews diffing from local/beta which should be sync'd to GrandComicsDatabase/beta
<github user>/<user project>
*local/<group project>
* It's your project, in your repo, do what you want.  Try not to tangle up merge commits too much.  When you want to merge this back in, you should submit a pull request from it into one of GrandComicsDatabase/<group project> or GrandComicsDatabase/<beta>.  Once it's pulled over there, you can then update your <github user>/whatever from the GrandComicsDatabase/whatever version.  Never merge over within your own repo, unless it's from one user project to another.  Again, you can do whatever with those.
** Can do work here, and diff directly to GrandComicsDatabase/<group project>.  As always, should rebase to avoid merge commits where feasible.
 
* <github user>/master
** Should only ever be updated from GrandComicsDatabase/master, *NEVER* from a local clone of the user's repo, nor from a merge within the user's repo
* <github user>/devel
** Same deal as master- only updated from GrandComicsDatabase/devel
* <github user>/<group project>
** Again, same deal, only from GrandComicsDatabase/<group project>
* <github user>/<user project>
** It's your project, in your repo, do what you want.  Try not to tangle up merge commits too much.  When you want to merge this back in, you should submit a pull request from it into one of GrandComicsDatabase/<group project> or GrandComicsDatabase/devel.  Once it's pulled over there, you can then update your <github user>/whatever from the GrandComicsDatabase/whatever version.  Never merge over within your own repo, unless it's from one user project to another.  Again, you can do whatever with those.

Revision as of 21:33, 28 October 2013


  • GrandComicsDatabase/master
    • Always deployable to production, and always deployed to production. You can only fix something here if it's the most urgent of hot fixes.
  • GrandComicsDatabases/devel
    • Always deployable to beta, and usually deployed to beta unless we're trying out some more experimental branch. Nearly every fix should pass through the devel branch on its way to master. Hotfixes to production must always get into beta.
  • GrandComicsDatabase/<group project>
    • Only exists if we've collectively agreed that something needs its own branch separately from beta. The branch should come off of GrandComicsDatabase/devel.
  • local/master
    • You should almost never do anything here. You should rebase to avoid merge commits
  • local/devel
    • You can do simple stuff here, although you should rebase or pull --rebase to avoid merge commits. However, it's better to use...
  • local/<personal project>
    • Never pushed to the server, but you can post code reviews diffing from local/beta which should be sync'd to GrandComicsDatabase/beta
  • local/<group project>
    • Can do work here, and diff directly to GrandComicsDatabase/<group project>. As always, should rebase to avoid merge commits where feasible.
  • <github user>/master
    • Should only ever be updated from GrandComicsDatabase/master, *NEVER* from a local clone of the user's repo, nor from a merge within the user's repo
  • <github user>/devel
    • Same deal as master- only updated from GrandComicsDatabase/devel
  • <github user>/<group project>
    • Again, same deal, only from GrandComicsDatabase/<group project>
  • <github user>/<user project>
    • It's your project, in your repo, do what you want. Try not to tangle up merge commits too much. When you want to merge this back in, you should submit a pull request from it into one of GrandComicsDatabase/<group project> or GrandComicsDatabase/devel. Once it's pulled over there, you can then update your <github user>/whatever from the GrandComicsDatabase/whatever version. Never merge over within your own repo, unless it's from one user project to another. Again, you can do whatever with those.