author | Junio C Hamano <junkio@cox.net> | |
Sun, 5 Mar 2006 00:18:43 +0000 (16:18 -0800) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Sun, 5 Mar 2006 00:18:43 +0000 (16:18 -0800) | ||
commit | 1c7fee5d0857d809fe5d93a1d56968e44296ce55 | |
tree | 4d0822b10665035d4675cb5a4058d4306faa3bd9 | tree | snapshot |
parent | d10ed827bcf5f07c173313d4575e1d6c720dc25f | commit | diff |
parent | cfcbd3427e67056a00ec832645b057eaf33888d9 | commit | diff |
parent | c436eb8cf1efa3fe2c70100ae0cbc48f0feaf5af | commit | diff |
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
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