From: Eric S. Raymond Date: Sat, 8 Nov 2014 06:06:37 +0000 (-0500) Subject: Avoid a failure case. X-Git-Tag: 0.2~30 X-Git-Url: http://thyrsus.com/gitweb/?a=commitdiff_plain;h=bd6da6dbd74a83952951615f534b4f51c82d9d5d;p=src.git Avoid a failure case. --- diff --git a/src b/src index 295758f..0263e34 100755 --- 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]))