From: Junio C Hamano Date: Sun, 5 Mar 2006 00:18:43 +0000 (-0800) Subject: Cauterize dropped or duplicate bits from next. X-Git-Tag: v1.3.0-rc1~50^2 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=1c7fee5d0857d809fe5d93a1d56968e44296ce55;p=git.git Cauterize dropped or duplicate bits from next. I am very sorry to do this, but without this funky octopus, "git log --no-merges master..next" will show commits already merged into "master" forever. There are some commits on the next branch (which is never to be rewound) that are reverts of other commits on the next branch. They are to revert the finer grained delta experiments that turned out to have undesirable performance effects. Also there are some other commits that were first done as a merge into "next" (a pull request based on next) and then cherry picked into master. Since they are not going to be merged into "master" ever, they will stay forever in "log master..next". Yuck. So this commit records the fact that the commits currently shown by "git log --no-merges master..next" to be merged into "master" are already in the master, either because they really are (in the case of git-cvsserver bits, which needed cherry-picking into "master"), or because they are fully reverted in "next" (in the case of finer-grained delta bits). Here is the way I made this commit: (1) Inspect "gitk --no-merges --parents master..next" This shows what git thinks are missing from master. It shows chain of commits that are already merged and chain of commits whose net effect should amount to a no-op. Look at each commits and make sure they are either unwanted or already merged by cherry-picking. (2) Record the tip of branches that I do not want. In this case, the following were unwanted: cfcbd3427e67056a00ec832645b057eaf33888d9 cvsserver c436eb8cf1efa3fe2c70100ae0cbc48f0feaf5af diff-delta 38fd0721d0a2a1a723bc28fc0817e3571987b1ef diff-delta f0bcd511ee3a00b7fd3975a386aa1165c07a0721 cvsserver 2b8d9347aa1a11f1ac13591f89ca9f984d467c77 diff-delta (3) Shorten the list by finding independent ones from the above. $ git show-branch --independent $the $above $tips cfcbd3427e67056a00ec832645b057eaf33888d9 c436eb8cf1efa3fe2c70100ae0cbc48f0feaf5af (4) Checkout "master" and cauterize them with "ours" strategy: $ git merge -s ours "`cat $this-file`" HEAD cfcbd3 c436eb --- 1c7fee5d0857d809fe5d93a1d56968e44296ce55