##// END OF EJS Templates
phabricator: make user searches case-insensitive...
phabricator: make user searches case-insensitive User names in conduit are case insensitive, but when looking for "FOO" it would return "foo" instead and we'd think the user didn't exist. So lower case both the query and the response when comparing them. Differential Revision: https://phab.mercurial-scm.org/D5934

File last commit:

r40865:23dc2389 default
r41854:570e62f1 default
Show More
test-rebase-inmemory.t
720 lines | 14.6 KiB | text/troff | Tads3Lexer
/ tests / test-rebase-inmemory.t
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 #require symlink execbit
$ cat << EOF >> $HGRCPATH
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 > [phases]
> publish=False
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 > [extensions]
> amend=
> rebase=
> debugdrawdag=$TESTDIR/drawdag.py
Sushil khanchi
rebase: add --confirm option...
r38689 > strip=
Phil Cohen
rebase: replace --inmemory flag with rebase.experimental.inmemory config...
r35389 > [rebase]
> experimental.inmemory=1
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 > [diff]
> git=1
> [alias]
> tglog = log -G --template "{rev}: {node|short} '{desc}'\n"
> EOF
Rebase a simple DAG:
$ hg init repo1
$ cd repo1
$ hg debugdrawdag <<'EOS'
> c b
> |/
> d
> |
> a
> EOS
$ hg up -C a
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg tglog
o 3: 814f6bd05178 'c'
|
| o 2: db0e82a16a62 'b'
|/
o 1: 02952614a83d 'd'
|
@ 0: b173517d0057 'a'
$ hg cat -r 3 c
c (no-eol)
$ hg cat -r 2 b
b (no-eol)
Phil Cohen
rebase: replace --inmemory flag with rebase.experimental.inmemory config...
r35389 $ hg rebase --debug -r b -d c | grep rebasing
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 rebasing in-memory
rebasing 2:db0e82a16a62 "b" (b)
$ hg tglog
o 3: ca58782ad1e4 'b'
|
o 2: 814f6bd05178 'c'
|
o 1: 02952614a83d 'd'
|
@ 0: b173517d0057 'a'
$ hg cat -r 3 b
b (no-eol)
$ hg cat -r 2 c
c (no-eol)
Martin von Zweigbergk
tests: add a missing "cd .." to test-rebase-inmemory.t...
r40850 $ cd ..
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385
Case 2:
$ hg init repo2
$ cd repo2
$ hg debugdrawdag <<'EOS'
> c b
> |/
> d
> |
> a
> EOS
Add a symlink and executable file:
$ hg up -C c
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ ln -s somefile e
$ echo f > f
$ chmod +x f
$ hg add e f
$ hg amend -q
$ hg up -Cq a
Write files to the working copy, and ensure they're still there after the rebase
$ echo "abc" > a
$ ln -s def b
$ echo "ghi" > c
$ echo "jkl" > d
$ echo "mno" > e
$ hg tglog
o 3: f56b71190a8f 'c'
|
| o 2: db0e82a16a62 'b'
|/
o 1: 02952614a83d 'd'
|
@ 0: b173517d0057 'a'
$ hg cat -r 3 c
c (no-eol)
$ hg cat -r 2 b
b (no-eol)
$ hg cat -r 3 e
somefile (no-eol)
Phil Cohen
rebase: replace --inmemory flag with rebase.experimental.inmemory config...
r35389 $ hg rebase --debug -s b -d a | grep rebasing
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 rebasing in-memory
rebasing 2:db0e82a16a62 "b" (b)
$ hg tglog
o 3: fc055c3b4d33 'b'
|
| o 2: f56b71190a8f 'c'
| |
| o 1: 02952614a83d 'd'
|/
@ 0: b173517d0057 'a'
$ hg cat -r 2 c
c (no-eol)
$ hg cat -r 3 b
b (no-eol)
Phil Cohen
rebase: replace --inmemory flag with rebase.experimental.inmemory config...
r35389 $ hg rebase --debug -s 1 -d 3 | grep rebasing
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 rebasing in-memory
rebasing 1:02952614a83d "d" (d)
rebasing 2:f56b71190a8f "c"
$ hg tglog
o 3: 753feb6fd12a 'c'
|
o 2: 09c044d2cb43 'd'
|
o 1: fc055c3b4d33 'b'
|
@ 0: b173517d0057 'a'
Ensure working copy files are still there:
$ cat a
abc
$ readlink.py b
b -> def
$ cat e
mno
Ensure symlink and executable files were rebased properly:
$ hg up -Cq 3
$ readlink.py e
e -> somefile
$ ls -l f | cut -c -10
-rwxr-xr-x
Martin von Zweigbergk
rebase: allow in-memory merge of the working copy parent...
r36993 Rebase the working copy parent
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 $ hg up -C 3
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Phil Cohen
rebase: replace --inmemory flag with rebase.experimental.inmemory config...
r35389 $ hg rebase -r 3 -d 0 --debug | grep rebasing
Martin von Zweigbergk
rebase: allow in-memory merge of the working copy parent...
r36993 rebasing in-memory
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385 rebasing 3:753feb6fd12a "c" (tip)
$ hg tglog
@ 3: 844a7de3e617 'c'
|
| o 2: 09c044d2cb43 'd'
| |
| o 1: fc055c3b4d33 'b'
|/
o 0: b173517d0057 'a'
Pulkit Goyal
tests: demonstrate that IMM needs to be smarter with path conflicts...
r39167
Test reporting of path conflicts
$ hg rm a
$ mkdir a
$ touch a/a
$ hg ci -Am "a/a"
adding a/a
$ hg tglog
@ 4: daf7dfc139cb 'a/a'
|
o 3: 844a7de3e617 'c'
|
| o 2: 09c044d2cb43 'd'
| |
| o 1: fc055c3b4d33 'b'
|/
o 0: b173517d0057 'a'
$ hg rebase -r . -d 2
rebasing 4:daf7dfc139cb "a/a" (tip)
Martin von Zweigbergk
tests: add a missing "cd .." to test-rebase-inmemory.t...
r40850 saved backup bundle to $TESTTMP/repo2/.hg/strip-backup/daf7dfc139cb-fdbfcf4f-rebase.hg
Pulkit Goyal
tests: don't create new repo inside existing repo in test-rebase-inmemory.t...
r39166
Pulkit Goyal
rebase: add tests showing patch conflict detection needs to be smarter in IMM...
r39611 $ hg tglog
@ 4: c6ad37a4f250 'a/a'
|
| o 3: 844a7de3e617 'c'
| |
o | 2: 09c044d2cb43 'd'
| |
o | 1: fc055c3b4d33 'b'
|/
o 0: b173517d0057 'a'
$ echo foo > foo
$ hg ci -Aqm "added foo"
$ hg up '.^'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo bar > bar
$ hg ci -Aqm "added bar"
$ hg rm a/a
$ echo a > a
$ hg ci -Aqm "added a back!"
$ hg tglog
@ 7: 855e9797387e 'added a back!'
|
o 6: d14530e5e3e6 'added bar'
|
| o 5: 9b94b9373deb 'added foo'
|/
o 4: c6ad37a4f250 'a/a'
|
| o 3: 844a7de3e617 'c'
| |
o | 2: 09c044d2cb43 'd'
| |
o | 1: fc055c3b4d33 'b'
|/
o 0: b173517d0057 'a'
$ hg rebase -r . -d 5
rebasing 7:855e9797387e "added a back!" (tip)
Martin von Zweigbergk
tests: add a missing "cd .." to test-rebase-inmemory.t...
r40850 saved backup bundle to $TESTTMP/repo2/.hg/strip-backup/855e9797387e-81ee4c5d-rebase.hg
Pulkit Goyal
context: don't count deleted files as candidates for path conflicts in IMM...
r39612
$ hg tglog
@ 7: bb3f02be2688 'added a back!'
|
| o 6: d14530e5e3e6 'added bar'
| |
o | 5: 9b94b9373deb 'added foo'
|/
o 4: c6ad37a4f250 'a/a'
|
| o 3: 844a7de3e617 'c'
| |
o | 2: 09c044d2cb43 'd'
| |
o | 1: fc055c3b4d33 'b'
|/
o 0: b173517d0057 'a'
Martin von Zweigbergk
tests: show that in-mem rebase does not find path dir/file conflicts...
r40838 $ mkdir c
$ echo c > c/c
$ hg add c/c
$ hg ci -m 'c/c'
Martin von Zweigbergk
rebase: fix dir/file conflict detection when using in-mem merge...
r40839 $ hg rebase -r . -d 3 -n
starting dry-run rebase; repository will not be changed
rebasing 8:755f0104af9b "c/c" (tip)
abort: error: 'c/c' conflicts with file 'c' in 3.
[255]
$ hg rebase -r 3 -d . -n
starting dry-run rebase; repository will not be changed
rebasing 3:844a7de3e617 "c"
abort: error: file 'c' cannot be written because 'c/' is a folder in 755f0104af9b (containing 1 entries: c/c)
[255]
Pulkit Goyal
rebase: add tests showing patch conflict detection needs to be smarter in IMM...
r39611
Pulkit Goyal
tests: don't create new repo inside existing repo in test-rebase-inmemory.t...
r39166 $ cd ..
Martin von Zweigbergk
tests: show bad path auditing in in-memory rebase...
r40851 Test path auditing (issue5818)
$ mkdir lib_
$ ln -s lib_ lib
$ hg init repo
$ cd repo
$ mkdir -p ".$TESTTMP/lib"
$ touch ".$TESTTMP/lib/a"
$ hg add ".$TESTTMP/lib/a"
$ hg ci -m 'a'
$ touch ".$TESTTMP/lib/b"
$ hg add ".$TESTTMP/lib/b"
$ hg ci -m 'b'
$ hg up -q '.^'
$ touch ".$TESTTMP/lib/c"
$ hg add ".$TESTTMP/lib/c"
$ hg ci -m 'c'
created new head
$ hg rebase -s 1 -d .
rebasing 1:* "b" (glob)
Martin von Zweigbergk
rebase: fix path auditing to audit path relative to repo root (issue5818)...
r40852 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-rebase.hg (glob)
Martin von Zweigbergk
tests: show bad path auditing in in-memory rebase...
r40851 $ cd ..
Sushil khanchi
rebase: add dry-run functionality...
r38391 Test dry-run rebasing
Pulkit Goyal
tests: don't create new repo inside existing repo in test-rebase-inmemory.t...
r39166
Sushil khanchi
rebase: add --confirm option...
r38689 $ hg init repo3
$ cd repo3
Sushil khanchi
rebase: add dry-run functionality...
r38391 $ echo a>a
$ hg ci -Aqma
$ echo b>b
$ hg ci -Aqmb
$ echo c>c
$ hg ci -Aqmc
$ echo d>d
$ hg ci -Aqmd
$ echo e>e
$ hg ci -Aqme
Phil Cohen
tests: add a simple test for in-memory rebase...
r35385
Sushil khanchi
rebase: add dry-run functionality...
r38391 $ hg up 1 -q
$ echo f>f
$ hg ci -Amf
adding f
created new head
$ echo g>g
$ hg ci -Aqmg
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Make sure it throws error while passing --continue or --abort with --dry-run
$ hg rebase -s 2 -d 6 -n --continue
abort: cannot specify both --dry-run and --continue
[255]
$ hg rebase -s 2 -d 6 -n --abort
abort: cannot specify both --dry-run and --abort
[255]
Check dryrun gives correct results when there is no conflict in rebasing
$ hg rebase -s 2 -d 6 -n
Sushil khanchi
rebase: improve output of --dry-run...
r38564 starting dry-run rebase; repository will not be changed
Sushil khanchi
rebase: add dry-run functionality...
r38391 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
Sushil khanchi
rebase: improve output of --dry-run...
r38564 dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase
Sushil khanchi
rebase: add dry-run functionality...
r38391
$ hg diff
$ hg status
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Check dryrun working with --collapse when there is no conflict
$ hg rebase -s 2 -d 6 -n --collapse
Sushil khanchi
rebase: improve output of --dry-run...
r38564 starting dry-run rebase; repository will not be changed
Sushil khanchi
rebase: add dry-run functionality...
r38391 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
Sushil khanchi
rebase: improve output of --dry-run...
r38564 dry-run rebase completed successfully; run without -n/--dry-run to perform this rebase
Sushil khanchi
rebase: add dry-run functionality...
r38391
Check dryrun gives correct results when there is conflict in rebasing
Make a conflict:
$ hg up 6 -q
$ echo conflict>e
$ hg ci -Aqm "conflict with e"
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 7:d2c195b28050 test
| conflict with e
|
o 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
$ hg rebase -s 2 -d 7 -n
Sushil khanchi
rebase: improve output of --dry-run...
r38564 starting dry-run rebase; repository will not be changed
Sushil khanchi
rebase: add dry-run functionality...
r38391 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
merging e
transaction abort!
rollback completed
hit a merge conflict
Sushil khanchi
rebase: make dry-run return 1 or 0 according to result...
r38462 [1]
Sushil khanchi
rebase: add dry-run functionality...
r38391 $ hg diff
$ hg status
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 7:d2c195b28050 test
| conflict with e
|
o 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Check dryrun working with --collapse when there is conflicts
$ hg rebase -s 2 -d 7 -n --collapse
Sushil khanchi
rebase: improve output of --dry-run...
r38564 starting dry-run rebase; repository will not be changed
Sushil khanchi
rebase: add dry-run functionality...
r38391 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
merging e
hit a merge conflict
Sushil khanchi
rebase: make dry-run return 1 or 0 according to result...
r38462 [1]
Sushil khanchi
rebase: add --confirm option...
r38689
Yuya Nishihara
rebase: add test for in-memory merge conflicts
r39170 In-memory rebase that fails due to merge conflicts
$ hg rebase -s 2 -d 7
rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
merging e
transaction abort!
rollback completed
hit merge conflicts; re-running rebase without in-memory merge
Yuya Nishihara
rebase: do not pass in user option to rollback in-memory merge conflict...
r39171 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
merging e
warning: conflicts while merging e! (edit, then use 'hg resolve --mark')
unresolved conflicts (see hg resolve, then hg rebase --continue)
[1]
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 $ hg rebase --abort
Martin von Zweigbergk
tests: add a missing "cd .." to test-rebase-inmemory.t...
r40850 saved backup bundle to $TESTTMP/repo3/.hg/strip-backup/c1e524d4287c-f91f82e1-backup.hg
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 rebase aborted
Retrying without in-memory merge won't lose working copy changes
$ cd ..
$ hg clone repo3 repo3-dirty -q
$ cd repo3-dirty
$ echo dirty > a
$ hg rebase -s 2 -d 7
rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
merging e
transaction abort!
rollback completed
hit merge conflicts; re-running rebase without in-memory merge
Martin von Zweigbergk
rebase: preserve working copy when redoing in-mem rebase on disk...
r40835 abort: uncommitted changes
[255]
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 $ cat a
Martin von Zweigbergk
rebase: preserve working copy when redoing in-mem rebase on disk...
r40835 dirty
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834
Retrying without in-memory merge won't lose merge state
$ cd ..
$ hg clone repo3 repo3-merge-state -q
$ cd repo3-merge-state
$ hg merge 4
merging e
warning: conflicts while merging e! (edit, then use 'hg resolve --mark')
2 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
[1]
$ hg resolve -l
U e
$ hg rebase -s 2 -d 7
rebasing 2:177f92b77385 "c"
Martin von Zweigbergk
rebase: abort in-mem rebase if there's a dirty merge state...
r40836 abort: outstanding merge conflicts
[255]
Martin von Zweigbergk
tests: show that in-mem rebase falling back loses state...
r40834 $ hg resolve -l
Martin von Zweigbergk
rebase: abort in-mem rebase if there's a dirty merge state...
r40836 U e
Yuya Nishihara
rebase: add test for in-memory merge conflicts
r39170
Sushil khanchi
rebase: add --confirm option...
r38689 ==========================
Test for --confirm option|
==========================
$ cd ..
$ hg clone repo3 repo4 -q
$ cd repo4
$ hg strip 7 -q
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Check it gives error when both --dryrun and --confirm is used:
$ hg rebase -s 2 -d . --confirm --dry-run
abort: cannot specify both --confirm and --dry-run
[255]
$ hg rebase -s 2 -d . --confirm --abort
abort: cannot specify both --confirm and --abort
[255]
$ hg rebase -s 2 -d . --confirm --continue
abort: cannot specify both --confirm and --continue
[255]
Test --confirm option when there are no conflicts:
$ hg rebase -s 2 -d . --keep --config ui.interactive=True --confirm << EOF
> n
> EOF
Sushil khanchi
rebase: correct misleading message in --confirm option...
r38697 starting in-memory rebase
Sushil khanchi
rebase: add --confirm option...
r38689 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
rebase completed successfully
apply changes (yn)? n
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
$ hg rebase -s 2 -d . --keep --config ui.interactive=True --confirm << EOF
> y
> EOF
Sushil khanchi
rebase: correct misleading message in --confirm option...
r38697 starting in-memory rebase
Sushil khanchi
rebase: add --confirm option...
r38689 rebasing 2:177f92b77385 "c"
rebasing 3:055a42cdd887 "d"
rebasing 4:e860deea161a "e"
rebase completed successfully
apply changes (yn)? y
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
o 9:9fd28f55f6dc test
| e
|
o 8:12cbf031f469 test
| d
|
o 7:c83b1da5b1ae test
| c
|
@ 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Test --confirm option when there is a conflict
$ hg up tip -q
$ echo ee>e
$ hg ci --amend -m "conflict with e" -q
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 9:906d72f66a59 test
| conflict with e
|
o 8:12cbf031f469 test
| d
|
o 7:c83b1da5b1ae test
| c
|
o 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Sushil khanchi
rebase: in --confirm option just abort if hit a conflict...
r38701 $ hg rebase -s 4 -d . --keep --confirm
Sushil khanchi
rebase: correct misleading message in --confirm option...
r38697 starting in-memory rebase
Sushil khanchi
rebase: add --confirm option...
r38689 rebasing 4:e860deea161a "e"
merging e
hit a merge conflict
[1]
$ hg log -G --template "{rev}:{short(node)} {person(author)}\n{firstline(desc)} {topic}\n\n"
@ 9:906d72f66a59 test
| conflict with e
|
o 8:12cbf031f469 test
| d
|
o 7:c83b1da5b1ae test
| c
|
o 6:baf10c5166d4 test
| g
|
o 5:6343ca3eff20 test
| f
|
| o 4:e860deea161a test
| | e
| |
| o 3:055a42cdd887 test
| | d
| |
| o 2:177f92b77385 test
|/ c
|
o 1:d2ae7f538514 test
| b
|
o 0:cb9a9f314b8b test
a
Kyle Lippincott
overlayworkingctx: fix exception in metadata-only inmemory merges (issue5960)...
r39163 Test a metadata-only in-memory merge
$ cd $TESTTMP
$ hg init no_exception
$ cd no_exception
# Produce the following graph:
# o 'add +x to foo.txt'
# | o r1 (adds bar.txt, just for something to rebase to)
# |/
# o r0 (adds foo.txt, no +x)
$ echo hi > foo.txt
$ hg ci -qAm r0
$ echo hi > bar.txt
$ hg ci -qAm r1
$ hg co -qr ".^"
$ chmod +x foo.txt
$ hg ci -qAm 'add +x to foo.txt'
issue5960: this was raising an AttributeError exception
$ hg rebase -r . -d 1
rebasing 2:539b93e77479 "add +x to foo.txt" (tip)
saved backup bundle to $TESTTMP/no_exception/.hg/strip-backup/*.hg (glob)
$ hg diff -c tip
diff --git a/foo.txt b/foo.txt
old mode 100644
new mode 100755