Hi all,
I've encountered a problem trying to unpick the history of the linaro git trees, but I don't think it's specific to us:
The problem seems to be that when a merge is committed, git references the merged commits in their original context: no information is recorded about how the merge was resolved. The result just appears by magic as the new tree recorded for the merge commit.
This seems to mean that git format-patch x..y (where x is an ancestor of y) does _not_ necessarily give you a patch series which actually applies on x (indeed, the generated patch series may not be appliable on any commit, in any order). This is certainly my experience.
As a result, it seems very difficult to pick apart the history of a branch beyond the last merge commit, because the git repo only records the logical ancestry (i.e., which upstream patches got merged) rather than any "physical" history (i.e., what sequence of actual changes would be needed to reconstruct the branch). In fact, it seems to be nonsense to think in terms of a sequence of patches beyond a merge commit.
What I'm actually trying to do is cherry-pick a few omap- and Thumb- specific commits out of the linaro tree to apply on v2.6.39-rc2 -- just the minimum subset so that I can develop Thumb stuff on a tree which is as clean and close to upstream as possible. But I repeatedly run into problems where patch p from branch b depends on cherry-picking some other patch q merged branch b, but the cherry pick fails since the actual delta recorded for q is in the context of someone else's branch (the branch that was merged from).
If anyone knows a straightforward way to achieve this, I'd be interested ...
Of course, I may be trying to do entirely the wrong thing.
Cheers ---Dave