##// END OF EJS Templates
hg undo: fixup working dir state...
mpm@selenic.com -
r210:d2badbd7 default
parent child Browse files
Show More
@@ -417,9 +417,6 b' elif cmd == "tags":'
417 417 elif cmd == "recover":
418 418 repo.recover()
419 419
420 elif cmd == "undo":
421 repo.recover("undo")
422
423 420 elif cmd == "verify":
424 421 filelinkrevs = {}
425 422 filenodes = {}
@@ -90,6 +90,9 b' def annotate(u, repo, args, **ops):'
90 90 for p,l in zip(zip(*pieces), lines):
91 91 u.write(" ".join(p) + ": " + l[1])
92 92
93 def undo(ui, repo, args):
94 repo.undo()
95
93 96 table = {
94 97 "init": (init, [], 'hg init'),
95 98 "help": (help, [], 'hg init'),
@@ -100,6 +103,7 b' table = {'
100 103 ('n', 'number', None, 'show revision number'),
101 104 ('c', 'changeset', None, 'show changeset')],
102 105 'hg annotate [-u] [-c] [-n] [-r id] [files]'),
106 "undo": (undo, [], 'hg undo'),
103 107 }
104 108
105 109 norepo = "init branch help"
@@ -329,13 +329,35 b' class localrepository:'
329 329 return transaction(self.opener, self.join("journal"),
330 330 self.join("undo"))
331 331
332 def recover(self, f = "journal"):
332 def recover(self):
333 self.lock()
334 if os.path.exists(self.join("recover")):
335 self.ui.status("attempting to rollback interrupted transaction\n")
336 return rollback(self.opener, self.join("recover"))
337 else:
338 self.ui.warn("no interrupted transaction available\n")
339
340 def undo(self):
333 341 self.lock()
334 if os.path.exists(self.join(f)):
335 self.ui.status("attempting to rollback %s information\n" % f)
336 return rollback(self.opener, self.join(f))
342 if os.path.exists(self.join("undo")):
343 self.ui.status("attempting to rollback last transaction\n")
344 rollback(self.opener, self.join("undo"))
345 self.manifest = manifest(self.opener)
346 self.changelog = changelog(self.opener)
347
348 self.ui.status("discarding dircache\n")
349 node = self.changelog.tip()
350 mf = self.changelog.read(node)[0]
351 mm = self.manifest.read(mf)
352 f = mm.keys()
353 f.sort()
354
355 self.setcurrent(node)
356 self.dircache.clear()
357 self.dircache.taint(f)
358
337 359 else:
338 self.ui.warn("no %s information available\n" % f)
360 self.ui.warn("no undo information available\n")
339 361
340 362 def lock(self, wait = 1):
341 363 try:
@@ -476,7 +498,7 b' class localrepository:'
476 498 if fn in dc:
477 499 c = dc[fn]
478 500 del dc[fn]
479 if not c:
501 if not c or c[1] < 0:
480 502 if fcmp(fn):
481 503 changed.append(fn)
482 504 elif c[1] != s.st_size:
General Comments 0
You need to be logged in to leave comments. Login now