{"thread":{"id":"9679","subject":"Advise Requested: Branching, Merging, and Deployment","startedAt":"2007-08-27T20:59:47Z","lastAt":"2007-08-27T20:59:47Z","messageCount":1,"participants":["Jason Garber"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"51755","messageId":"E7DE807861E8474E8AC3DC7AC2C75EE5032F00E3@34093-EVS2C1.exchange.rackspace.com","threadId":"9679","inReplyTo":null,"subject":"Advise Requested: Branching, Merging, and Deployment","fromName":"Jason Garber","fromEmail":"jgarber@ionzoft.com","sentAt":"2007-08-27T20:59:47Z","receivedAt":"2007-08-27T20:59:47Z","isPatch":false,"sender":{"key":"jgarber@ionzoft.com","avatar":"https://gravatar.com/avatar/e8e5cac5f615739d425dd7232dc76313337cd76ad7b9f078694f74725409eae8?d=mp&s=160"},"body":"Hello,\n\nTime is valuable, so any of it is appreciated.  I'm looking for sound advice on a good strategy for maximizing git's branching and merging capabilities to assist us in frequent web-app deployments.\n\n--\nI am running a project (in git) that has ~20,000 source files and several full-time developers making changes constantly.  The project is a web-app, so the files are a mix of textual source code and (usually) small binary files.\n\nWe were using Subversion for some time, but eventually the deficiencies (like \"svn status == 90 seconds\" and no merge tracking) caused me to look for a better solution.  After a lot of research, I ended up here, and we are in the process of moving all of our projects to git.  Thanks, by the way!\n\nWe have always maintained three copies of each project - [Development, Preview, Production].  Changes were typically made in Development sites and tested.  Then (manually) copied to the Preview sites and tested.  Finally, they would be manually copied to the Production site.\n\nIt becomes very difficult to tell (manually) who changed what line of what file for each task that needs to be moved into Production.  Some tasks are long-running, some are short, but in general, it's a mess.\n\nThis is quite different from traditional software development where releases are done on a more \"predictable\" basis.  Unfortunately in our case, releases are done on a sub-daily basis (yes, I'm working on that).  We need a lot of agility in whatever strategy we choose.\n\n--\nHere are some requirements:\n- Separate change-sets.  Keep track of the changes introduced by each task separately.\n- Have changeset ABC stay in the Preview level for a variable amount of time.\n- Create, Preview, and move to Production changeset DEF while changeset ABC sits in the Preview level.\n- Developer sanity :)\n\nHere are some intents:\n- To maintain a branch called \"Production\" which represents what is in production\n- To maintain a branch called \"Preview\" which represents what is being previewed\n\n\nAny help is greatly appreciated.\n\n--\nBest Regards,\n \nJason Garber\nSenior Systems Engineer\nIonZoft, Inc.\n \n(814) 941-2390\njgarber@ionzoft.com\n \n \n"}]}