binary searching CVS, automation, arch news

Tom Lord lord@emf.net
Wed Dec 18 14:09:00 GMT 2002



a) Binary searching through CVS revisions using _dates_ is
   only an approximation of what you really intend to do.
   You'll have a hard time, with such a search, getting a 
   tree for the point between two commits close in time.
   If there are commits that span the time coordinates that
   your search probes, you'll be testing trees that contain
   just part of those commits (and that are likely useless
   as a result).   So, here, you'd be better off using any
   modern system that features atomic multi-file commits.

   In arch, successive revisions are assigned sequential numbers,
   so your binary search can use simple arithmetic on those
   revision numbers to select points in the history to test
   (no fussing with dates, for example, and no need for tricky
   queries to find the list of revisions that effect the branch
   you are testing).


b) Robert Dewar says (of automated acceptance testing):

	Yes, indeed, automating requirements like this is always
	desirable. Although you probably want ways to override
	requirements in emergencies.

	What we find is that the key point is that it must be *easy*
	to follow procedures, if it is, then they get followed, if
	not, no amount of social pressure can guarantee conformance
	:-)

   Let me just say in response that, if arch did become a funded
   project with a little team working on it, I'd want to see the
   effort have three mostly-concurrent parts:

	1) A "theory" part, concerned with developing and 
	   writing high quality formal specifications (e.g., 
	   for changeset syntax and semantics)

	2) An "implementation" part, concerned with verifying 
	   the reference implementation, keeping it up with the
	   specs, and performance tuning it.

	3) An "application" part, concerned with building a 
	   real-world infrastructure, using arch, for a large real-world
	   project.  We'd want to build this infrastructure "off-line"
  	   -- not even attempting to begin deployment in the target
	   project until the infrastructure was reasonably mature and
	   clearly an upgrade.  But we'd also want to (a) attempt to
	   track some development on the project -- to follow along
	   with it in parallel, and (b) engage the project's
	   developers to contribute design review and ideas for this
	   infrastructure as we go along (c) seek to deploy
	   incrementally, anticipating a period when some developers
	   adopt the new infrastructure while others stick with the
	   old, probably moving mainline and maintainer branches to
	   the new infrastructure later, rather than sooner.

	   I agree with generalities about "overrides" and making
	   things "*easy*" and (from other comments) "fast" -- it's
	   this application aspect of the project that can help make
	   those generalities specific.  If a project like this had
	   started six months ago, then when the recent need for a
	   binary search through revisions to isolate a bug came up,
	   maybe we could have done that -- even before deployment.


c) I often tout the small size and tractability of arch as one of its
   virtues.  Recent traffic on the arch developers list at
   www.fifthvision.net/Arch is entertaining in that regard.  While
   some developers have decided to start rewriting parts in C++,
   some current users object to that -- and boom, new forks have 
   already been announced over the issue.   That people consider
   making forks just for their own private deployment is, I think, 
   a testimony to arch's overall simplicity.


d) One user recently reported (and, sorry, I know there's not enough
   data in this anecdote to do envelope computations):

	I have then taken this archive and have converted it to Arch
	with an rlogparse.py and cvs2arch script I have put together
	that tracks the commits in the CVS archive and converts them
	to Arch prompting for user input when it comes to a tag/branch
	to see what the user wants to do with it on the Arch side.  I
	am talking over 10 years of data here converted consuming over
	500M of space once in Arch.  Not bad for a micro-kernel
	really.

   At least qualitatively, that suggests that even the prototype is 
   capable of some respectable feats.



More information about the Gcc mailing list