On Mon, 11 Jul 2005, Eric W. Biederman wrote: > > Looking closer it appears that commit_list_insert is recursive > and that is what I missed.
Actually, it's "pop_most_recent_commit()" that ends up being the "recursive" part: it will pop the top-most entry, but as it is popping it it will push the parents of that entry onto the same list. So basically, you can get a list of all history by first inserting the top entry, and then doing "pop_most_recent_commit()" until the list is empty. Now, git-rev-list ends up being slightly more complex than that, since it has support for multiple starting points, and marking commits (and thus their parents) uninteresting, and two other sorting methods in addition to the default "by date" thing. And then there's all the issues about tags, trees and blobs, and their visibility as a function of the commits that are visible and the command line arguments.. In fact, it turns out that git-rev-list is really the real heart of "git". Almost everything else revolves around it. Once you grok git-rev-list, you probably really grok git. Linus - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html