Show More
@@ -634,6 +634,39 b' def _checkunknownfiles(repo, wctx, mctx,' | |||
|
634 | 634 | unknownconflicts = conflicts - ignoredconflicts |
|
635 | 635 | collectconflicts(ignoredconflicts, ignoredconfig) |
|
636 | 636 | collectconflicts(unknownconflicts, unknownconfig) |
|
637 | else: | |
|
638 | for f, (m, args, msg) in actions.iteritems(): | |
|
639 | if m == 'cm': | |
|
640 | fl2, anc = args | |
|
641 | different = _checkunknownfile(repo, wctx, mctx, f) | |
|
642 | if repo.dirstate._ignore(f): | |
|
643 | config = ignoredconfig | |
|
644 | else: | |
|
645 | config = unknownconfig | |
|
646 | ||
|
647 | # The behavior when force is True is described by this table: | |
|
648 | # config different mergeforce | action backup | |
|
649 | # * n * | get n | |
|
650 | # * y y | merge - | |
|
651 | # abort y n | merge - (1) | |
|
652 | # warn y n | warn + get y | |
|
653 | # ignore y n | get y | |
|
654 | # | |
|
655 | # (1) this is probably the wrong behavior here -- we should | |
|
656 | # probably abort, but some actions like rebases currently | |
|
657 | # don't like an abort happening in the middle of | |
|
658 | # merge.update. | |
|
659 | if not different: | |
|
660 | actions[f] = ('g', (fl2, False), "remote created") | |
|
661 | elif mergeforce or config == 'abort': | |
|
662 | actions[f] = ('m', (f, f, None, False, anc), | |
|
663 | "remote differs from untracked local") | |
|
664 | elif config == 'abort': | |
|
665 | abortconflicts.add(f) | |
|
666 | else: | |
|
667 | if config == 'warn': | |
|
668 | warnconflicts.add(f) | |
|
669 | actions[f] = ('g', (fl2, True), "remote created") | |
|
637 | 670 | |
|
638 | 671 | for f in sorted(abortconflicts): |
|
639 | 672 | repo.ui.warn(_("%s: untracked file differs\n") % f) |
@@ -649,14 +682,6 b' def _checkunknownfiles(repo, wctx, mctx,' | |||
|
649 | 682 | if m == 'c': |
|
650 | 683 | flags, = args |
|
651 | 684 | actions[f] = ('g', (flags, backup), msg) |
|
652 | elif m == 'cm': | |
|
653 | fl2, anc = args | |
|
654 | different = _checkunknownfile(repo, wctx, mctx, f) | |
|
655 | if different: | |
|
656 | actions[f] = ('m', (f, f, None, False, anc), | |
|
657 | "remote differs from untracked local") | |
|
658 | else: | |
|
659 | actions[f] = ('g', (fl2, backup), "remote created") | |
|
660 | 685 | |
|
661 | 686 | def _forgetremoved(wctx, mctx, branchmerge): |
|
662 | 687 | """ |
@@ -25,7 +25,8 b'' | |||
|
25 | 25 | |
|
26 | 26 | Rebasing |
|
27 | 27 | D onto H - simple rebase: |
|
28 |
(this also tests that editor is invoked if '--edit' is specified |
|
|
28 | (this also tests that editor is invoked if '--edit' is specified, and that we | |
|
29 | can abort or warn for colliding untracked files) | |
|
29 | 30 | |
|
30 | 31 | $ hg clone -q -u . a a1 |
|
31 | 32 | $ cd a1 |
@@ -50,8 +51,10 b' D onto H - simple rebase:' | |||
|
50 | 51 | |
|
51 | 52 | $ hg status --rev "3^1" --rev 3 |
|
52 | 53 | A D |
|
53 | $ HGEDITOR=cat hg rebase -s 3 -d 7 --edit | |
|
54 | $ echo collide > D | |
|
55 | $ HGEDITOR=cat hg rebase -s 3 -d 7 --edit --config merge.checkunknown=warn | |
|
54 | 56 | rebasing 3:32af7686d403 "D" |
|
57 | D: replacing untracked file | |
|
55 | 58 | D |
|
56 | 59 | |
|
57 | 60 | |
@@ -62,6 +65,9 b' D onto H - simple rebase:' | |||
|
62 | 65 | HG: branch 'default' |
|
63 | 66 | HG: added D |
|
64 | 67 | saved backup bundle to $TESTTMP/a1/.hg/strip-backup/32af7686d403-6f7dface-backup.hg (glob) |
|
68 | $ cat D.orig | |
|
69 | collide | |
|
70 | $ rm D.orig | |
|
65 | 71 | |
|
66 | 72 | $ hg tglog |
|
67 | 73 | o 7: 'D' |
@@ -84,14 +90,19 b' D onto H - simple rebase:' | |||
|
84 | 90 | |
|
85 | 91 | |
|
86 | 92 | D onto F - intermediate point: |
|
87 |
(this also tests that editor is not invoked if '--edit' is not specified |
|
|
93 | (this also tests that editor is not invoked if '--edit' is not specified, and | |
|
94 | that we can ignore for colliding untracked files) | |
|
88 | 95 | |
|
89 | 96 | $ hg clone -q -u . a a2 |
|
90 | 97 | $ cd a2 |
|
98 | $ echo collide > D | |
|
91 | 99 | |
|
92 | $ HGEDITOR=cat hg rebase -s 3 -d 5 | |
|
100 | $ HGEDITOR=cat hg rebase -s 3 -d 5 --config merge.checkunknown=ignore | |
|
93 | 101 | rebasing 3:32af7686d403 "D" |
|
94 | 102 | saved backup bundle to $TESTTMP/a2/.hg/strip-backup/32af7686d403-6f7dface-backup.hg (glob) |
|
103 | $ cat D.orig | |
|
104 | collide | |
|
105 | $ rm D.orig | |
|
95 | 106 | |
|
96 | 107 | $ hg tglog |
|
97 | 108 | o 7: 'D' |
@@ -114,15 +125,21 b' D onto F - intermediate point:' | |||
|
114 | 125 | |
|
115 | 126 | |
|
116 | 127 | E onto H - skip of G: |
|
128 | (this also tests that we can overwrite untracked files and don't create backups | |
|
129 | if they have the same contents) | |
|
117 | 130 | |
|
118 | 131 | $ hg clone -q -u . a a3 |
|
119 | 132 | $ cd a3 |
|
133 | $ hg cat -r 4 E | tee E | |
|
134 | E | |
|
120 | 135 | |
|
121 | 136 | $ hg rebase -s 4 -d 7 |
|
122 | 137 | rebasing 4:9520eea781bc "E" |
|
123 | 138 | rebasing 6:eea13746799a "G" |
|
124 | 139 | note: rebase of 6:eea13746799a created no changes to commit |
|
125 | 140 | saved backup bundle to $TESTTMP/a3/.hg/strip-backup/9520eea781bc-fcd8edd4-backup.hg (glob) |
|
141 | $ f E.orig | |
|
142 | E.orig: file not found | |
|
126 | 143 | |
|
127 | 144 | $ hg tglog |
|
128 | 145 | o 6: 'E' |
General Comments 0
You need to be logged in to leave comments.
Login now