Jay Cliburn wrote:
Jeff Garzik wrote:
I refreshed my git intro/cookbook for kernel hackers, at
http://linux.yyz.us/git-howto.html
This describes most of the commands I use in day-to-day kernel
hacking. Let me know if there are glaring errors or missing key
commands.
Thanks for doing this. I've referred to your previous page rather often
as I grope around trying to learn git and hack a vendor driver for
submittal into the mainline kernel.
One thing that baffled me was how to use git to create a "kitchen sink"
diff that would produce my entire driver suitable for submittal to lkml
for review. This probably isn't needed very often, but for new driver
submittals it's important to know how to do it. Francois Romieu showed
me how (assume the new driver branch is named "driver"):
$ git diff $(git merge-base master driver)..driver
As a beginner, this command continues to be utterly non-intuitive to me,
but it works. There may be other ways to do it, too.
The point is, I think you should add instructions on your cookbook that
address how to produce such a "kitchen sink" diff if you're submitting a
brand new driver to lkml. (Obviously I don't know what such a diff is
actually called.)
You inflict upon yourself all sorts of pain if you keep updating
'master', but don't merge that into 'driver'. Typically you want to
rebase after updating master:
git checkout driver
git rebase master
# build and test
git prune
or merge master into your current branch:
git checkout driver
git pull . master
# build and test
That way, you are GUARANTEED that
git diff master..driver
will result in a diff that you can send upstream.
One moral of this story, as (I think) Linus mentioned, don't update
'master' too frequently. That's one key lesson of distributed
programming. Unless the upstream kernel has a key API change or bug fix
you need, just pretend the outside world does not exist, and hack away
on your driver.
Jeff
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html