On Sat, 10 Feb 2008, Linus Torvalds wrote:Well, "generation" number alone would work quote well as an exclusion mechanism; generation + roots would work better, I think. Lets take for an example the following revision graph: roots: a a a aA aA gen: 1 2 3 4 5 a----b----c----d----e / A----B--/ gen: 1 2 roots: A A For example lone generation number is enough to decide that 'c' (generation 3) cannot be reached from 'a' (generation 1 < 3), and that 'c' (generation 3) cannot be reached from 'B' (generation 2 < 3). Roots allow for easy check that 'B' (gen: 2, roots: A) cannot be reached from 'c' (roots: a, and A \not\in a), but can be reached from 'e' (gen: 5 > 2, roots: aA \ni a). What I don't know if generation number would be enough to avoid "going to root" or "going to common ancestor" costly case when calculating excluded commits. While this information can be calculated from revision graph it is I think costly enough that it truly would be better to have it in commit object. Well, we could always start using core.repositoryFormatVersion ;-) Well, we could always add it as a local (per repository) "cache". With only generation numbers we could use pack-index-like format to store a mapping "commit sha-1 => generation number", just like now pack index stores mapping "object sha-1 => offset in pack". If we want to store also roots, we could either map "commit sha-1 => generation number, roots set offset / id" (constant length value)[*1*], or have gen-*.gen file with generation numbers and roots, and gen-*.idx as index to that file. [*1*] If I understand math correctly it would limit us in theory to up to 64 roots (git.git has 8 roots IIRC). -- Jakub Narebski Poland - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Andy Whitcroft | clam |
| Jon Smirl | Re: 463 kernel developers missing! |
| Trent Piepho | [PATCH] [POWERPC] Improve (in|out)_beXX() asm code |
| Linus Torvalds | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
git: | |
| Jarek Poplawski | Re: HTB accuracy for high speed |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | [GIT]: Networking |
| Natalie Protasevich | [BUG] New Kernel Bugs |
