Mercurial > hg
diff tests/test-narrow-merge.t @ 36079:a2a6e724d61a
narrow: import experimental extension from narrowhg revision cb51d673e9c5
Adjustments:
* renamed src to hgext/narrow
* marked extension experimental
* added correct copyright header where it was missing
* updated hgrc extension enable line in library.sh
* renamed library.sh to narrow-library.sh
* dropped all files from repo root as they're not interesting
* dropped test-pyflakes.t, test-check-code.t and test-check-py3-compat.t
* renamed remaining tests to all be test-narrow-* when they didn't already
* fixed test-narrow-expanddirstate.t to refer to narrow and not narrowhg
* fixed tests that wanted `update -C .` instead of `merge --abort`
* corrected a two-space indent in narrowspec.py
* added a missing _() in narrowcommands.py
* fixed imports to pass the import checker
* narrow only adds its --include and --exclude to clone if sparse isn't
enabled to avoid breaking test-duplicateoptions.py. This is a kludge,
and we'll need to come up with a better solution in the future.
These were more or less the minimum to import something that would
pass tests and not create a bunch of files we'll never use.
Changes I intend to make as followups:
* rework the test-narrow-*-tree.t tests to use the new testcases
functionality in run-tests.py
* remove lots of monkeypatches of core things
Differential Revision: https://phab.mercurial-scm.org/D1974
author | Augie Fackler <augie@google.com> |
---|---|
date | Mon, 29 Jan 2018 16:19:33 -0500 |
parents | |
children | dc01484606da |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-narrow-merge.t Mon Jan 29 16:19:33 2018 -0500 @@ -0,0 +1,94 @@ + + $ . "$TESTDIR/narrow-library.sh" + +create full repo + + $ hg init master + $ cd master + $ cat >> .hg/hgrc <<EOF + > [narrow] + > serveellipses=True + > EOF + + $ mkdir inside + $ echo inside1 > inside/f1 + $ echo inside2 > inside/f2 + $ mkdir outside + $ echo outside1 > outside/f1 + $ echo outside2 > outside/f2 + $ hg ci -Aqm 'initial' + + $ echo modified > inside/f1 + $ hg ci -qm 'modify inside/f1' + + $ hg update -q 0 + $ echo modified > inside/f2 + $ hg ci -qm 'modify inside/f2' + + $ hg update -q 0 + $ echo modified2 > inside/f1 + $ hg ci -qm 'conflicting inside/f1' + + $ hg update -q 0 + $ echo modified > outside/f1 + $ hg ci -qm 'modify outside/f1' + + $ hg update -q 0 + $ echo modified2 > outside/f1 + $ hg ci -qm 'conflicting outside/f1' + + $ cd .. + + $ hg clone --narrow ssh://user@dummy/master narrow --include inside + requesting all changes + adding changesets + adding manifests + adding file changes + added 6 changesets with 5 changes to 2 files (+4 heads) + new changesets *:* (glob) + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd narrow + + $ hg update -q 0 + +Can merge in when no files outside narrow spec are involved + + $ hg update -q 'desc("modify inside/f1")' + $ hg merge 'desc("modify inside/f2")' + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg commit -m 'merge inside changes' + +Can merge conflicting changes inside narrow spec + + $ hg update -q 'desc("modify inside/f1")' + $ hg merge 'desc("conflicting inside/f1")' 2>&1 | egrep -v '(warning:|incomplete!)' + merging inside/f1 + 0 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 + $ echo modified3 > inside/f1 + $ hg resolve -m + (no more unresolved files) + $ hg commit -m 'merge inside/f1' + +TODO: Can merge non-conflicting changes outside narrow spec + + $ hg update -q 'desc("modify inside/f1")' + $ hg merge 'desc("modify outside/f1")' + abort: merge affects file 'outside/f1' outside narrow, which is not yet supported + (merging in the other direction may work) + [255] + + $ hg update -q 'desc("modify outside/f1")' + $ hg merge 'desc("modify inside/f1")' + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg ci -m 'merge from inside to outside' + +Refuses merge of conflicting outside changes + + $ hg update -q 'desc("modify outside/f1")' + $ hg merge 'desc("conflicting outside/f1")' + abort: conflict in file 'outside/f1' is outside narrow clone + [255]