mercurial/util.py
changeset 698 df78d8ccac4c
parent 667 31a9aa890016
child 704 5ca319a641e1
equal deleted inserted replaced
697:cb1be2327220 698:df78d8ccac4c
    43     try:
    43     try:
    44         os.rename(src, dst)
    44         os.rename(src, dst)
    45     except:
    45     except:
    46         os.unlink(dst)
    46         os.unlink(dst)
    47         os.rename(src, dst)
    47         os.rename(src, dst)
       
    48 
       
    49 def copytree(src, dst, copyfile):
       
    50     """Copy a directory tree, files are copied using 'copyfile'."""
       
    51     names = os.listdir(src)
       
    52     os.mkdir(dst)
       
    53 
       
    54     for name in names:
       
    55         srcname = os.path.join(src, name)
       
    56         dstname = os.path.join(dst, name)
       
    57         if os.path.isdir(srcname):
       
    58             copytree(srcname, dstname, copyfile)
       
    59         elif os.path.isfile(srcname):
       
    60             copyfile(srcname, dstname)
       
    61         else:
       
    62             raise IOError("Not a regular file: %r" % srcname)
    48 
    63 
    49 # Platfor specific varients
    64 # Platfor specific varients
    50 if os.name == 'nt':
    65 if os.name == 'nt':
    51     nulldev = 'NUL:'
    66     nulldev = 'NUL:'
    52 
    67