mercurial/hg.py
changeset 299 7c239fad0f27
parent 296 a3d83bf86755
parent 298 91c9fd6a7c70
child 302 498fb0fa2795
child 306 f06a4a3b86a7
equal deleted inserted replaced
296:a3d83bf86755 299:7c239fad0f27
    16 
    16 
    17 def set_exec(f, mode):
    17 def set_exec(f, mode):
    18     s = os.stat(f).st_mode
    18     s = os.stat(f).st_mode
    19     if (s & 0100 != 0) == mode:
    19     if (s & 0100 != 0) == mode:
    20         return
    20         return
    21     os.chmod(f, s & 0666 | (mode * 0111))
    21     if mode:
       
    22         # Turn on +x for every +r bit when making a file executable
       
    23         # and obey umask.
       
    24         umask = os.umask(0)
       
    25         os.umask(umask)
       
    26         os.chmod(f, s | (s & 0444) >> 2 & ~umask)
       
    27     else:
       
    28         os.chmod(f, s & 0666)
    22 
    29 
    23 class filelog(revlog):
    30 class filelog(revlog):
    24     def __init__(self, opener, path):
    31     def __init__(self, opener, path):
    25         revlog.__init__(self, opener,
    32         revlog.__init__(self, opener,
    26                         os.path.join("data", path + ".i"),
    33                         os.path.join("data", path + ".i"),
  1001             self.ui.note("getting %s\n" % f)
  1008             self.ui.note("getting %s\n" % f)
  1002             t = self.file(f).read(get[f])
  1009             t = self.file(f).read(get[f])
  1003             try:
  1010             try:
  1004                 self.wfile(f, "w").write(t)
  1011                 self.wfile(f, "w").write(t)
  1005             except IOError:
  1012             except IOError:
  1006                 os.makedirs(os.path.dirname(wp))
  1013                 os.makedirs(os.path.dirname(self.wjoin(f)))
  1007                 self.wfile(f, "w").write(t)
  1014                 self.wfile(f, "w").write(t)
  1008             set_exec(self.wjoin(f), mf2[f])
  1015             set_exec(self.wjoin(f), mf2[f])
  1009             self.dirstate.update([f], mode)
  1016             self.dirstate.update([f], mode)
  1010 
  1017 
  1011         # merge the tricky bits
  1018         # merge the tricky bits
  1013         files.sort()
  1020         files.sort()
  1014         for f in files:
  1021         for f in files:
  1015             self.ui.status("merging %s\n" % f)
  1022             self.ui.status("merging %s\n" % f)
  1016             m, o, flag = merge[f]
  1023             m, o, flag = merge[f]
  1017             self.merge3(f, m, o)
  1024             self.merge3(f, m, o)
  1018             set_exec(wp, flag)
  1025             set_exec(self.wjoin(f), flag)
  1019             self.dirstate.update([f], 'm')
  1026             self.dirstate.update([f], 'm')
  1020 
  1027 
  1021         for f in remove:
  1028         for f in remove:
  1022             self.ui.note("removing %s\n" % f)
  1029             self.ui.note("removing %s\n" % f)
  1023             os.unlink(f)
  1030             os.unlink(f)