mercurial/hg.py
changeset 291 2c4f2be05587
parent 288 97c87ac6d7a4
child 292 09364bcebdf0
equal deleted inserted replaced
290:07c6cb9fd1c5 291:2c4f2be05587
   316         if create:
   316         if create:
   317             os.mkdir(self.path)  
   317             os.mkdir(self.path)  
   318             os.mkdir(self.join("data"))
   318             os.mkdir(self.join("data"))
   319 
   319 
   320         self.opener = opener(self.path)
   320         self.opener = opener(self.path)
       
   321         self.wopener = opener(self.root)
   321         self.manifest = manifest(self.opener)
   322         self.manifest = manifest(self.opener)
   322         self.changelog = changelog(self.opener)
   323         self.changelog = changelog(self.opener)
   323         self.ignorelist = None
   324         self.ignorelist = None
   324         self.tags = None
   325         self.tags = None
   325 
   326 
   328 
   329 
   329     def ignore(self, f):
   330     def ignore(self, f):
   330         if self.ignorelist is None:
   331         if self.ignorelist is None:
   331             self.ignorelist = []
   332             self.ignorelist = []
   332             try:
   333             try:
   333                 l = open(os.path.join(self.root, ".hgignore"))
   334                 l = self.wfile(".hgignore")
   334                 for pat in l:
   335                 for pat in l:
   335                     if pat != "\n":
   336                     if pat != "\n":
   336                         self.ignorelist.append(re.compile(pat[:-1]))
   337                         self.ignorelist.append(re.compile(pat[:-1]))
   337             except IOError: pass
   338             except IOError: pass
   338         for pat in self.ignorelist:
   339         for pat in self.ignorelist:
   368 
   369 
   369     def file(self, f):
   370     def file(self, f):
   370         if f[0] == '/': f = f[1:]
   371         if f[0] == '/': f = f[1:]
   371         return filelog(self.opener, f)
   372         return filelog(self.opener, f)
   372 
   373 
       
   374     def wfile(self, f, mode='r'):
       
   375         return self.wopener(f, mode)
       
   376 
   373     def transaction(self):
   377     def transaction(self):
   374         # save dirstate for undo
   378         # save dirstate for undo
   375         try:
   379         try:
   376             ds = self.opener("dirstate").read()
   380             ds = self.opener("dirstate").read()
   377         except IOError:
   381         except IOError:
   524             change = self.changelog.read(changeset)
   528             change = self.changelog.read(changeset)
   525             mf = self.manifest.read(change[0])
   529             mf = self.manifest.read(change[0])
   526             dc = self.dirstate.copy()
   530             dc = self.dirstate.copy()
   527 
   531 
   528         def fcmp(fn):
   532         def fcmp(fn):
   529             t1 = file(self.wjoin(fn)).read()
   533             t1 = self.wfile(fn).read()
   530             t2 = self.file(fn).revision(mf[fn])
   534             t2 = self.file(fn).revision(mf[fn])
   531             return cmp(t1, t2)
   535             return cmp(t1, t2)
   532 
   536 
   533         for dir, subdirs, files in os.walk(self.root):
   537         for dir, subdirs, files in os.walk(self.root):
   534             d = dir[len(self.root)+1:]
   538             d = dir[len(self.root)+1:]
   989         files.sort()
   993         files.sort()
   990         for f in files:
   994         for f in files:
   991             if f[0] == "/": continue
   995             if f[0] == "/": continue
   992             self.ui.note("getting %s\n" % f)
   996             self.ui.note("getting %s\n" % f)
   993             t = self.file(f).read(get[f])
   997             t = self.file(f).read(get[f])
   994             wp = self.wjoin(f)
       
   995             try:
   998             try:
   996                 file(wp, "w").write(t)
   999                 self.wfile(f, "w").write(t)
   997             except IOError:
  1000             except IOError:
   998                 os.makedirs(os.path.dirname(wp))
  1001                 os.makedirs(os.path.dirname(wp))
   999                 file(wp, "w").write(t)
  1002                 self.wfile(f, "w").write(t)
  1000             set_exec(wp, mf2[f])
  1003             set_exec(self.wjoin(f), mf2[f])
  1001             self.dirstate.update([f], mode)
  1004             self.dirstate.update([f], mode)
  1002 
  1005 
  1003         # merge the tricky bits
  1006         # merge the tricky bits
  1004         files = merge.keys()
  1007         files = merge.keys()
  1005         files.sort()
  1008         files.sort()