Mercurial > public > mercurial-scm > hg
comparison mercurial/localrepo.py @ 4058:e7282dede8cd
filecommit: don't forget the local parent on a merge with a local rename
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Tue, 30 Jan 2007 19:09:08 -0200 |
parents | 27230c29bfec |
children | 431f3c1d3a37 43d8f7466920 |
comparison
equal
deleted
inserted
replaced
4057:3600b84656d3 | 4058:e7282dede8cd |
---|---|
605 fp2 = manifest2.get(fn, nullid) | 605 fp2 = manifest2.get(fn, nullid) |
606 | 606 |
607 meta = {} | 607 meta = {} |
608 cp = self.dirstate.copied(fn) | 608 cp = self.dirstate.copied(fn) |
609 if cp: | 609 if cp: |
610 # Mark the new revision of this file as a copy of another | |
611 # file. This copy data will effectively act as a parent | |
612 # of this new revision. If this is a merge, the first | |
613 # parent will be the nullid (meaning "look up the copy data") | |
614 # and the second one will be the other parent. For example: | |
615 # | |
616 # 0 --- 1 --- 3 rev1 changes file foo | |
617 # \ / rev2 renames foo to bar and changes it | |
618 # \- 2 -/ rev3 should have bar with all changes and | |
619 # should record that bar descends from | |
620 # bar in rev2 and foo in rev1 | |
621 # | |
622 # this allows this merge to succeed: | |
623 # | |
624 # 0 --- 1 --- 3 rev4 reverts the content change from rev2 | |
625 # \ / merging rev3 and rev4 should use bar@rev2 | |
626 # \- 2 --- 4 as the merge base | |
627 # | |
610 meta["copy"] = cp | 628 meta["copy"] = cp |
611 if not manifest2: # not a branch merge | 629 if not manifest2: # not a branch merge |
612 meta["copyrev"] = hex(manifest1.get(cp, nullid)) | 630 meta["copyrev"] = hex(manifest1.get(cp, nullid)) |
613 fp2 = nullid | 631 fp2 = nullid |
614 elif fp2 != nullid: # copied on remote side | 632 elif fp2 != nullid: # copied on remote side |
615 meta["copyrev"] = hex(manifest1.get(cp, nullid)) | 633 meta["copyrev"] = hex(manifest1.get(cp, nullid)) |
616 elif fp1 != nullid: # copied on local side, reversed | 634 elif fp1 != nullid: # copied on local side, reversed |
617 meta["copyrev"] = hex(manifest2.get(cp)) | 635 meta["copyrev"] = hex(manifest2.get(cp)) |
618 fp2 = nullid | 636 fp2 = fp1 |
619 else: # directory rename | 637 else: # directory rename |
620 meta["copyrev"] = hex(manifest1.get(cp, nullid)) | 638 meta["copyrev"] = hex(manifest1.get(cp, nullid)) |
621 self.ui.debug(_(" %s: copy %s:%s\n") % | 639 self.ui.debug(_(" %s: copy %s:%s\n") % |
622 (fn, cp, meta["copyrev"])) | 640 (fn, cp, meta["copyrev"])) |
623 fp1 = nullid | 641 fp1 = nullid |