Subject: Since when is a tag a commit?

From: Shawn Pearce <[email-masked]>
Date: Mon, 7 Aug 2006 22:12:51 -0400

Current `next`:

  [spearce@pb15 git]$ git cat-file commit v1.4.1
  tree 34c8f9c263c1c20592d3f56c3d86bea322577155
  parent 6631c73685bea3c6300938f4900db0d0c6bee457
  author Linus Torvalds <[email-masked]> 1151691633 -0700
  committer Junio C Hamano <[email-masked]> 1151803695 -0700
  ...

Uhhh, that's a tag.  I know it is:

  [spearce@pb15 git]$ git cat-file tag v1.4.1
  object 0556a11a0df6b4119e01aa77dfb795561e62eb34
  type commit
  tag v1.4.1
  tagger Junio C Hamano <[email-masked]> 1151818415 -0700
  ...

And I know its not a tree:

  [spearce@pb15 git]$ git cat-file tree v1.4.1
  100644 .gitignore{?MX~Äƒ????y?v?X?u100644 COPYINGo?...

So it better not be a blob:

  [spearce@pb15 git]$ git cat-file blob v1.4.1
  fatal: git-cat-file v1.4.1: bad file

What the heck is going on?  Since when did git cat-file happily
consider a tag to be a tag, a commit and a tree?  Its that
intentional that we're peeling back the object to the requested type?

-- 
Shawn.