On Fri, 26 Jan 2007, Junio C Hamano wrote: > Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes: > > > > - "git prune" would *also* explicitly set it to zero, but would also > > manually look at the grafts file, and mark anything that is set in the > > grafts file as being reachable (the same way it does for index entries > > etc). > > I am not sure why your "git prune" one does that, but will think > about it for some time first before I ask you to waste your time > explaining it me. Simple: the grafts may actually _hide_ history too - not just add it. Sure, commonly, a graft is used to graft two complete trees together (eg, you'd graft the old Linux history into the new Linux history tree). However, they _can_ also be used to "fix" history - say that you had one tree that has a rough history (with all the releases, but not the full history between them), and another "fine-grained" historical tree. You could use a graft to replace the rough history version with the fine-grained one, so the graft may actually hide stuff that is there in the rough history. So in this case, we wouldn't necessarily want to prune stuff that "exists", but is hidden by a graft. So in my suggestion, pruning would basically only use the grafts file to *add* refs, never to hide them. Linus - 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