mercurial/commands.py
changeset 312 09375250eb31
parent 310 273f6a01d18b
child 317 b18ce742566a
equal deleted inserted replaced
311:3b17056b72dc 312:09375250eb31
    30     if os.getcwd() != repo.root:
    30     if os.getcwd() != repo.root:
    31         p = os.getcwd()[len(repo.root) + 1: ]
    31         p = os.getcwd()[len(repo.root) + 1: ]
    32         return [ os.path.normpath(os.path.join(p, x)) for x in args ]
    32         return [ os.path.normpath(os.path.join(p, x)) for x in args ]
    33     return args
    33     return args
    34 
    34 
    35 def dodiff(repo, files = None, node1 = None, node2 = None):
    35 def dodiff(repo, path, files = None, node1 = None, node2 = None):
    36     def date(c):
    36     def date(c):
    37         return time.asctime(time.gmtime(float(c[2].split(' ')[0])))
    37         return time.asctime(time.gmtime(float(c[2].split(' ')[0])))
    38 
    38 
    39     if node2:
    39     if node2:
    40         change = repo.changelog.read(node2)
    40         change = repo.changelog.read(node2)
    42         (c, a, d) = repo.diffrevs(node1, node2)
    42         (c, a, d) = repo.diffrevs(node1, node2)
    43         def read(f): return repo.file(f).read(mmap2[f])
    43         def read(f): return repo.file(f).read(mmap2[f])
    44         date2 = date(change)
    44         date2 = date(change)
    45     else:
    45     else:
    46         date2 = time.asctime()
    46         date2 = time.asctime()
    47         (c, a, d, u) = repo.diffdir(repo.root, node1)
    47         (c, a, d, u) = repo.diffdir(path, node1)
    48         if not node1:
    48         if not node1:
    49             node1 = repo.dirstate.parents()[0]
    49             node1 = repo.dirstate.parents()[0]
    50         def read(f): return file(os.path.join(repo.root, f)).read()
    50         def read(f): return file(os.path.join(repo.root, f)).read()
    51 
    51 
    52     change = repo.changelog.read(node1)
    52     change = repo.changelog.read(node1)
   222     if files:
   222     if files:
   223         files = relpath(repo, files)
   223         files = relpath(repo, files)
   224     else:
   224     else:
   225         files = relpath(repo, [""])
   225         files = relpath(repo, [""])
   226 
   226 
   227     dodiff(repo, files, *revs)
   227     dodiff(repo, os.getcwd(), files, *revs)
   228 
   228 
   229 def export(ui, repo, changeset):
   229 def export(ui, repo, changeset):
   230     """dump the changeset header and diffs for a revision"""
   230     """dump the changeset header and diffs for a revision"""
   231     node = repo.lookup(changeset)
   231     node = repo.lookup(changeset)
   232     prev, other = repo.changelog.parents(node)
   232     prev, other = repo.changelog.parents(node)
   239     if other != hg.nullid:
   239     if other != hg.nullid:
   240         print "# Parent  %s" % hg.hex(other)
   240         print "# Parent  %s" % hg.hex(other)
   241     print change[4].rstrip()
   241     print change[4].rstrip()
   242     print
   242     print
   243     
   243     
   244     dodiff(repo, None, prev, node)
   244     dodiff(repo, "", None, prev, node)
   245 
   245 
   246 def forget(ui, repo, file, *files):
   246 def forget(ui, repo, file, *files):
   247     """don't add the specified files on the next commit"""
   247     """don't add the specified files on the next commit"""
   248     repo.forget(relpath(repo, (file,) + files))
   248     repo.forget(relpath(repo, (file,) + files))
   249 
   249 
   447 
   447 
   448     C = changed
   448     C = changed
   449     A = added
   449     A = added
   450     R = removed
   450     R = removed
   451     ? = not tracked'''
   451     ? = not tracked'''
   452     
   452 
   453     (c, a, d, u) = repo.diffdir(repo.root)
   453     (c, a, d, u) = repo.diffdir(os.getcwd())
   454     (c, a, d, u) = map(lambda x: relfilter(repo, x), (c, a, d, u))
   454     (c, a, d, u) = map(lambda x: relfilter(repo, x), (c, a, d, u))
   455 
   455 
   456     for f in c: print "C", f
   456     for f in c: print "C", f
   457     for f in a: print "A", f
   457     for f in a: print "A", f
   458     for f in d: print "R", f
   458     for f in d: print "R", f