Ok, over the last week or so, I've been having a lot more content
conflicts than usual, mostly because of
(a) just the fact that the way the merge window happens for the kernel
these days, rather than have incremental small merges, we often end
up having lots of big ones.
and
(b) I ended up merging a few trees that had lots of small changes all
over, notably to header files having their <config.h> include
removed, causing trivial conflicts.
Now, the good news is that I have to say that our conflict resolution
rocks. It's all been _very_ easy to do. In fact, it's been even more
pleasant than BK was, because of one big issue: you could resolve the
conflict in the tree, then _test_ it (perhaps just compile-test it), and
commit the resolved result separately. With BK, you had to resolve and
commit atomically, and you never had access to a "preliminary resolve" to
test.
However, I also notived one particular thing that I did that we make less
than perfectly easy.
One thing that is _very_ useful to do is to do when you have a conflict is
this:
git log -p HEAD MERGE_BASE..MERGE_HEAD -- conflicting-filename
because this shows all the changes (with their explanations) for that
filename since the MERGE_BASE in _both_ branches you're trying to merge.
This simple command really makes conflict resolution a hell of a lot
easier, because you can see what caused the conflict, and you get a real
feel for what both branches were doing, making it a _lot_ more likely that
you actually do the right thing.
Now, the downside is that the above is both a pain to type, and we don't
actually even save the MERGE_BASE as a head, so you actually have to
compute it yourself. It's easy enough to do:
git-merge-base HEAD MERGE_HEAD > .git/MERGE_BASE
will do it, but the fact is, we should make this even easier.
In fact, after writing the above a few times, I really think there's a
case for making a helper function that does exactly the above for us.
Including all the "conflicting-filename" thing. It would be nice if
git log -p --merge [[--] filenames...]
would basically expand to
git log -p HEAD MERGE_HEAD
^$(git-merge-base HEAD MERGE_HEAD)
-- $(git-ls-files -u [filenames...])
so that I wouldn't have to type that by hand ever again, and doing a
git log -p --merge drivers/
would automatically give me exactly that for all the unmerged files in
drivers/.
Anybody want to try to make me happy, and learn some git internals at the
same time?
Linus
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
| Linus Torvalds | Linux 2.6.27-rc8 |
| Andi Kleen | [PATCH x86] [2/16] Add a counter for per cpu clocksource watchdog checks and repor... |
| David Miller | Slow DOWN, please!!! |
| Greg KH | Re: [Patch v2] Make PCI extended config space (MMCONFIG) a driver opt-in |
git: | |
| Jeff King | Re: [PATCH] Color support added to git-add--interactive. |
| Yann Dirson | Re: irc usage.. |
| Peter Stahlir | Git as a filesystem |
| Junio C Hamano | Re: [PATCH 3/3] Teach "git branch" about --new-workdir |
| new_guy | Code signing in OpenBSD |
| Jason Dixon | Wasting our Freedom |
| Nick Guenther | Re: Real men don't attack straw men |
| Daniel Ouellet | identifying sparse files and get ride of them trick available? |
| Wolfgang Walter | Re: Kernel oops with 2.6.26, padlock and ipsec: probably problem with fpu state ch... |
| KOSAKI Motohiro | [bug?] tg3: Failed to load firmware "tigon/tg3_tso.bin" |
| Tomasz Grobelny | [PATCH 0/5] [DCCP]: Queuing policies |
| Arjan van de Ven | Re: [GIT]: Networking |
| high memory | 8 hours ago | Linux kernel |
| semaphore access speed | 11 hours ago | Applications and Utilities |
| the kernel how to power off the machine | 12 hours ago | Linux kernel |
| Easter Eggs in windows XP | 15 hours ago | Windows |
| Shared swap partition | 16 hours ago | Linux general |
| Root password | 16 hours ago | Linux general |
| Where/when DNOTIFY is used? | 18 hours ago | Linux kernel |
| How to convert Linux Kernel built-in module into a loadable module | 20 hours ago | Linux kernel |
| Linux 2.6.24 and I/O schedulers | 21 hours ago | Linux kernel |
| USB Driver -- Interrupt Polling -- A Little Help Please | 1 day ago | Linux general |
