Mercurial > public > mercurial-scm > hg
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) |