comparison mercurial/hg.py @ 291:2c4f2be05587

Add wopener for opening files in the working directory -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Add wopener for opening files in the working directory manifest hash: cad3a930764244a32f8e45c2ea95fa9b98690b5f -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCp5qxywK+sNU5EO8RAkfAAJ9C7V8zlbUVM8Dfs4raXMtT2bk4RQCfRfVt IfYoaVsbOUW4U1XipOZycAw= =5JDH -----END PGP SIGNATURE-----
author mpm@selenic.com
date Wed, 08 Jun 2005 17:26:09 -0800
parents 97c87ac6d7a4
children 09364bcebdf0
comparison
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()