]> thyrsus.com Git - src.git/commitdiff
Avoid a failure case.
authorEric S. Raymond <esr@thyrsus.com>
Sat, 8 Nov 2014 06:06:37 +0000 (01:06 -0500)
committerEric S. Raymond <esr@thyrsus.com>
Sat, 8 Nov 2014 06:06:37 +0000 (01:06 -0500)
src

diff --git a/src b/src
index 295758f2c9fda70aba20d4808a84248918fa861a..0263e34eba2db6eb90a1955aa47e966e83f0d1c2 100755 (executable)
--- a/src
+++ b/src
@@ -593,16 +593,18 @@ def fast_export_method(*args):
         useremail = capture_or_die("git config --get user.email").strip()
     attribution = "%s <%s>" % (username, useremail)
     for arg in args:
+        if not os.path.exists(master(arg)):
+            croak("%s is not registered" % arg)
         executable = os.stat(arg).st_mode & stat.S_IXUSR
         if executable:
             perms = "100755"
         else:
             perms = "100644"
-        master = RCSLog(arg)
-        revspec = master.resolve(revspec)
+        metadata = RCSLog(arg)
+        revspec = metadata.resolve(revspec)
         if revspec is None:
             revspec = 1
-        revrange = range(1, len(master))
+        revrange = range(revspec, len(metadata))
         with lifted(arg):
             markmap = {}
             last_commit_mark = 0
@@ -611,13 +613,15 @@ def fast_export_method(*args):
             else:
                 # FIXME: Sanitize branch names
                 branch = arg + "master"
+            if revspec > 1:
+                sys.stdout.write("from refs/heads/%s^0" % branch)
             for revno in revrange:
                 scratchfile = "/tmp/src%dtmp" % os.getpid()
-                do_or_die("co -q -p -r{1} {0} >{2}".format(arg, master.revno_to_rcs(revno), scratchfile))
+                do_or_die("co -q -p -r{1} {0} >{2}".format(arg, metadata.revno_to_rcs(revno), scratchfile))
                 size = os.path.getsize(scratchfile)
                 mark += 1
                 markmap[revno] = mark
-                item = master.by_revno(revno)
+                item = metadata.by_revno(revno)
                 sys.stdout.write("blob\nmark :%d\ndata %d\n" % (mark, size))
                 sys.stdout.write(open(scratchfile).read() + "\n")
                 sys.stdout.write("commit refs/heads/%s\n" % branch)
@@ -630,8 +634,8 @@ def fast_export_method(*args):
                 last_commit_mark = mark
                 mark += 1
                 markmap[revno] = mark
-            for (key, val) in master.symbols.items():
-                val = master.rcs_to_revno(val)
+            for (key, val) in metadata.symbols.items():
+                val = metadata.rcs_to_revno(val)
                 if val in revrange:
                     sys.stdout.write("reset refs/tags/%s\nfrom :%d\n\n" % (key, markmap[val]))