{"thread":{"id":"24033","subject":"Workflow for \"rolling out\" commits","startedAt":"2010-06-07T18:42:15Z","lastAt":"2010-06-07T18:42:15Z","messageCount":1,"participants":["Ramkumar Ramachandra"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"143177","messageId":"AANLkTiklLo6YCOGpMtKQnLa1yZsltd2VCVzuZUlqShvd@mail.gmail.com","threadId":"24033","inReplyTo":null,"subject":"Workflow for \"rolling out\" commits","fromName":"Ramkumar Ramachandra","fromEmail":"artagnon@gmail.com","sentAt":"2010-06-07T18:42:15Z","receivedAt":"2010-06-07T18:42:15Z","isPatch":false,"sender":{"key":"r@artagnon.com","avatar":"https://avatars.githubusercontent.com/u/37226?v=4"},"body":"Hi,\n\nI spend a great deal of time preparing patches for the mailing list,\nand it's time I asked for help to optimize the process I'm using. I'll\nexplain what I'm doing in detail, and why I'm doing it- I'd love it if\nsomeone could tell me how to do it better.\n\nI work on two repositories: git.git and svn-fe.git. In svn-fe.git, we\nmainly work on `master`, occasionally forking out feature branches and\nmerging them back. I also work on a certain `git-merge` branch that\nonly has changes specific to getting svn-fe.git merged into git.git;\nit is based on `master` and constantly needs to be rebased everytime\n`master` updates. `master`, on the other hand, is intended to maintain\nand compile an independent application. To send patches to the mailing\nlist, I have another branch `rollout` which is basically the\n`git-merge` branch stripped of revision history (the `git-merge`\nbranch has thousands of commits, and I don't want this revision\nhistory to be part of git.git). In `rollout`, I have neatly added\nfiles logically and prepared six commits to send directly to the\nmailing list.\n\nIn git.git, I have a remote corresponding to svn-fe.git, and use\ngit-read-tree with a prefix = $GIT_ROOT/vcs_svn to import the\n`rollout` branch from svn-fe.git into the vcs-svn/ directory (Thanks\nto Sverre I don't cherry-pick, git-mv and amend the commits one by\none). I then use format-patch and send-email to send emails to the\nmailing list.\n\nWhenever `master` updates, I first rebase `git-merge` onto `master`,\ncopy out the new files from the `git-merge` working copy to the\n`rollout` working copy, make more commits to squash into the six\nexisting commits in `git-merge`(*). Then I fetch the objects into\ngit.git and import the tree again.\n\n(*) I can theoretically automate this on a fresh `rollout` branch by\nusing a shell script to add the files and make out commits one-by-one\nby picking up the commit messages from a text file.\n\nThanks for reading.\n\n-- Ram\n"}]}