Subject: Integration-Manager Workflow

From: Adrián Ribao Martínez <[email-masked]>
Date: Sat, 16 Jan 2010 18:49:32 +0100

Hello everybody, I'm learning git since I'm planning moving from Bazaar.

I've been reading the documentation and the progit book, which is excellent.

I'm a bit confused In the chapter: http://progit.org/book/ch5-1.html#integrationmanager_workflow : "Integration-Manager Workflow"

I need to manages a project with several developers. Those developers are split into teams.

I'm planning these:
 * A central repository using the http protocol. This central repository would be only writable by myself, it would have http access for the developers and ssh access for me.
 * Every team would have ssh access to their repositories. i.e. team1.myserver.net, team2.myserver.net
 * I want at least three branches: master, test, and develop. The path would be: develop(development version) -> test (beta) -> master (stable)
 * I don't want any developer to write into the develop branch, and if they do by mistake, I don't want to take it into account.

My question is about the branches in the teams repositories. I want the developers to create feature/fix branches in their checkouts and when they have finished the work, I check and merge into develop if everything is OK.

Is the following procedure correct?:
1. They send me the path of the branch I should do: git checkout --track origin/feature1 (where origin could be: ssh://[email-masked]:/home/user/git/project)
2. If everything is ok I merge into development and remove branch feature1.
3. They fetch and the branch is deleted in their local checkouts, and the feature1 is in the develop branch: git pull origin

What happens if they accidentally work in the develop branch instead of creating a new one? What should we do?
I think I should never fetch from teamx.myserver.net to avoid this problem and instead track the branch like in step 2. Is this correct?

Thank you for your help, I'm a bit confused about git.

Regards,

Adrian Ribao