Re: v2.6.11 tag in kernel tree

Previous thread: [PATCH] git-merge: preserve and merge local changes when doing fast forward by Junio C Hamano on Wednesday, November 29, 2006 - 11:02 pm. (3 messages)

Next thread: Unprivileged User by Ed on Thursday, November 30, 2006 - 1:54 am. (1 message)
To: Git Mailing List <git@...>
Date: Thursday, November 30, 2006 - 12:02 am

Using this tree git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6

These two tags appear to be pointing to a tree instead of a commit.
v2.6.11
v2.6.11-tree

I'm trying to check out v2.6.11 so that I can figure out the changes a
vendor made to it.

jonsmirl@jonsmirl:/extra/linux$ git checkout -b microcross v2.6.11
Cannot switch branch to a non-commit.

I can checkout the other tags without problem.

What's the secret to checking out 2.6.11?

--
Jon Smirl
jonsmirl@gmail.com
-

To: Jon Smirl <jonsmirl@...>
Cc: Git Mailing List <git@...>
Date: Thursday, November 30, 2006 - 12:04 pm

Yes. We don't have that as a commit. The commit history starts with

You can't check it out, since it's not a commit, but since it is a tree,
you can:

- use it as a base for "git diff"

git diff v2.6.11 <any-commit-goes-here>

- or if you want to use it as a base for development, create a new commit
and branch from it:

git-commit-tree v2.6.11 <<EOF
This is an initial commit starting at the state of Linux-v2.6.11
EOF

and then you can take the resulting SHA1 (that it wrote out to stdout),
and do

git checkout -b my-new-branch <sha1thatyoujustgot>

However, whatever you do, it won't be connected to the rest of the git
history.

Another possibility may be to get the historical Linux tree (which _does_
have a real v2.6.11, and that you _can_ graft together with the current
tree, and thus get full history), and then use that grafted whole-history
tree for whatever you want to do. That allows you to do things like
rebasing the end result (if you started a new branch based on 2.6.11) etc,
since it's now all connected.

Linus
-

To: Linus Torvalds <torvalds@...>
Cc: Git Mailing List <git@...>
Date: Thursday, November 30, 2006 - 3:11 pm

Thanks for the replies, I got it working. I'm trying to decipher the
changes a vendor made to 2.6.11 when they ported it to an ARM device
and peripherals.

It is the usual situation of releasing a GPL tarball without any
documentation as to what they changed.

--
Jon Smirl
jonsmirl@gmail.com
-

To: Jon Smirl <jonsmirl@...>
Cc: <git@...>
Date: Thursday, November 30, 2006 - 12:22 am

Sorry, you cannot check it out directly, and there is no easy
way to start a new branch from a bare tree.

I would create a temporary branch from any commit and reset the
working tree with it.

git checkout -b temp master
git read-tree -m -u v2.6.11-tree

One BIG caveat is that this in state, only your index and the
working tree can be trusted. The history of temp branch does
not have anything to do with v2.6.11 -- a bare tree object does
not have any history behind it (or on top of it, for that
matter).

A slightly more elaborate way would be

$ git checkout -b v2.6.11-phoney $(echo 'phoney v2.6.11' |
git commit-tree v2.6.11-tree^{tree})

to create a parentless commit that has v2.6.11-tree, and make
that your current branch. But again this commit does not have
any relationship in history with the development line that leads
to v2.6.19 just released.

You could graft it as the parent of v2.6.12-rc2 (the first
commit in git era) after doing the above:

$ parent=$(git-rev-parse v2.6.11-phoney^0)
$ commit=$(git-rev-parse v2.6.12-rc2^0)
$ echo $commit $parent >>.git/info/grafts

and pretend as if v2.6.12-rc2 is a child of v2.6.11-phoney.

-

Previous thread: [PATCH] git-merge: preserve and merge local changes when doing fast forward by Junio C Hamano on Wednesday, November 29, 2006 - 11:02 pm. (3 messages)

Next thread: Unprivileged User by Ed on Thursday, November 30, 2006 - 1:54 am. (1 message)