This is the home page for BitSCCS, a reimplementation of SCCS.
Thanks for stopping in.
What is BitSCCS?
-
BitSCCS is a reimplementation of the original Source Code Control System (SCCS)
written in the 1970's by Marc Rochkind at AT&T Bell Labs. Documentation on
the SCCS system may be found by searching for
SCCS
at the Open Group's
online documentation.
-
New! Getting started with BitSCCS docs are
here.
-
BitSCCS is part of a higher level system called
BitKeeper
which is a fully distributed source management system. Please read more
about that
here. BitKeeper is the higher level system, BitSCCS is the underpinnings.
-
BitSCCS has substantial extensions beyond the basics provided by SCCS. In
addition to the standard commands (admin, delta, get, prs, what), BitSCCS
provides the following commands:
- ci, co - RCS compatible interfaces to the BitSCCS system. If there are
no SCCS files present, these will fall back to RCS.
- diffs, sdiffs - generate differences between the working version and
the previous version (or any two arbitrary versions). Sdiffs does side by
side diffs and diffs does regular, context, or unified diff format.
- clean - removes all unchanged working files. Clean can also be
instructed to remove all changed working files, discarding any work in
progress.
- sccslog - time sorted list of changes to a group of files. Both RCS
and SCCS have comands for viewing revision history, but these commands (rlog
and prs) work on a file at a time, i.e., first all the informationfrom one
file, then the next, etc. Sccslog sorts the changes by time across all files,
which is a much more intuitive way to view the data.
- smoosh - takes two, potentially modified, SCCS files and does a graph
merge such that the resulting file is a superset of each of the files.
- sccssh - a performance hack, a shell that has the commands built in.
- rcs2sccs - a script for converting RCS files to SCCS files.
In addition, BitSCCS provides the following features not found in SCCS:
- Symbols - used to place a symbolic name on a revision in multiple files,
i.e., tag the current top of trunk with ``Alpha.'' Symbols are revision
controlled just like file contents.
- Y2K & 4 digit years - BitSCCS includes the Y2K fix that considers
years before 70 to be 2070, not 1970. In addition, BitSCCS can be instructed
to expand keywords using 4 digit years instead of the tradition 2 digits.
- Range processing - BitSCCS commands support the use of ranges for specifying
a revision or set of revisions. The ranges have two notations: (start stop]
or start,.stop - both of which mean revisions after start but up to and
including stop. start/stop can be dates, revisions, and/or symbols.
- Compressed binaries - BitSCCS supports uuecnoded binaries as well as
compressed (gzipped) and uuencoded binaries.
- Time zones, pathnames, hostnames are recorded. ATT SCCS did not record
this information. Pathnames are revision controlled just like file contents.
BitSCCS does and can use the key user@host:path-time as
a unique identifier for each delta. This works across multiple files and
is used by BitKeeper.
- Uniform file name generation - all commands use the same syntax for
specifying files. The syntax is backwards compatible with ATT SCCS but
has extensions. See the man page for more info.
- RCS keyword expansion - the rcs2sccs script turns on a flag which will
expand RCS keywords. This is useful for converting code.
- User, revision, date, file name prefices - files may be viewed with any
combination of the listed fields in front of each line in the file. This
is very useful for tracking down the introduction of bugs.
- Regression test - there is a substantial regression test for BitSCCS.
This exists mostly for the benefit of the developers, but should be comforting
to users.
Where can I get it?
-
You may get an Alpha version of BitSCCS
here.
Is there a GUI?
-
We're glad you asked that. There sure are GUI tools, and they are written by
programmers for programmers. If you have carpal tunnel, you'll like these.
If you don't have carpal tunnel, these tools will help you not get it. The
tools can be used with a minimal number of mouse clicks, etc.
-
The links below are to screen shots of the tools in action. The screen
shots aren't too big, around 10-13Kbytes each.
-
These tools are wrtten in tcl/tk, calling out to BitSCCS tools for
manipulating the revision control files.
Many thanks
are due to John Ousterhout and the Scriptics team for an excellent GUI
toolkit.
-
There is a pretty reasonable
file merge tool. It displays 3 text widgets,
the top two are the two different versions and the bottom one is where
the merged version goes. The current diff is highlighted in each of the
files and which ever one you pick will be highlighted in the merge file.
It currently only does two way diffs, but threeway is coming soon.
-
There is a SCCS file browser which displays
a graphical view of the file's revision history and gives you a text
widget in which you can see revision history log entries, diffs, or any
version of the file. Currently, this tool does not suport lines of
development. In the future, when LOD's get integrated with BitSCCS,
the tool will allow you to view on a per LOD basis or on all at once.
This will up the signal/noise ratio a bit.
-
Finally, there is a very useful check in tool.
It has three scrolling windows, one for the list of files needing a
checkin, another where you type in comments, and a final one which
displays color coded diffs or revision history. A lot of work has
gone into this tool to make it so you don't have to do any unnecessary
work when checking in files. For example, the comments window always
has the focus, you never have to go click it after scrolling a different
window or clicking on the next file. While typing comments, you can page
through the diffs without moving your mouse - there are keyboard
accelerators to do this. You can drop into a little
text editor
if you decide that you need to fix up a change. The current set of changes
are highlighted in the text editor so they are easy to find.
What's the license?
-
The license is not finalized yet, but the goal is to have the software
be free for free software development, and commercial for commercial
software development. Before you start flaming about this, stop to
consider that as of October 1 1998, I've lost about $118,000 of income
to develop this to date. I quit my job to do this because I
thought it was important that Linus get some help. I have a mortgage to
pay and a family to support. Let he who has personally spent
as much post the first flame.
Are people discussing this?
-
Yes. There is a mailing list maintained on BitMover. Send
majordomo@bitmover.com
and ask to join the "bitkeeper-users" list for development information or
the "bitkeeper-announce" list for status only.
The achives of the mailing list are kept
here.
How is this being developed?
-
On a shoestring. We're looking for corporate sponsorship for this project
so if you know of a company that needs tools like this, please send them
sales@bitmover.com. Thanks.
Larry McVoy,
lm@bitmover.com