Mercurial > public > mercurial-scm > hg
comparison mercurial/hg.py @ 229:1b11da6ee69e
teach commit about dirstate.parents()
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
teach commit about dirstate.parents()
manifest hash: 89374a15a1e680a251f1a084c18136cb27ad2b42
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCoMOeywK+sNU5EO8RAj6rAJ9NBf0401gAlzA315m7gaEPeteaewCfe6A4
Bn3nm77acgIukB1ePfK1o1Y=
=P2y2
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Fri, 03 Jun 2005 12:54:54 -0800 |
parents | 2502aa663484 |
children | 00ea3613f82c |
comparison
equal
deleted
inserted
replaced
228:2502aa663484 | 229:1b11da6ee69e |
---|---|
411 tr.close() | 411 tr.close() |
412 self.dirstate.setparents(p1, p2) | 412 self.dirstate.setparents(p1, p2) |
413 self.dirstate.clear() | 413 self.dirstate.clear() |
414 self.dirstate.update(mmap.keys(), "n") | 414 self.dirstate.update(mmap.keys(), "n") |
415 | 415 |
416 def commit(self, parent, files = None, text = ""): | 416 def commit(self, files = None, text = ""): |
417 self.lock() | |
418 | |
419 commit = [] | 417 commit = [] |
420 remove = [] | 418 remove = [] |
421 if files: | 419 if files: |
422 for f in files: | 420 for f in files: |
423 s = self.dirstate.state(f) | 421 s = self.dirstate.state(f) |
434 | 432 |
435 if not commit and not remove: | 433 if not commit and not remove: |
436 self.ui.status("nothing changed\n") | 434 self.ui.status("nothing changed\n") |
437 return | 435 return |
438 | 436 |
437 p1, p2 = self.dirstate.parents() | |
438 c1 = self.changelog.read(p1) | |
439 c2 = self.changelog.read(p2) | |
440 m1 = self.manifest.read(c1[0]) | |
441 m2 = self.manifest.read(c2[0]) | |
439 lock = self.lock() | 442 lock = self.lock() |
440 tr = self.transaction() | 443 tr = self.transaction() |
441 | 444 |
442 # check in files | 445 # check in files |
443 new = {} | 446 new = {} |
450 except IOError: | 453 except IOError: |
451 self.warn("trouble committing %s!\n" % f) | 454 self.warn("trouble committing %s!\n" % f) |
452 raise | 455 raise |
453 | 456 |
454 r = self.file(f) | 457 r = self.file(f) |
455 new[f] = r.add(t, tr, linkrev) | 458 fp1 = m1.get(f, nullid) |
459 fp2 = m2.get(f, nullid) | |
460 new[f] = r.add(t, tr, linkrev, fp1, fp2) | |
456 | 461 |
457 # update manifest | 462 # update manifest |
458 mmap = self.manifest.read(self.manifest.tip()) | 463 m1.update(new) |
459 mmap.update(new) | 464 for f in remove: del m1[f] |
460 for f in remove: | 465 mn = self.manifest.add(m1, tr, linkrev, c1[0], c2[0]) |
461 del mmap[f] | |
462 mnode = self.manifest.add(mmap, tr, linkrev) | |
463 | 466 |
464 # add changeset | 467 # add changeset |
465 new = new.keys() | 468 new = new.keys() |
466 new.sort() | 469 new.sort() |
467 | 470 |
468 edittext = text + "\n" + "HG: manifest hash %s\n" % hex(mnode) | 471 edittext = text + "\n" + "HG: manifest hash %s\n" % hex(mn) |
469 edittext += "".join(["HG: changed %s\n" % f for f in new]) | 472 edittext += "".join(["HG: changed %s\n" % f for f in new]) |
470 edittext += "".join(["HG: removed %s\n" % f for f in remove]) | 473 edittext += "".join(["HG: removed %s\n" % f for f in remove]) |
471 edittext = self.ui.edit(edittext) | 474 edittext = self.ui.edit(edittext) |
472 | 475 |
473 n = self.changelog.add(mnode, new, edittext, tr) | 476 n = self.changelog.add(mn, new, edittext, tr, p1, p2) |
474 tr.close() | 477 tr.close() |
475 | 478 |
476 self.setcurrent(n) | 479 self.dirstate.setparents(n) |
477 self.dirstate.update(new, "n") | 480 self.dirstate.update(new, "n") |
478 self.dirstate.forget(remove) | 481 self.dirstate.forget(remove) |
479 | 482 |
480 def checkout(self, node): | 483 def checkout(self, node): |
481 # checkout is really dumb at the moment | 484 # checkout is really dumb at the moment |