##// 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 elif cmd == "recover":
417 elif cmd == "recover":
418 repo.recover()
418 repo.recover()
419
419
420 elif cmd == "undo":
421 repo.recover("undo")
422
423 elif cmd == "verify":
420 elif cmd == "verify":
424 filelinkrevs = {}
421 filelinkrevs = {}
425 filenodes = {}
422 filenodes = {}
@@ -90,6 +90,9 b' def annotate(u, repo, args, **ops):'
90 for p,l in zip(zip(*pieces), lines):
90 for p,l in zip(zip(*pieces), lines):
91 u.write(" ".join(p) + ": " + l[1])
91 u.write(" ".join(p) + ": " + l[1])
92
92
93 def undo(ui, repo, args):
94 repo.undo()
95
93 table = {
96 table = {
94 "init": (init, [], 'hg init'),
97 "init": (init, [], 'hg init'),
95 "help": (help, [], 'hg init'),
98 "help": (help, [], 'hg init'),
@@ -100,6 +103,7 b' table = {'
100 ('n', 'number', None, 'show revision number'),
103 ('n', 'number', None, 'show revision number'),
101 ('c', 'changeset', None, 'show changeset')],
104 ('c', 'changeset', None, 'show changeset')],
102 'hg annotate [-u] [-c] [-n] [-r id] [files]'),
105 'hg annotate [-u] [-c] [-n] [-r id] [files]'),
106 "undo": (undo, [], 'hg undo'),
103 }
107 }
104
108
105 norepo = "init branch help"
109 norepo = "init branch help"
@@ -329,13 +329,35 b' class localrepository:'
329 return transaction(self.opener, self.join("journal"),
329 return transaction(self.opener, self.join("journal"),
330 self.join("undo"))
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 self.lock()
341 self.lock()
334 if os.path.exists(self.join(f)):
342 if os.path.exists(self.join("undo")):
335 self.ui.status("attempting to rollback %s information\n" % f)
343 self.ui.status("attempting to rollback last transaction\n")
336 return rollback(self.opener, self.join(f))
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 else:
359 else:
338 self.ui.warn("no %s information available\n" % f)
360 self.ui.warn("no undo information available\n")
339
361
340 def lock(self, wait = 1):
362 def lock(self, wait = 1):
341 try:
363 try:
@@ -476,7 +498,7 b' class localrepository:'
476 if fn in dc:
498 if fn in dc:
477 c = dc[fn]
499 c = dc[fn]
478 del dc[fn]
500 del dc[fn]
479 if not c:
501 if not c or c[1] < 0:
480 if fcmp(fn):
502 if fcmp(fn):
481 changed.append(fn)
503 changed.append(fn)
482 elif c[1] != s.st_size:
504 elif c[1] != s.st_size:
General Comments 0
You need to be logged in to leave comments. Login now