On Thu, Apr 15, 2010 at 02:58:29PM +0200, Johannes Sixt wrote: > Am 4/15/2010 14:30, schrieb Junio C Hamano: > > A reflog consists of entries, each of which records how you got to the > > current history by pointing to different commit objects. Some entries > > matter more than others do. Dead-end experiments stop mattering faster > > than others. It is these _entries_ that we expire, because keeping them > > indefinitely is a wasteful clutter. > > I have no problem with this point of view, i.e., that expiration is merely > about the entries, and that garbage-collecting objects is just a > side-effect of removed entries. > > But I don't see yet, why an entry pointing to a dead-end experiment is > less important when it is an entry in a branch reflog than when it is an > entry in the HEAD reflog. Care to explain? I think it is because the reachability test is defined as "from the current ref". So if I am doing a reachability test on next@{20}, I will check whether it is in the current version of next. Unreachable things are therefore dead-end experiments. But on HEAD, if I do: $ git checkout topic1 $ git checkout topic2 Then the entry for HEAD@{1} will be unreachable from the current HEAD, even though it is _not_ a failed experiment. It is just that we are no longer pointing to that branch. I think another way of addressing the same problem would be to redefine "reachable" in this context as "reachable from any current ref". -Peff -- 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