Re: [PATCH 1/7] fast-export: Omit tags that tag trees
- From
Elijah Newren <newren@gmail.com>
- Date
- Jun 20, 2009, 18:01 UTC
- Message-ID
- <51419b2c0906201101u2f8e6981q84ab7acc13dc9135@mail.gmail.com>
- In-Reply-To
- <20090620173128.GE31022@coredump.intra.peff.net>
Hi,
On Sat, Jun 20, 2009 at 11:31 AM, Jeff King<peff@peff.net> wrote:
Show 12 quoted lines
> Do we really want to disallow tags pointing to trees? There is at least > one well-known case in use (kernel v2.6.11). > > Also, (and I haven't investigated at all), this sounds like the same > issue we have with tags pointing to tags. IOW, everything referenceable > should be given a mark, but it is not currently. I posted a "how about > this" patch for the tag case here: > > http://article.gmane.org/gmane.comp.version-control.git/119245 > > but I never got around to following it up with tests. Could you do > something similar for the tree case?
I don't see how we could do something similar for the tree case without making some significant change to the output/input of both fast-export and fast-import. Tag objects are part of the output of fast-export, thus we can add a mark line to give the object a name and thus provide us a valid mark we can make the outer tag point to. Trees are not output by fast-export (other than implicitly by including files in commits), so we have nothing to point such a tag at. If we were to do something like use the full sha1sum instead of marks in such a case (which git-fast-import should currently accept), then (a) we'd break exporting a repository limited by path ('git fast-export master -- libfoo"), and (b) we'd break interoperation with other tools like bzr-fast-import (or a possible future git that uses a different checksum).
If someone wanted to tackle modifying the output/input syntax of fast-export and fast-import, maybe something could be done here, but my patch just tries to make things operate sanely within the given documented limitations (as found in the git-fast-export manpage -- "Since 'git-fast-import' cannot tag trees, you will not be able to export the linux-2.6.git repository completely, as it contains a tag referencing a tree instead of a commit.").
Elijah