From: "Zed A. Shaw" Date: 2005-06-29T10:00:29+09:00 Subject: Re: [Project Idea] RCM - A Ruby Configuration Management System On Wed, 2005-06-29 at 05:42 +0900, Michael Neumann wrote: > Zed A. Shaw wrote: > > > > * I'm currently polishing off the Ruby/Odeum code so that I can use it > > in FastCST for full text search over code and revisions. This should > > replace just about all the tagging and "revisions follow moves" stuff > > out there. My recent tests show that this approach just rocks. > > > Could you explain more detailed what you mean with: ...tagging and > "revisions follow moves"? > > Could you give a practical example (e.g. how it would work on the > command line), so that I can understand it? ;-) Yeah, basically a common problem is that someone moves/renames a file and then changes it, and then behaves as a very poor development citizen and checks the changes in without warning people. Everyone else then starts using code that has moved out from under them and needs to find out what happened to the missing code. In CVS you're just out of luck. File go *poof*. Other systems have now started giving you their own mv commands so that they can track your move operations and then keep the revision history moving along. What I've done is approached the problem as a generalization of searching your source code. I consider the above "dammit, where did that file go." problem and other "revision follows move/rename" problems as a search problem. If I index all of the revisions and all of the current code using Ruby/Odeum then you can search for the actual code and simply ask where it is in the revisions. So rather than saying, "What happened to file blah.h" you would say, "Where did that function in blah.h go." I'm still working out the indexing and querying part, but it mostly works right now in the code sitting on my computer. Here's an example usage: fcst find -r "Runner main zshaw" Would print out all the revisions with the words 'Runner' 'main' and 'zshaw' in them, and the files/meta-data mentioning them as well. So, if I moved the main method to of the Runner class out, you'd get the log messages saying this, the revisions where this happened, and the files they moved to. In addition this also gives you free indexing of your source and I've added a bunch of very nice source searching files to the find command. Anyway, that's the really long and unclear idea. Zed