Re: [RFC] Submodules in GIT

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linus Torvalds
Date: Saturday, December 2, 2006 - 2:29 pm

On Sat, 2 Dec 2006, Martin Waitz wrote:

Not map them, but track their "used" flag. Yes. You can unmap objects any 
time at all (since you can just always re-create them at any time very 
easily and cheaply), but the one thing you CANNOT recreate is the object 
flags. See "struct object", and the "used" and FLAG_BITS in particular.

Almost all git programs need the FLAG_BITS. Something as simple as just 
traversing the commit history needs at a minimum one _single_ bit for each 
object: "Have I already seen this". In reality, you tend to need two or 
three more (ie the UNINTERESTING bit ends up being as important as the 
SEEN bit, because it's what determines whether it's reachable from some 
commit we're _not_ interested in, and in the end that's what allows us to 
not traverse the whole history).

So you need at a MINIMUM to track the bits

	#define SEEN            (1u<<0)
	#define UNINTERESTING   (1u<<1)

and in practice almost everything needs

	#define SHOWN           (1u<<3)

too (SEEN is for deciding whether to _traverse_ something, SHOWN is for 
deciding whether you've already output the data for this, and the 
difference is crucial for any depth-first DAG algorithm, since you need 
to test-and-set the one bit when you first encounter the object, and 
test-and-set the other bit when you "leave" the object).

So three bits are minimal to _any_ git traversal algorithm. Many specific 
issues want more bits (eg the TREECHANGE bit may not be quite as 
fundamnetal, but it sure ends up being critical for the "track subtree" 
case).

		Linus
-
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
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [RFC] Submodules in GIT, Jakub Narebski, (Tue Nov 28, 3:50 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Tue Nov 28, 6:35 am)
Re: [RFC] Submodules in GIT, Shawn Pearce, (Tue Nov 28, 8:44 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Tue Nov 28, 9:29 am)
Re: [RFC] Submodules in GIT, Shawn Pearce, (Tue Nov 28, 9:36 am)
Re: [RFC] Submodules in GIT, Jon Loeliger, (Tue Nov 28, 10:38 am)
Re: [RFC] Submodules in GIT, Steven Grimm, (Tue Nov 28, 12:58 pm)
Re: [RFC] Submodules in GIT, Shawn Pearce, (Tue Nov 28, 2:02 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Wed Nov 29, 9:03 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Wed Nov 29, 9:15 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Wed Nov 29, 1:00 pm)
Re: [RFC] Submodules in GIT, sf, (Thu Nov 30, 4:57 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Thu Nov 30, 5:16 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Thu Nov 30, 5:40 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Thu Nov 30, 10:06 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Thu Nov 30, 11:57 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 1:49 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 2:02 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 2:33 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 3:38 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 4:00 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 5:03 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 5:09 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 5:11 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 5:12 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 6:05 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 6:21 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 6:35 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 6:43 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 6:43 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 6:46 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 6:51 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 7:23 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 7:52 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 7:58 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 8:00 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 8:07 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 8:47 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 9:04 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 9:15 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 9:38 am)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 9:49 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 9:54 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 9:57 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 10:08 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 10:14 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 10:33 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 11:06 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 11:08 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 11:48 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 11:51 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 12:17 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 12:38 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 1:13 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 1:30 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 2:04 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 2:37 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 2:54 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 3:06 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 3:08 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 3:12 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 3:26 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 3:26 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 3:35 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 3:40 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 3:41 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 3:55 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 4:03 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 4:07 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 4:09 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 4:17 pm)
Re: [RFC] Submodules in GIT, Alan Chandler, (Fri Dec 1, 4:23 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 4:30 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 4:34 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 4:36 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 4:49 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 5:12 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 5:14 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 5:33 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sat Dec 2, 2:22 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sat Dec 2, 2:27 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sat Dec 2, 3:04 am)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 4:32 am)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 6:50 am)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sat Dec 2, 11:57 am)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 12:41 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 12:46 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 12:52 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 1:12 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 1:18 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 1:21 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 1:24 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 1:40 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 1:43 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 1:44 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 1:46 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 1:58 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 2:06 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 2:22 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 2:29 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 5:55 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 6:02 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 6:11 pm)
Thoughts about memory requirements in traversals [Was: Re: ..., Josef Weidendorfer, (Sat Dec 2, 7:07 pm)
Re: Thoughts about memory requirements in traversals [Was: ..., Josef Weidendorfer, (Sat Dec 2, 8:21 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 11:29 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sun Dec 3, 2:19 am)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sun Dec 3, 10:54 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sun Dec 3, 12:33 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sun Dec 3, 1:46 pm)
Re: [RFC] Submodules in GIT, Sven Verdoolaege, (Sun Dec 3, 3:16 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sun Dec 3, 3:32 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Mon Dec 4, 4:12 am)
Re: [RFC] Submodules in GIT, Michael K. Edwards, (Mon Dec 4, 11:56 am)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Mon Dec 4, 1:26 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Mon Dec 4, 1:41 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Mon Dec 4, 2:36 pm)
Re: [RFC] Submodules in GIT, Sam Vilain, (Mon Dec 4, 6:31 pm)
Re: [RFC] Submodules in GIT, Daniel Barkalow, (Mon Dec 4, 7:33 pm)
Re: [RFC] Submodules in GIT, Uwe Kleine-Koenig, (Tue Dec 5, 2:01 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 3:33 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 3:38 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 3:42 am)
Re: [RFC] Submodules in GIT, Uwe Kleine-Koenig, (Tue Dec 5, 8:02 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 8:30 am)
Re: [RFC] Submodules in GIT, Sven Verdoolaege, (Tue Dec 5, 9:00 am)
Re: [RFC] Submodules in GIT, sf, (Tue Dec 5, 3:07 pm)
Re: [RFC] Submodules in GIT, Jon Loeliger, (Fri Dec 8, 11:29 am)
Re: [RFC] Submodules in GIT, Sven Verdoolaege, (Fri Dec 8, 11:45 am)
Re: [RFC] Submodules in GIT, R. Steve McKown, (Sat Dec 9, 2:34 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sun Dec 10, 4:47 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 12, 1:32 am)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Thu Dec 14, 2:27 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Thu Dec 14, 4:07 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 10:43 am)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 15, 2:42 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 4:43 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 6:13 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 6:20 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 15, 6:49 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 15, 7:12 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sat Dec 16, 1:50 am)