GNU CSSC
SourceForge Project Page
About CSSC
Download Files
Documentation
FAQ
Bugs
Open Tasks
Mailing Lists
See Also

Included and Excluded deltas in CSSC

The Problem: Lack of Information

Included, excluded and ignored deltas are, taken together, probably the single most complicated feature of SCCS. Some documentation exists in the form of the SCCS manual pages, but this has not proven sufficient to make re-implementing this feature very easy.

The principal remaining problem is the fact that it's not clear to me how these feautures are supposed to work.

The real problem here is that we need to understand how these features are supposed to work before we can implement them for CSSC; this issue is the single remaining problem preventing progress towards a stable release of CSSC.

The Current Situation

The current situation, as of CSSC version 0.12alpha.pl0, is that we believe that included and probably excluded deltas in existing SCCS files are correctly handled by CSSC. However, although CSSC has a test suite, it is not nearly comprehensive enough in this area, and so this area of the functionality may not yet be completely correct.

The situation is a lot less clear with regard to the -i and -x options to get; while we suspect that these options partly work, it is thought that they have significant bugs. The -g option to delta is not implemented at all.

What you can do to help

One way of answering this question is to carefully examine how the genuine SCCS suite behaves. An investigation of this type could have several possible outputs, all very useful for CSSC :-

  • A document detailing how SCCS is supposed to behave with respect to existing SCCS files which have included and excluded deltas
  • A document which details how the -i and -x options to get and the -g option to delta are supposed to work.
  • Some test scripts which put the "genuine" version of SCCS through its paces, so that CSSC can be thoroughly tested against SCCS. Part of this job is already done, please see below.

Once we have a solid understanding of the functionality which we are trying to reproduce, actually writing the code will be quite simple.

If you think that you might be able to work on this kind of thing, please let me know; such help would be very useful indeed!

Tools Available to help with the job

The shell script testutils/compare_gets.sh which comes with the CSSC distribution is an easy way to check that SCCS and CSSC interpret a particular SCCS file in the same way. This means that a simple way to verify that CSSC correctly implements included and excluded deltas is to create a small set of torture test files, which between them exhibit all the possible combinations :-
  • An SCCS file containing one delta.
  • An SCCS file containing two deltas, the second excluding the first.
  • An SCCS file in which a delta includes another delta from which it is in any case descended
  • An SCCS file in which a delta includes another delta from which it is not descended
  • An SCCS file in which a delta excludes another delta from which it is descended
  • An SCCS file in which a delta excludes another delta from which it is not descended
  • A SCCS file in which a delta excludes one of its ancestors, where another of its (not excluded) ancestors explicitly includes the delta as well
  • An SCCS file where delta A excludes B, and B excludes C (if you get A, should the change for C be included or not?)
  • (Have I missed anything out?)

Once you have created these files, the next task would be to modify the compare_gets.sh script so that is does the same sort of thing, but tries all the legal combinations of the "-x" and "-i" options to get.

The above pretty much covers everything that needs to be done for the read-only case. The read-write case would do almost exactly the same thing as the modified version of compare_gets.sh above, but would check the file out for editing, and use delta to check the revision back in. The resulting files would then need to be compared (by running get to examine the resulting version).


Powered By SourceForge Logo
Google
Search WWW Search cssc.sourceforge.net