largefiles: use 'dirstate.dirs()' for 'directory pattern' relation check
original implementation queries whether specified pattern is related
or not to largefiles in target context by 'dirstate.__contains__()'.
but this can't recognize 'directory pattern' correctly, so this patch
uses 'dirstate.dirs()' for it.
this patch uses dirstate instead of lfdirstate in 'working' route
(second patch hunk for 'hgext/largefiles/reposetup.py'), because
'dirs()' information may be already built for dirstate but not yet for
lfdirstate at this point. this prevents lfdirstate from building up
and having 'dirs()' information.
$ HGMERGE=true; export HGMERGE
$ hg init r1
$ cd r1
$ echo a > a
$ hg addremove
adding a
$ hg commit -m "1"
$ hg clone . ../r2
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd ../r2
$ hg up
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo abc > a
$ hg diff --nodates
diff -r c19d34741b0a a
--- a/a
+++ b/a
@@ -1,1 +1,1 @@
-a
+abc
$ cd ../r1
$ echo b > b
$ echo a2 > a
$ hg addremove
adding b
$ hg commit -m "2"
$ cd ../r2
$ hg -q pull ../r1
$ hg status
M a
$ hg parents
changeset: 0:c19d34741b0a
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 1
$ hg --debug up
searching for copies back to rev 1
unmatched files in other:
b
resolving manifests
overwrite: False, partial: False
ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
a: versions differ -> m
b: remote created -> g
preserving a for resolve of a
updating: a 1/2 files (50.00%)
picked tool 'true' for a (binary False symlink False)
merging a
my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
updating: b 2/2 files (100.00%)
getting b
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
$ hg parents
changeset: 1:1e71731e6fbb
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 2
$ hg --debug up 0
resolving manifests
overwrite: False, partial: False
ancestor: 1e71731e6fbb, local: 1e71731e6fbb+, remote: c19d34741b0a
a: versions differ -> m
b: other deleted -> r
preserving a for resolve of a
updating: b 1/2 files (50.00%)
removing b
updating: a 2/2 files (100.00%)
picked tool 'true' for a (binary False symlink False)
merging a
my a@1e71731e6fbb+ other a@c19d34741b0a ancestor a@1e71731e6fbb
0 files updated, 1 files merged, 1 files removed, 0 files unresolved
$ hg parents
changeset: 0:c19d34741b0a
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 1
$ hg --debug merge
abort: nothing to merge
(use 'hg update' instead)
[255]
$ hg parents
changeset: 0:c19d34741b0a
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 1
$ hg --debug up
searching for copies back to rev 1
unmatched files in other:
b
resolving manifests
overwrite: False, partial: False
ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
a: versions differ -> m
b: remote created -> g
preserving a for resolve of a
updating: a 1/2 files (50.00%)
picked tool 'true' for a (binary False symlink False)
merging a
my a@c19d34741b0a+ other a@1e71731e6fbb ancestor a@c19d34741b0a
updating: b 2/2 files (100.00%)
getting b
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
$ hg parents
changeset: 1:1e71731e6fbb
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 2
$ hg -v history
changeset: 1:1e71731e6fbb
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
files: a b
description:
2
changeset: 0:c19d34741b0a
user: test
date: Thu Jan 01 00:00:00 1970 +0000
files: a
description:
1
$ hg diff --nodates
diff -r 1e71731e6fbb a
--- a/a
+++ b/a
@@ -1,1 +1,1 @@
-a2
+abc
create a second head
$ cd ../r1
$ hg up 0
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo b2 > b
$ echo a3 > a
$ hg addremove
adding b
$ hg commit -m "3"
created new head
$ cd ../r2
$ hg -q pull ../r1
$ hg status
M a
$ hg parents
changeset: 1:1e71731e6fbb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 2
$ hg --debug up
abort: crosses branches (merge branches or use --clean to discard changes)
[255]
$ hg --debug merge
abort: outstanding uncommitted changes
(use 'hg status' to list changes)
[255]
$ hg --debug merge -f
searching for copies back to rev 1
resolving manifests
overwrite: False, partial: False
ancestor: c19d34741b0a, local: 1e71731e6fbb+, remote: 83c51d0caff4
a: versions differ -> m
b: versions differ -> m
preserving a for resolve of a
preserving b for resolve of b
updating: a 1/2 files (50.00%)
picked tool 'true' for a (binary False symlink False)
merging a
my a@1e71731e6fbb+ other a@83c51d0caff4 ancestor a@c19d34741b0a
updating: b 2/2 files (100.00%)
picked tool 'true' for b (binary False symlink False)
merging b
my b@1e71731e6fbb+ other b@83c51d0caff4 ancestor b@000000000000
0 files updated, 2 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg parents
changeset: 1:1e71731e6fbb
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 2
changeset: 2:83c51d0caff4
tag: tip
parent: 0:c19d34741b0a
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: 3
$ hg diff --nodates
diff -r 1e71731e6fbb a
--- a/a
+++ b/a
@@ -1,1 +1,1 @@
-a2
+abc
test a local add
$ cd ..
$ hg init a
$ hg init b
$ echo a > a/a
$ echo a > b/a
$ hg --cwd a commit -A -m a
adding a
$ cd b
$ hg add a
$ hg pull -u ../a
pulling from ../a
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg st