# history without losing any of the information contained therein.
# 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.
+# it now assumes these will be called Berekely-style through an
+# sccs front end, e.g. "sccs get", "sccs unget", and "sccs prs".
+# This will work with the free CSSC tools.
+#
# 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
# directory; the SCCS data itself is accessed read-only. It will
record("error recovery begins")
for master in os.listdir("SCCS"):
if is_sccsmaster(master):
- do_it("unget " + master)
+ do_it("sccs unget " + master)
print >>sys.stderr, """\
Danger! Danger!
Incomplete history in ./RCS -- remove it.
# 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:
die("garbled revision line in master file " + master)
revisions.reverse()
- # Now use prs to run through the revision list extracting data
+ # Now use sccs prs to run through the revision list extracting data
record("%s revisions: %s" % (stem, ", ".join(revisions)))
for rev in revisions:
- cmd = '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()
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]
break
# Strip leading blank lines if present.
if deltalines != ['', '']:
- while not deltalines[0].strip():
+ while deltalines and not deltalines[0].strip():
deltalines.pop(0)
deltamsg = "\n".join(deltalines)
cmd = 'ci -f -r%s -d"%s" -w%s %s' % (rev, rcsdate, author, stem)
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")