From: Stephen Rothwell <hidden> Date: 2011-06-30 04:29:28
Hi James,
Today's linux-next merge of the security-testing tree produced a large
number of conflicts in files not modified by the security-testing tree.
I assume that this is a bug in "git merge" but I cannot complete the
merge as such.
I have used the security-testing tree from next-20110628 for today.
More information for the git experts:
The security-testing tree is at
git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
and I am trying to merge branch "next" into linux-next at commit
9fd8fab5e299a ("Merge remote-tracking branch 'voltage/for-next'").
I can merge commit 0e4ae0e0dec6 ("TOMOYO: Make several options
configurable") from the security testing tree without conflict and also
commit 25e75dff519b ("AppArmor: Fix masking of capabilities in complain
mode").
I cannot merge commit bcd05ca10420 ("Merge branch 'for-security' of
git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev into next")
which is the child of the above two commits.
The tree to commit 25e75dff519b only containes two simple commits
(modifying 2 files) and is based on v3.0-rc5. The tree to commit
bcd05ca10420 containes several commits and is based on commit
06e86849cf40 ("Merge branch 'pm-fixes' of
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6") from
Linus' tree (between v3.0-rc2 and v3.0-rc2).
After attempting the merge I get this:
$ git status
# On branch master
# Changes to be committed:
#
# deleted: Documentation/ABI/testing/sysfs-class-backlight-driver-adp8870
# modified: Documentation/accounting/cgroupstats.txt
# modified: Documentation/cgroups/blkio-controller.txt
# modified: Documentation/cgroups/cgroups.txt
# modified: Documentation/cgroups/cpuacct.txt
# modified: Documentation/cgroups/cpusets.txt
.
. [lots elided]
.
# modified: tools/perf/util/PERF-VERSION-GEN
# modified: tools/perf/util/trace-event-parse.c
#
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: arch/arm/mach-shmobile/board-ag5evm.c
# both modified: arch/arm/mm/context.c
# both modified: arch/arm/mm/proc-v7.S
# both modified: arch/arm/plat-mxc/devices/platform-imx-dma.c
# both modified: arch/arm/plat-s5p/include/plat/map-s5p.h
# both modified: arch/m68k/Kconfig.nommu
# both modified: block/blk-throttle.c
# both modified: drivers/gpu/drm/nouveau/nouveau_fence.c
# deleted by them: drivers/net/usb/kalmia.c
# both modified: drivers/net/wireless/iwlegacy/iwl-dev.h
# both modified: drivers/net/wireless/iwlegacy/iwl4965-base.c
# both modified: drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
# both modified: drivers/net/wireless/iwlwifi/iwl-agn.c
# both modified: drivers/net/wireless/rtlwifi/pci.c
# deleted by them: drivers/video/backlight/adp8870_bl.c
# both modified: fs/namei.c
# both modified: fs/nfs/nfs4proc.c
# both modified: fs/nfs/pnfs.c
# both modified: fs/proc/base.c
# both modified: net/bluetooth/rfcomm/sock.c
# both modified: net/ipv4/ip_output.c
# both modified: net/netfilter/ipvs/ip_vs_core.c
# both modified: sound/pci/hda/patch_via.c
# both modified: sound/soc/codecs/ad1836.h
# both modified: sound/soc/soc-cache.c
#
None of the "Unmerged paths" are modified in the tree I am merging in.
The linux-next tree will be published later today and James' tree is
available already (I can publis my copy of it if James modifies his).
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
From: Stephen Rothwell <hidden> Date: 2011-06-30 04:39:29
On Thu, 30 Jun 2011 14:33:34 +1000 Stephen Rothwell [off-list ref] wrote:
On Thu, 30 Jun 2011 14:29:10 +1000 Stephen Rothwell [off-list ref] wrote:
quoted
More information for the git experts:
$ git version
git version 1.7.5.4
I am running Debian unstable.
Today's linux-next is based on v3.0-rc5-76-gc017d0d (Linus' tree commit
c017d0d135 ("Merge branch 'kvm-updates/3.0' of
git://git.kernel.org/pub/scm/virt/kvm/kvm").
The point at which I tried to merge the security-testing tree is
v3.0-rc5-3666-g9fd8fab.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
From: James Morris <jmorris@namei.org> Date: 2011-06-30 05:22:49
On Thu, 30 Jun 2011, Stephen Rothwell wrote:
I cannot merge commit bcd05ca10420 ("Merge branch 'for-security' of
git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev into next")
which is the child of the above two commits.
Actually, I may have accidentally pulled upstream commits in via the
above. I'll rebase my tree to the TOMOYO merge.
- James
--
James Morris
[off-list ref]
From: Stephen Rothwell <hidden> Date: 2011-06-30 05:54:09
Hi James,
On Thu, 30 Jun 2011 15:22:33 +1000 (EST) James Morris [off-list ref] wrote:
On Thu, 30 Jun 2011, Stephen Rothwell wrote:
quoted
I cannot merge commit bcd05ca10420 ("Merge branch 'for-security' of
git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev into next")
which is the child of the above two commits.
Actually, I may have accidentally pulled upstream commits in via the
above. I'll rebase my tree to the TOMOYO merge.
It does pull in v3.0-rc5, but that is already in my tree today, so I
still don't understand why the merge I did gets so messaed up.
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
On Thu, Jun 30, 2011 at 02:29:10PM +1000, Stephen Rothwell wrote:
Hi James,
Today's linux-next merge of the security-testing tree produced a large
number of conflicts in files not modified by the security-testing tree.
I assume that this is a bug in "git merge" but I cannot complete the
merge as such.
I have used the security-testing tree from next-20110628 for today.
More information for the git experts:
The security-testing tree is at
git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
and I am trying to merge branch "next" into linux-next at commit
9fd8fab5e299a ("Merge remote-tracking branch 'voltage/for-next'").
I can merge commit 0e4ae0e0dec6 ("TOMOYO: Make several options
configurable") from the security testing tree without conflict and also
commit 25e75dff519b ("AppArmor: Fix masking of capabilities in complain
mode").
I cannot merge commit bcd05ca10420 ("Merge branch 'for-security' of
git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev into next")
which is the child of the above two commits.
The tree to commit 25e75dff519b only containes two simple commits
(modifying 2 files) and is based on v3.0-rc5. The tree to commit
bcd05ca10420 containes several commits and is based on commit
06e86849cf40 ("Merge branch 'pm-fixes' of
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6") from
Linus' tree (between v3.0-rc2 and v3.0-rc2).
After attempting the merge I get this:
$ git status
# On branch master
# Changes to be committed:
#
# deleted: Documentation/ABI/testing/sysfs-class-backlight-driver-adp8870
# modified: Documentation/accounting/cgroupstats.txt
# modified: Documentation/cgroups/blkio-controller.txt
# modified: Documentation/cgroups/cgroups.txt
# modified: Documentation/cgroups/cpuacct.txt
# modified: Documentation/cgroups/cpusets.txt
.
. [lots elided]
.
# modified: tools/perf/util/PERF-VERSION-GEN
# modified: tools/perf/util/trace-event-parse.c
#
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: arch/arm/mach-shmobile/board-ag5evm.c
# both modified: arch/arm/mm/context.c
# both modified: arch/arm/mm/proc-v7.S
# both modified: arch/arm/plat-mxc/devices/platform-imx-dma.c
# both modified: arch/arm/plat-s5p/include/plat/map-s5p.h
# both modified: arch/m68k/Kconfig.nommu
# both modified: block/blk-throttle.c
# both modified: drivers/gpu/drm/nouveau/nouveau_fence.c
# deleted by them: drivers/net/usb/kalmia.c
# both modified: drivers/net/wireless/iwlegacy/iwl-dev.h
# both modified: drivers/net/wireless/iwlegacy/iwl4965-base.c
# both modified: drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
# both modified: drivers/net/wireless/iwlwifi/iwl-agn.c
# both modified: drivers/net/wireless/rtlwifi/pci.c
# deleted by them: drivers/video/backlight/adp8870_bl.c
# both modified: fs/namei.c
# both modified: fs/nfs/nfs4proc.c
# both modified: fs/nfs/pnfs.c
# both modified: fs/proc/base.c
# both modified: net/bluetooth/rfcomm/sock.c
# both modified: net/ipv4/ip_output.c
# both modified: net/netfilter/ipvs/ip_vs_core.c
# both modified: sound/pci/hda/patch_via.c
# both modified: sound/soc/codecs/ad1836.h
# both modified: sound/soc/soc-cache.c
#
None of the "Unmerged paths" are modified in the tree I am merging in.
Hmm, looking at bcd05ca10420 and the difference to its first parent:
$ git diff --stat bcd05ca10420^ bcd05ca10420
<void>
$ git describe bcd05ca10420
v3.0-rc5-28-gbcd05ca
$ git describe bcd05ca10420^
v3.0-rc2-221-g0e4ae0e
So commit bcd05ca10420 reverted many commits between v3.0-rc2 and v3.0-rc5.
If I redo what should have been done in bcd05ca10420 and compare with
bcd05ca10420:
git checkout bcd05ca10420^
git merge bcd05ca10420^2
git diff --stat bcd05ca10420
I get the same list of touched files as you above.
Long history short: James probably used -s ours or similar and it's fine
not to merge that commit into next :-)
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
From: Stephen Rothwell <hidden> Date: 2011-06-30 09:30:42
Hi Uwe,
On Thu, 30 Jun 2011 09:25:59 +0200 Uwe Kleine-König [off-list ref] wrote:
Long history short: James probably used -s ours or similar and it's fine
not to merge that commit into next :-)
Ah ha! Thanks for the explanation. My mind was clearly not up to it
today. :-)
--
Cheers,
Stephen Rothwell sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
On Thu, Jun 30, 2011 at 07:30:23PM +1000, Stephen Rothwell wrote:
Hi Uwe,
On Thu, 30 Jun 2011 09:25:59 +0200 Uwe Kleine-König [off-list ref] wrote:
quoted
Long history short: James probably used -s ours or similar and it's fine
not to merge that commit into next :-)
Ah ha! Thanks for the explanation. My mind was clearly not up to it
today. :-)
The uncomfortable issue here is that
git show bcd05ca10420
(or gitk or gitweb or <enteryourfavoritetoolhere>) doesn't indicate that
it's "strange". The patch shown is simply empty, as it would be if the
tree matched the other parent or if it were a clean merge.
A flag would be nice that does what I did: redo the merge and compare
bcd05ca10420^{tree} with the result?
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
A flag would be nice that does what I did: redo the merge and compare
bcd05ca10420^{tree} with the result?
The problem with that is that it's *way* too expensive an operation to
do for the normal "git log" kind of operations.
Also, truly re-doing the merge actually requires workspace access
and/or require new objects to be created, so it would be inappropriate
anyway: git log/show absolutely has to be a read-only operation,
anything else would be totally insane.
So there's no way - both for performance and 'fundamental' reasons -
to make the normal logging code truly re-do the merge and then compare
the end result of the merge with the end result that is in the tree.
That said, what the current "git show/log" does is to just compare the
end points with the merge result, which means that if the end result
matches either of the end-points, nothing will be shown. That works
for the common cases, but it absolutely doesn't work if somebody does
something crazy, and just picks one end-point over another without
doing a proper merge (ie "-s ours" or just a mis-merge). But the
reason it's done that way is that it's possible to do without re-doing
the merge.
It would be lovely if "git show" (and log operations) had some option
to do a "expensive merge check" and did actually figure out the common
ancestor and at least took that into account.
It would be doable to do it at least better than we do now - the
common ancestor is not cheap to compute, but it's much cheaper than a
full merge, and would at least allow us to flag dangerous merges. Of
course, it gets fun when there are multiple common ancestors and
renames. It's entirely possible that it's never going to be practical
to do anything but "re-do the merge and compare result".
Linus