Mercurial > public > mercurial-scm > hg-stable
diff mercurial/localrepo.py @ 4006:67982d3ee76c
symlinks: add flags param to wwrite
Now wwrite can set symlink and exec for files
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 29 Dec 2006 20:04:31 -0600 |
parents | 656e06eebda7 |
children | 20da40cc1c73 |
line wrap: on
line diff
--- a/mercurial/localrepo.py Fri Dec 29 20:04:31 2006 -0600 +++ b/mercurial/localrepo.py Fri Dec 29 20:04:31 2006 -0600 @@ -505,9 +505,19 @@ data = self.wopener(filename, 'r').read() return self._filter("encode", filename, data) - def wwrite(self, filename, data): + def wwrite(self, filename, data, flags): data = self._filter("decode", filename, data) - return self.wopener(filename, 'w').write(data) + if "l" in flags: + os.unlink(self.wjoin(filename)) + os.symlink(data, self.wjoin(filename)) + else: + try: + if self._link(filename): + os.unlink(self.wjoin(filename)) + except OSError: + pass + self.wopener(filename, 'w').write(data) + util.set_exec(self.wjoin(filename), "x" in flags) def wwritedata(self, filename, data): return self._filter("decode", filename, data) @@ -971,8 +981,7 @@ self.ui.warn("%s not removed!\n" % f) else: t = self.file(f).read(m[f]) - self.wwrite(f, t) - util.set_exec(self.wjoin(f), m.execf(f)) + self.wwrite(f, t, m.flags(f)) self.dirstate.update([f], "n") def copy(self, source, dest, wlock=None):