diff -r de08788511d7 -r 3c3b126e5619 mercurial/localrepo.py --- a/mercurial/localrepo.py Sat Feb 09 20:17:09 2008 +0100 +++ b/mercurial/localrepo.py Sat Feb 09 18:38:54 2008 -0200 @@ -68,8 +68,20 @@ self.encodefn = lambda x: x self.decodefn = lambda x: x self.spath = self.path - self.sopener = util.encodedopener(util.opener(self.spath), - self.encodefn) + + try: + # files in .hg/ will be created using this mode + mode = os.stat(self.spath).st_mode + # avoid some useless chmods + if (0777 & ~util._umask) == (0777 & mode): + mode = None + except OSError: + mode = None + + self.opener.createmode = mode + sopener = util.opener(self.spath) + sopener.createmode = mode + self.sopener = util.encodedopener(sopener, self.encodefn) self.ui = ui.ui(parentui=parentui) try: