##// END OF EJS Templates
commit: force create a new filenode if it was set in mergestate by merge...
Pulkit Goyal -
r46159:479cce8c default
parent child Browse files
Show More
@@ -332,9 +332,20 b' def _filecommit('
332 ):
332 ):
333 fparent1, fparent2 = fparent2, nullid
333 fparent1, fparent2 = fparent2, nullid
334
334
335 force_new_node = False
336 # The file might have been deleted by merge code and user explicitly choose
337 # to revert the file and keep it. The other case can be where there is
338 # change-delete or delete-change conflict and user explicitly choose to keep
339 # the file. The goal is to create a new filenode for users explicit choices
340 if (
341 repo.ui.configbool(b'experimental', b'merge-track-salvaged')
342 and ms.active()
343 and ms.extras(fname).get(b'merge-removal-candidate') == b'yes'
344 ):
345 force_new_node = True
335 # is the file changed?
346 # is the file changed?
336 text = fctx.data()
347 text = fctx.data()
337 if fparent2 != nullid or meta or flog.cmp(fparent1, text):
348 if fparent2 != nullid or meta or flog.cmp(fparent1, text) or force_new_node:
338 if touched is None: # do not overwrite added
349 if touched is None: # do not overwrite added
339 touched = 'modified'
350 touched = 'modified'
340 fnode = flog.add(text, meta, tr, linkrev, fparent1, fparent2)
351 fnode = flog.add(text, meta, tr, linkrev, fparent1, fparent2)
@@ -593,17 +593,15 b' Do all the merge combination (from the deleted or the update side \xc3\x97 keeping and deleting the file'
593 other-file
593 other-file
594 the-file
594 the-file
595
595
596 XXX: This should create a new filenode because user explicitly decided to keep
597 the file. If we reuse the same filenode, future merges (criss-cross ones mostly)
598 will think that file remain unchanged and user explicit choice will not be taken
599 in consideration.
600 $ hg debugrevlogindex the-file
596 $ hg debugrevlogindex the-file
601 rev linkrev nodeid p1 p2
597 rev linkrev nodeid p1 p2
602 0 0 4b69178b9bda 000000000000 000000000000
598 0 0 4b69178b9bda 000000000000 000000000000
603 1 1 59e363a07dc8 4b69178b9bda 000000000000
599 1 1 59e363a07dc8 4b69178b9bda 000000000000
600 2 5 885af55420b3 59e363a07dc8 000000000000 (newfilenode !)
604
601
605 $ hg update 'desc("updating-both-file")'
602 $ hg update 'desc("updating-both-file")'
606 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
603 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (newfilenode !)
604 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (old !)
607 $ hg merge 'desc("delete-the-file")' -t :local
605 $ hg merge 'desc("delete-the-file")' -t :local
608 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
606 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
609 (branch merge, don't forget to commit)
607 (branch merge, don't forget to commit)
@@ -630,11 +628,13 b' in consideration.'
630 rev linkrev nodeid p1 p2
628 rev linkrev nodeid p1 p2
631 0 0 4b69178b9bda 000000000000 000000000000
629 0 0 4b69178b9bda 000000000000 000000000000
632 1 1 59e363a07dc8 4b69178b9bda 000000000000
630 1 1 59e363a07dc8 4b69178b9bda 000000000000
631 2 5 885af55420b3 59e363a07dc8 000000000000 (newfilenode !)
633
632
634 $ hg log -G -T '{node|short} {desc}\n'
633 $ hg log -G -T '{node|short} {desc}\n'
635 @ 5e3eccec60d8 merge-keeping-the-file-from-updated
634 @ 5e3eccec60d8 merge-keeping-the-file-from-updated
636 |\
635 |\
637 +---o e9b708131723 merge-keeping-the-file-from-deleted
636 +---o 38a4c3e7cac8 merge-keeping-the-file-from-deleted (newfilenode !)
637 +---o e9b708131723 merge-keeping-the-file-from-deleted (old !)
638 | |/
638 | |/
639 +---o a4e0e44229dc merge-deleting-the-file-from-updated
639 +---o a4e0e44229dc merge-deleting-the-file-from-updated
640 | |/
640 | |/
@@ -666,16 +666,19 b' BROKEN: this should result in conflict'
666 $ hg update --clean 'desc("merge-deleting-the-file-from-deleted")'
666 $ hg update --clean 'desc("merge-deleting-the-file-from-deleted")'
667 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
667 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
668 $ hg merge 'desc("merge-keeping-the-file-from-deleted")'
668 $ hg merge 'desc("merge-keeping-the-file-from-deleted")'
669 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
669 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (newfilenode !)
670 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (old !)
670 (branch merge, don't forget to commit)
671 (branch merge, don't forget to commit)
671 $ ls -1
672 $ ls -1
672 other-file
673 other-file
674 the-file (newfilenode !)
673
675
674 (merging a deletion with keeping → conflict)
676 (merging a deletion with keeping → conflict)
675 BROKEN: this should result in conflict
677 BROKEN: this should result in conflict
676
678
677 $ hg update --clean 'desc("merge-deleting-the-file-from-deleted")'
679 $ hg update --clean 'desc("merge-deleting-the-file-from-deleted")'
678 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
680 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (newfilenode !)
681 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (old !)
679 $ hg merge 'desc("merge-keeping-the-file-from-updated")'
682 $ hg merge 'desc("merge-keeping-the-file-from-updated")'
680 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
683 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
681 (branch merge, don't forget to commit)
684 (branch merge, don't forget to commit)
@@ -698,16 +701,19 b' BROKEN: this should result in conflict'
698 $ hg update --clean 'desc("merge-deleting-the-file-from-updated")'
701 $ hg update --clean 'desc("merge-deleting-the-file-from-updated")'
699 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
702 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
700 $ hg merge 'desc("merge-keeping-the-file-from-deleted")'
703 $ hg merge 'desc("merge-keeping-the-file-from-deleted")'
701 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
704 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (newfilenode !)
705 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (old !)
702 (branch merge, don't forget to commit)
706 (branch merge, don't forget to commit)
703 $ ls -1
707 $ ls -1
704 other-file
708 other-file
709 the-file (newfilenode !)
705
710
706 (merging a deletion with keeping conflict)
711 (merging a deletion with keeping conflict)
707 BROKEN: this should result in conflict
712 BROKEN: this should result in conflict
708
713
709 $ hg update --clean 'desc("merge-deleting-the-file-from-updated")'
714 $ hg update --clean 'desc("merge-deleting-the-file-from-updated")'
710 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
715 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (newfilenode !)
716 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (old !)
711 $ hg merge 'desc("merge-keeping-the-file-from-updated")'
717 $ hg merge 'desc("merge-keeping-the-file-from-updated")'
712 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
718 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
713 (branch merge, don't forget to commit)
719 (branch merge, don't forget to commit)
@@ -719,7 +725,8 b' BROKEN: this should result in conflict'
719 $ hg update --clean 'desc("merge-keeping-the-file-from-updated")'
725 $ hg update --clean 'desc("merge-keeping-the-file-from-updated")'
720 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
726 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
721 $ hg merge 'desc("merge-keeping-the-file-from-deleted")'
727 $ hg merge 'desc("merge-keeping-the-file-from-deleted")'
722 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
728 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (newfilenode !)
729 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (old !)
723 (branch merge, don't forget to commit)
730 (branch merge, don't forget to commit)
724 $ ls -1
731 $ ls -1
725 other-file
732 other-file
@@ -729,7 +736,8 b' BROKEN: this should result in conflict'
729 BROKEN: this should result in conflict
736 BROKEN: this should result in conflict
730
737
731 $ hg update --clean 'desc("merge-keeping-the-file-from-updated")'
738 $ hg update --clean 'desc("merge-keeping-the-file-from-updated")'
732 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
739 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (newfilenode !)
740 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (old !)
733 $ hg merge 'desc("merge-deleted-the-file-from-deleted")'
741 $ hg merge 'desc("merge-deleted-the-file-from-deleted")'
734 abort: empty revision set
742 abort: empty revision set
735 [255]
743 [255]
@@ -752,7 +760,8 b' BROKEN: this should result in conflict'
752 (merging two "keeping" together → no conflict)
760 (merging two "keeping" together → no conflict)
753
761
754 $ hg update --clean 'desc("merge-keeping-the-file-from-deleted")'
762 $ hg update --clean 'desc("merge-keeping-the-file-from-deleted")'
755 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
763 1 files updated, 0 files merged, 0 files removed, 0 files unresolved (newfilenode !)
764 0 files updated, 0 files merged, 0 files removed, 0 files unresolved (old !)
756 $ hg merge 'desc("merge-keeping-the-file-from-updated")'
765 $ hg merge 'desc("merge-keeping-the-file-from-updated")'
757 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
766 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
758 (branch merge, don't forget to commit)
767 (branch merge, don't forget to commit)
General Comments 0
You need to be logged in to leave comments. Login now