On Tue, 30 Aug 2011 10:19:35 +0800, Andy Green andy.green@linaro.org wrote:
I think you missed my point, if I tagged it, you CAN check it out. So "reachability" is not the issue.
I think there are two things here:
The first is that repo currently only fetches branches, and not tags. This means that simply tagging isn't enough to ensure that you have the object in your repo.
Paul has a patch for this and sent it upstream, but there's no response yet. If we use that change then tagging is sufficient.
When you check out a hash that is not a branch head, git acts slightly differently on some commands because the HEAD hash does not match any branch. I guess this repo script is not proof against those differences, which is easy to happen if you only tested it on branches, and probably not that difficult to solve either.
I'm not sure that's the issue with unreferenced objects.
If you have a revision that isn't reachable from any head (tag or branch), and not referenced by the reflog or anything, does "git clone" transfer that revision, or does it only fetch reachable objects?
If it doesn't fetch them, then it's pretty hard for us to support them, given the number of times repos are transferred in just building Android on our build service (let alone the fact that it would be pretty difficult for someone to grab the tree and look at the revision with just git.)
Thanks,
James