comparison mercurial/hg.py @ 4:ce3bd728b858

Fix exception handling for reading current working version
author mpm@selenic.com
date Tue, 03 May 2005 18:36:16 -0800
parents 9117c6561b0b
children b4d0c3786ad3
comparison
equal deleted inserted replaced
3:3a6392190075 4:ce3bd728b858
3 # Copyright 2005 Matt Mackall <mpm@selenic.com> 3 # Copyright 2005 Matt Mackall <mpm@selenic.com>
4 # 4 #
5 # This software may be used and distributed according to the terms 5 # This software may be used and distributed according to the terms
6 # of the GNU General Public License, incorporated herein by reference. 6 # of the GNU General Public License, incorporated herein by reference.
7 7
8 import sys, struct, sha, socket, os, time, base64, re, urllib2 8 import sys, struct, sha, socket, os, time, base64, re, urllib2, binascii
9 from mercurial import byterange 9 from mercurial import byterange
10 from mercurial.transaction import * 10 from mercurial.transaction import *
11 from mercurial.revlog import * 11 from mercurial.revlog import *
12 12
13 def hex(node): return binascii.hexlify(node) 13 def hex(node): return binascii.hexlify(node)
253 self.ignorelist = None 253 self.ignorelist = None
254 254
255 if not self.remote: 255 if not self.remote:
256 self.dircache = dircache(self.opener) 256 self.dircache = dircache(self.opener)
257 try: 257 try:
258 self.current = bin(self.open("current").read()) 258 self.current = bin(self.opener("current").read())
259 except: 259 except IOError:
260 self.current = None 260 self.current = None
261 261
262 def setcurrent(self, node): 262 def setcurrent(self, node):
263 self.current = node 263 self.current = node
264 self.opener("current", "w").write(hex(node)) 264 self.opener("current", "w").write(hex(node))
475 self.dircache.update(l) 475 self.dircache.update(l)
476 476
477 def diffdir(self, path): 477 def diffdir(self, path):
478 dc = self.dircache.copy() 478 dc = self.dircache.copy()
479 changed = [] 479 changed = []
480 mf = {}
480 added = [] 481 added = []
481 482
482 mmap = {}
483 if self.current: 483 if self.current:
484 change = self.changelog.read(self.current) 484 change = self.changelog.read(self.current)
485 mmap = self.manifest.read(change[0]) 485 mf = self.manifest.read(change[0])
486 486
487 for dir, subdirs, files in os.walk(self.root): 487 for dir, subdirs, files in os.walk(self.root):
488 d = dir[len(self.root)+1:] 488 d = dir[len(self.root)+1:]
489 if ".hg" in subdirs: subdirs.remove(".hg") 489 if ".hg" in subdirs: subdirs.remove(".hg")
490 490
497 del dc[fn] 497 del dc[fn]
498 if c[1] != s.st_size: 498 if c[1] != s.st_size:
499 changed.append(fn) 499 changed.append(fn)
500 elif c[0] != s.st_mode or c[2] != s.st_mtime: 500 elif c[0] != s.st_mode or c[2] != s.st_mtime:
501 t1 = file(fn).read() 501 t1 = file(fn).read()
502 t2 = self.file(fn).revision(mmap[fn]) 502 t2 = self.file(fn).revision(mf[fn])
503 if t1 != t2: 503 if t1 != t2:
504 changed.append(fn) 504 changed.append(fn)
505 else: 505 else:
506 if self.ignore(fn): continue 506 if self.ignore(fn): continue
507 added.append(fn) 507 added.append(fn)