More people essentially means you will want more branches (complexity got just too big for the two branch model), probably one per feature, branched off devel and re-merged [either feature -> devel; or devel(latest) ->feature depending on flow] whenever a feature is ready for testing.
Once a feature is proven it's 'properly' merged (or rebased) to devel, and then across to master. http://nvie.com/posts/a-successful-git-branching-model/ http://git-scm.com/book/en/Git-Branching-Branching-Workflows http://randyfay.com/content/rebase-workflow-git and don't forget the manual (dftm) `git help workflows` Philip ----- Original Message ----- From: Ray Shaw To: firstname.lastname@example.org Sent: Tuesday, January 08, 2013 8:12 PM Subject: [git-users] Management of a puppet tree and multiple developers I'm trying to solve a problem with git, but I think I'm going about it the wrong way. I've tried searching for a lot of related terms, but either the answer isn't out there, or I'm not trying the right words. It's possible git can't do what I want, but I hope so. We've been using git to manage our puppet manifests and content files for over a year now. We have 2 branches, master and devel. We make changes to the "devel" branch, do a git pull of "devel" on the development server, then test with the development workstations. When the changes are ready, we merge them into "master", do a git pull of "master" on the production server, and the production network (Linux) clients get the changes. This has been working well enough. There are only 2 of us making changes, so there are few conflicts. The issue is that now we're adding 2 more developers for a different platform (OS X), but they'll be working with files in the same filesystem tree (and currently the same git branch) as we are for Linux. 99% of their work will be on different files, but in the same directories as our files. What we'd like to be able to do is push either: a) changes just made to the Linux files b) changes made by one person c) select commits to the "master" branch, and thus production server, without also merging any potentially not-ready-for-prime-time changes made to the OS X files and/or one or both of the OS X developers. It would be nice for Linux developer A to be able to exclude Linux developer B's changes too, sometimes, but not as critical. We initially thought of creating a separate development branch that only had their files, but trying to have two git branches share a single filesystem location doesn't work, at least not the way we're doing it (check out the OS X branch, and /etc/puppet/darwinstuff is there, but /etc/puppet/linuxstuff vanishes, and vice-versa). Complicating things is the fact that their files (currently a small quantity, but sure to grow) are currently in the "devel" branch as the result of a previous effort. I feel like this has to be easier than I'm making it, and I'm just going about it the wrong way because I don't understand Git well enough. But the documentation I've found doesn't really seem to describe how to solve this. -- No virus found in this message. Checked by AVG - www.avg.com Version: 2013.0.2805 / Virus Database: 2637/6016 - Release Date: 01/07/13 --