aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'cvs2svn_lib/rcs_revision_manager.py')
-rw-r--r--cvs2svn_lib/rcs_revision_manager.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/cvs2svn_lib/rcs_revision_manager.py b/cvs2svn_lib/rcs_revision_manager.py
new file mode 100644
index 0000000..1c2dfcf
--- /dev/null
+++ b/cvs2svn_lib/rcs_revision_manager.py
@@ -0,0 +1,51 @@
+# (Be in -*- python -*- mode.)
+#
+# ====================================================================
+# Copyright (c) 2000-2008 CollabNet. All rights reserved.
+#
+# This software is licensed as described in the file COPYING, which
+# you should have received as part of this distribution. The terms
+# are also available at http://subversion.tigris.org/license-1.html.
+# If newer versions of this license are posted there, you may use a
+# newer version instead, at your option.
+#
+# This software consists of voluntary contributions made by many
+# individuals. For exact contribution history, see the revision
+# history and logs, available at http://cvs2svn.tigris.org/.
+# ====================================================================
+
+"""Access the CVS repository via RCS's 'co' command."""
+
+
+from cvs2svn_lib.common import FatalError
+from cvs2svn_lib.process import check_command_runs
+from cvs2svn_lib.process import PipeStream
+from cvs2svn_lib.process import CommandFailedException
+from cvs2svn_lib.revision_manager import RevisionReader
+
+
+class RCSRevisionReader(RevisionReader):
+ """A RevisionReader that reads the contents via RCS."""
+
+ def __init__(self, co_executable):
+ self.co_executable = co_executable
+ try:
+ check_command_runs([self.co_executable, '-V'], self.co_executable)
+ except CommandFailedException, e:
+ raise FatalError('%s\n'
+ 'Please check that co is installed and in your PATH\n'
+ '(it is a part of the RCS software).' % (e,))
+
+ def get_content_stream(self, cvs_rev, suppress_keyword_substitution=False):
+ pipe_cmd = [
+ self.co_executable,
+ '-q',
+ '-x,v',
+ '-p%s' % (cvs_rev.rev,)
+ ]
+ if suppress_keyword_substitution:
+ pipe_cmd.append('-kk')
+ pipe_cmd.append(cvs_rev.cvs_file.filename)
+ return PipeStream(pipe_cmd)
+
+