Using a development branch on the public repo sounds alright to me. I started my repo before I had the commit bit on the public repo, which is what got me started historically. I didn't change my workflow just because I've been too lazy to learn how to do it so far.
If someone will point me to a document that explains how to properly use branched development with git, I will gladly do it (as it seems to be the consensus that we should be using branches in the main public repo).
The basic idea is simple: # git fetch <repo-name> # gets all the branches # git checkout -b <branch-name> <repo-name>/<branch-name> ## ## update # git fetch <repo-name> ## check what changed, then fast-forward onto it # gitk # git rebase <repo-name>/<branch-name> ## do some work, the commit to that branch # git push <repo-name> <branch-name>
Depending on your work flow, you may not need to specify <repo-name> or <branch-name> in some of the commands above. You may also want to specify --track or drop the -b during the checkout. As always, learn/practice on a couple local repos (safe) before messing up a public one (embarrassing).
FWIW, its been my experience that tracking another repository isn't much harder than using different branches in a single repository.
## separate repos # git clone <asdf url> # git remote add fahree <Faré's url> # git fetch # git fetch fahree # git checkout -b fahree fahree/master ...
## branches in single repo # git clone <asdf url> # git fetch # git checkout -b fahree fahree/master
All the differences are in initialization and fetching, so the above example shows the maximum change in workload. In particular, merge issues are identical in either case; as with any version-control system, people need to coordinate which branch/repo they are working on.
Of note, if RPG and I were sending merge requests rather than individual patches, Faré wouldn't be seeing as many conflicts. Instead, git would be using history to better auto-resolve things.
To me, a more interesting question is whether people might find a site like github or gitorious to be helpful. Such sites have systems for making and auto-tracking forks, submitting merge requests, administering commit bits, etc. Github is more individual-oriented; Gitorious has a more team-oriented focus. Theoretically, gitorious could even be installed on cl.net.
- Daniel