Mercurial > public > mercurial-scm > hg
comparison mercurial/localrepo.py @ 6874:8dc21876261e
commit: simplify file copy logic
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 10 Aug 2008 18:01:03 -0500 |
parents | deda205a00e1 |
children | 0d714a48ab53 |
comparison
equal
deleted
inserted
replaced
6873:39b4db2ea6ed | 6874:8dc21876261e |
---|---|
685 fl = self.file(fn) | 685 fl = self.file(fn) |
686 fp1 = manifest1.get(fn, nullid) | 686 fp1 = manifest1.get(fn, nullid) |
687 fp2 = manifest2.get(fn, nullid) | 687 fp2 = manifest2.get(fn, nullid) |
688 | 688 |
689 meta = {} | 689 meta = {} |
690 cp = self.dirstate.copied(fn) | 690 cf = self.dirstate.copied(fn) |
691 if cp and cp != fn: | 691 if cf and cf != fn: |
692 # Mark the new revision of this file as a copy of another | 692 # Mark the new revision of this file as a copy of another |
693 # file. This copy data will effectively act as a parent | 693 # file. This copy data will effectively act as a parent |
694 # of this new revision. If this is a merge, the first | 694 # of this new revision. If this is a merge, the first |
695 # parent will be the nullid (meaning "look up the copy data") | 695 # parent will be the nullid (meaning "look up the copy data") |
696 # and the second one will be the other parent. For example: | 696 # and the second one will be the other parent. For example: |
705 # | 705 # |
706 # 0 --- 1 --- 3 rev4 reverts the content change from rev2 | 706 # 0 --- 1 --- 3 rev4 reverts the content change from rev2 |
707 # \ / merging rev3 and rev4 should use bar@rev2 | 707 # \ / merging rev3 and rev4 should use bar@rev2 |
708 # \- 2 --- 4 as the merge base | 708 # \- 2 --- 4 as the merge base |
709 # | 709 # |
710 meta["copy"] = cp | 710 |
711 if not manifest2: # not a branch merge | 711 cr = manifest1.get(cf, nullid) |
712 meta["copyrev"] = hex(manifest1[cp]) | 712 nfp = fp2 |
713 fp2 = nullid | 713 |
714 elif fp2 != nullid: # copied on remote side | 714 if manifest2: # branch merge |
715 meta["copyrev"] = hex(manifest1[cp]) | 715 if fp2 == nullid: # copied on remote side |
716 elif fp1 != nullid: # copied on local side, reversed | 716 if fp1 != nullid or cf in manifest2: |
717 meta["copyrev"] = hex(manifest2[cp]) | 717 cr = manifest2[cf] |
718 fp2 = fp1 | 718 nfp = fp1 |
719 elif cp in manifest2: # directory rename on local side | 719 |
720 meta["copyrev"] = hex(manifest2[cp]) | 720 self.ui.debug(_(" %s: copy %s:%s\n") % (fn, cf, hex(cr))) |
721 else: # directory rename on remote side | 721 meta["copy"] = cf |
722 meta["copyrev"] = hex(manifest1[cp]) | 722 meta["copyrev"] = hex(cr) |
723 self.ui.debug(_(" %s: copy %s:%s\n") % | 723 fp1, fp2 = nullid, nfp |
724 (fn, cp, meta["copyrev"])) | |
725 fp1 = nullid | |
726 elif fp2 != nullid: | 724 elif fp2 != nullid: |
727 # is one parent an ancestor of the other? | 725 # is one parent an ancestor of the other? |
728 fpa = fl.ancestor(fp1, fp2) | 726 fpa = fl.ancestor(fp1, fp2) |
729 if fpa == fp1: | 727 if fpa == fp1: |
730 fp1, fp2 = fp2, nullid | 728 fp1, fp2 = fp2, nullid |