filemerge: when using in-memory merge, always put backup files in temp dir
Before calling a merge tool, we create a backup of the local side of
the merge. That file can be put in the working copy or in a temporary
directory, depending on the user's config. When we're merging in
memory, we don't want to write to the actual, on-disk working copy, so
we write the file to the in-memory working copy instead. However,
since we don't support external merge tools with in-memory merge, it
makes no difference where the file is actually stored (and if we ever
do add support for external merge tools, then the file clearly can't
live in the in-memory working-copy object anyway). So, since it
doesn't matter where the file is stored, we can simplify by always
putting them in the system's temp directory.
Differential Revision: https://phab.mercurial-scm.org/D12187
====================================
Testing head checking code: Case E-1
====================================
Mercurial checks for the introduction of new heads on push. Evolution comes
into play to detect if existing branches on the server are being replaced by
some of the new one we push.
This case is part of a series of tests checking this behavior.
Category E: case involving changeset on multiple branch
TestCase 8: moving a branch to another location
.. old-state:
..
.. * 1-changeset on branch default
.. * 1-changeset on branch Z (above default)
..
.. new-state:
..
.. * 1-changeset on branch default
.. * 1-changeset on branch Z (rebased away from A0)
..
.. expected-result:
..
.. * push allowed
..
.. graph-summary:
..
.. B ø⇠◔ B'
.. | |
.. A ◔ |
.. |/
.. ●
$ . $TESTDIR/testlib/push-checkheads-util.sh
Test setup
----------
$ mkdir E1
$ cd E1
$ setuprepos
creating basic server and client repo
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd client
$ hg branch Z
marked working directory as branch Z
(branches are permanent and global, did you want a bookmark?)
$ mkcommit B0
$ hg push --new-branch
pushing to $TESTTMP/E1/server
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
$ hg up 0
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg branch --force Z
marked working directory as branch Z
$ mkcommit B1
created new head
$ hg debugobsolete `getid "desc(B0)" ` `getid "desc(B1)"`
1 new obsolescence markers
obsoleted 1 changesets
$ hg log -G --hidden
@ c98b855401e7 (draft): B1
|
| x 93e5c1321ece (draft): B0
| |
| o 8aaa48160adc (draft): A0
|/
o 1e4be0697311 (public): root
Actual testing
--------------
$ hg push
pushing to $TESTTMP/E1/server
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
1 new obsolescence markers
obsoleted 1 changesets
$ cd ../..