# It requires that the SCCS and RCS tools be installed on your system.
#
# This code requires only get, unget, and prs from the SCCS tools.
-# If what you have installed is cssc, you may have to find where
-# its commands are installed (probably in a /usr/lib subdirectory
-# for arch-specific binaries) and add that to your PATH.
+# It should work with either the bare tools or the sccs front end
+# in the BSD and GNU versions.
#
# Run this in a directory with an SCCS subdirectory. It will convert
# all the SCCS files to corresponding RCS master files in a new RCS
record("error recovery begins")
for sccsfile in os.listdir("SCCS"):
if is_sccsmaster(sccsfile):
- do_it("unget " + sccsfile)
+ do_it(sccs + "unget " + sccsfile)
print >>sys.stderr, """\
Danger! Danger!
Incomplete history in ./RCS -- remove it.
# This assumption works under Debian/Ubuntu and will be harmless elsewhere.
os.environ["PATH"] += ":/usr/lib/cssc:/usr/lib/x86_64-linux-gnu/cssc"
+ # Should we run through a front end?
+ if os.system("sccs >/dev/null 2>&1") == 0:
+ sccs = "sccs "
+ else:
+ sccs = ""
+
logtext = ""
# Sanity checks on the directory
# Extract a list of revisions from the master
revisions = []
try:
- for line in os.popen("prs " + sccsmaster(stem), "r"):
+ for line in os.popen(sccs + "prs " + sccsmaster(stem), "r"):
if line.startswith("D "):
revisions.append(line.split()[1])
except OSError:
# Now use sccs prs to run through the revision list extracting data
record("%s revisions: %s" % (stem, ", ".join(revisions)))
for rev in revisions:
- cmd = 'sccs prs -d":Dd: :Dm: :Dy: :T: :P:" -r%s SCCS/s.%s' % (rev, stem)
+ cmd = sccs + 'prs -d":Dd: :Dm: :Dy: :T: :P:" -r%s SCCS/s.%s' % (rev, stem)
date = do_it_or_die(cmd).strip()
try:
(day, month, year, tod, author) = date.split()
except ValueError:
- die("prs output %s from '%s'was ill-formed" % (repr(date), cmd))
+ die(sccs + "prs output %s from '%s'was ill-formed" % (repr(date), cmd))
# We assume here that no SCCS archives were made before 1970.
# If you're converting an SCCS archive made after 2070, you lose.
rcsdate = day + " " + months[int(month)-1] + " " + year + " " + tod
progress("==> file %s, rev=%s, date=%s, author=%s" \
% (stem, rev, rcsdate, author))
- do_it_or_die("get -e -r%s %s" % (rev, sccsmaster(stem)))
+ do_it_or_die(sccs + "get -e -r%s %s" % (rev, sccsmaster(stem)))
record("checked out of SCCS")
# replace SCCS keywords with RCS keywords
do_it_or_die("rcs -l %s" % (stem,))
record("got trunk lock")
# Extract the delta message for this revision
- deltamsg = do_it_or_die("prs -r%s SCCS/s.%s" % (rev, stem))
+ deltamsg = do_it_or_die(sccs + "prs -r%s SCCS/s.%s" % (rev, stem))
deltalines = deltamsg.split("\n")
while deltalines:
line = deltalines[0]
except OSError:
die("RCS checkin of delta failed")
# We're done with this master, unlock it.
- do_it_or_die("unget -r%s %s" % (rev, sccsmaster(stem)))
+ do_it_or_die(sccs + "unget -r%s %s" % (rev, sccsmaster(stem)))
# Generate tags from snapshots created by Emacs VC mode
tagnames = os.path.join("SCCS", "VC-names")
<para><command>sccs2rcs</command> is a script to convert an existing
SCCS history into an RCS history without losing any of the information
contained therein. It requires that the SCCS and RCS tools be
-installed on your system. </para>
+installed on your system. It will cope gracefull with the BSD/GNU
+sccs front end.</para>
<para>Run this in a directory with an SCCS subdirectory. It will convert
all the SCCS files to corresponding RCS master files in a new RCS
for debugging unusual situations.</para>
</refsect1>
-<refsect1 id='problems'><title>PROBLEMS</title>
-<para>This code requires only get, unget, and prs from the SCCS tools.
-If what you have installed is cssc, you may have to find where
-its commands are installed (probably in a /usr/lib subdirectory
-for arch-specific binaries) and add that to your PATH.</para>
-</refsect1>
-
-
-
<refsect1 id='returns'><title>ERROR RETURNS</title>
<para>Returns 1 on any error, 0 otherwise.</para>
</refsect1>