mercurial/localrepo.py
changeset 4006 67982d3ee76c
parent 4005 656e06eebda7
child 4007 20da40cc1c73
equal deleted inserted replaced
4005:656e06eebda7 4006:67982d3ee76c
   503             data = os.readlink(self.wjoin(filename))
   503             data = os.readlink(self.wjoin(filename))
   504         else:
   504         else:
   505             data = self.wopener(filename, 'r').read()
   505             data = self.wopener(filename, 'r').read()
   506         return self._filter("encode", filename, data)
   506         return self._filter("encode", filename, data)
   507 
   507 
   508     def wwrite(self, filename, data):
   508     def wwrite(self, filename, data, flags):
   509         data = self._filter("decode", filename, data)
   509         data = self._filter("decode", filename, data)
   510         return self.wopener(filename, 'w').write(data)
   510         if "l" in flags:
       
   511             os.unlink(self.wjoin(filename))
       
   512             os.symlink(data, self.wjoin(filename))
       
   513         else:
       
   514             try:
       
   515                 if self._link(filename):
       
   516                     os.unlink(self.wjoin(filename))
       
   517             except OSError:
       
   518                 pass
       
   519             self.wopener(filename, 'w').write(data)
       
   520             util.set_exec(self.wjoin(filename), "x" in flags)
   511 
   521 
   512     def wwritedata(self, filename, data):
   522     def wwritedata(self, filename, data):
   513         return self._filter("decode", filename, data)
   523         return self._filter("decode", filename, data)
   514 
   524 
   515     def transaction(self):
   525     def transaction(self):
   969         for f in list:
   979         for f in list:
   970             if self.dirstate.state(f) not in  "r":
   980             if self.dirstate.state(f) not in  "r":
   971                 self.ui.warn("%s not removed!\n" % f)
   981                 self.ui.warn("%s not removed!\n" % f)
   972             else:
   982             else:
   973                 t = self.file(f).read(m[f])
   983                 t = self.file(f).read(m[f])
   974                 self.wwrite(f, t)
   984                 self.wwrite(f, t, m.flags(f))
   975                 util.set_exec(self.wjoin(f), m.execf(f))
       
   976                 self.dirstate.update([f], "n")
   985                 self.dirstate.update([f], "n")
   977 
   986 
   978     def copy(self, source, dest, wlock=None):
   987     def copy(self, source, dest, wlock=None):
   979         p = self.wjoin(dest)
   988         p = self.wjoin(dest)
   980         if not os.path.exists(p):
   989         if not os.path.exists(p):