[PATCH 02 of 12] Pass cvsps output through file instead of stdin

Edouard Gomez ed.gomez at free.fr
Tue Dec 19 00:05:43 CST 2006


# HG changeset patch
# User Edouard Gomez <ed.gomez at free.fr>
# Date 1166511815 -3600
# Node ID c1fc3744581c8c009f6fcdc200ea3dc05b1d79f7
# Parent  facfb4a8c485a45d2cd5edb3a450c325102bdbca
Pass cvsps output through file instead of stdin

Using stdin inconditionnaly makes it hard to plug pdb when debugging. So
make cvsps input possible from file or stdin (default)

diff -r facfb4a8c485 -r c1fc3744581c hg-cvs-import
--- a/hg-cvs-import	Tue Dec 19 08:03:35 2006 +0100
+++ b/hg-cvs-import	Tue Dec 19 08:03:35 2006 +0100
@@ -22,7 +22,7 @@ for name, value in optlist:
 
 if not cvsroot or not module or not hgpath:
     sys.stderr.write(
-"""Usage: hg-cvs-import <-d path> <-M modulename> <-C path> [OPTIONS]
+"""Usage: hg-cvs-import <-d path> <-M modulename> <-C path> [OPTIONS] [cvsps file]
 
 Mandatory options:
  -C path: path to an initialized hg repository where patchsets will be pushed
@@ -30,6 +30,7 @@ Mandatory options:
  -M modulename: name of the CVS module to convert
 
 Optional options:
+ cvsps file: filename of the cvsps file. Can be '-' for stdin (default: stdin)
  -m mapfile: file where (cvs,hg) node couples are saved (default: map)
 
 Inline manual
@@ -257,14 +258,23 @@ def addrev(branch, tag, r, user, date, l
             addtag(branch, hg.hex(n))
         addtag(tag, hg.hex(n))
 
-cvspipe = sys.stdin
+if args is None or len(args) == 0:
+    args = ['-']
+
+cvspipe = None
+if args[0] == '-':
+    cvspipe = sys.stdin
+else:
+    try:
+        cvspipe = open(args[0], 'r')
+    except IOError:
+        sys.stderr.write('Could not read %s\n' % args[0])
+        sys.exit(1)
+
 time.tzset()
 lastpatch = None
-while True:
-    try:
-        l = raw_input()
-    except EOFError:
-        break
+for l in cvspipe:
+    l = l.rstrip()
     if l.startswith('PatchSet') and (state == 'dashes' or patchset == None):
         if patchset != None:
             addrev(branch, tag, patchset, user, date, log, files)


More information about the Mercurial-devel mailing list