##// END OF EJS Templates
localrepo: use the path relative to "self.vfs" instead of "path" argument...
localrepo: use the path relative to "self.vfs" instead of "path" argument As a part of migration to vfs, this patch uses "self.root", which can be recognized as the path relative to "self.vfs", instead of "path" argument. This fix allows to make invocations of "util.makedirs()" and "os.path.exists()" while ensuring repository directory in "localrepository.__init__()" ones indirectly via vfs. But this fix also raises issue 2528: "hg clone" with empty destination. "path" argument is empty in many cases, so this issue can't be fixed in the view of "localrepository.__init__()". Before this patch, it is fixed by empty-ness check ("not name") of exception handler in "util.makedirs()". try: os.mkdir(name) except OSError, err: if err.errno == errno.EEXIST: return if err.errno != errno.ENOENT or not name: raise This requires "localrepository.__init__()" to invoke "util.makedirs()" with "path" instead of "self.root", because empty "path" is treated as "current directory" and "self.root" becomes valid path. But "hg clone" with empty destination can be detected also in "hg.clone()" before "localrepository.__init__()" invocation, so this patch re-fixes issue2528 by checking it in "hg.clone()".

File last commit:

r16913:f2719b38 default
r17159:36a30168 default
Show More
test-rename-dir-merge.t
159 lines | 3.5 KiB | text/troff | Tads3Lexer
/ tests / test-rename-dir-merge.t
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init t
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 $ cd t
$ mkdir a
$ echo foo > a/a
$ echo bar > a/b
$ hg ci -Am "0"
adding a/a
adding a/b
$ hg co -C 0
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg mv a b
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 moving a/a to b/a (glob)
moving a/b to b/b (glob)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 $ hg ci -m "1 mv a/ b/"
$ hg co -C 0
2 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo baz > a/c
$ echo quux > a/d
$ hg add a/c
$ hg ci -m "2 add a/c"
created new head
$ hg merge --debug 1
searching for copies back to rev 1
unmatched files in local:
a/c
unmatched files in other:
b/a
b/b
Thomas Arendsen Hein
merge: show renamed on one and deleted on the other side in debug output
r16795 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 b/a -> a/a
b/b -> a/b
checking for directory renames
dir a/ -> b/
file a/c -> b/c
resolving manifests
Martin Geisler
merge: make debug output easier to read...
r15625 overwrite: False, partial: False
ancestor: f9b20c0d4c51, local: ce36d17b18fb+, remote: 397f8b00a740
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 a/c: remote renamed directory to b/c -> d
a/b: other deleted -> r
a/a: other deleted -> r
b/a: remote created -> g
b/b: remote created -> g
Matt Mackall
merge: don't use unknown()...
r16094 updating: a/a 1/5 files (20.00%)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 removing a/a
Matt Mackall
merge: don't use unknown()...
r16094 updating: a/b 2/5 files (40.00%)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 removing a/b
Matt Mackall
merge: don't use unknown()...
r16094 updating: a/c 3/5 files (60.00%)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 moving a/c to b/c
Matt Mackall
merge: don't use unknown()...
r16094 updating: b/a 4/5 files (80.00%)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 getting b/a
Matt Mackall
merge: don't use unknown()...
r16094 updating: b/b 5/5 files (100.00%)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 getting b/b
Matt Mackall
merge: don't use unknown()...
r16094 3 files updated, 0 files merged, 2 files removed, 0 files unresolved
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 (branch merge, don't forget to commit)
$ echo a/* b/*
Matt Mackall
merge: don't use unknown()...
r16094 a/d b/a b/b b/c
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 $ hg st -C
M b/a
M b/b
A b/c
a/c
R a/a
R a/b
R a/c
Matt Mackall
merge: don't use unknown()...
r16094 ? a/d
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 $ hg ci -m "3 merge 2+1"
$ hg debugrename b/c
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 (glob)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114
$ hg co -C 1
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg merge --debug 2
searching for copies back to rev 1
unmatched files in local:
b/a
b/b
unmatched files in other:
a/c
Thomas Arendsen Hein
merge: show renamed on one and deleted on the other side in debug output
r16795 all copies found (* = to merge, ! = divergent, % = renamed and deleted):
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 b/a -> a/a
b/b -> a/b
checking for directory renames
dir a/ -> b/
file a/c -> b/c
resolving manifests
Martin Geisler
merge: make debug output easier to read...
r15625 overwrite: False, partial: False
ancestor: f9b20c0d4c51, local: 397f8b00a740+, remote: ce36d17b18fb
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 None: local renamed directory to b/c -> d
updating:None 1/1 files (100.00%)
getting a/c to b/c
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ echo a/* b/*
Matt Mackall
merge: don't use unknown()...
r16094 a/d b/a b/b b/c
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 $ hg st -C
A b/c
a/c
Matt Mackall
merge: don't use unknown()...
r16094 ? a/d
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 $ hg ci -m "4 merge 1+2"
created new head
$ hg debugrename b/c
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 b/c renamed from a/c:354ae8da6e890359ef49ade27b68bbc361f3ca88 (glob)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114
Second scenario with two repos:
$ cd ..
Martin Geisler
tests: remove redundant mkdir...
r13956 $ hg init r1
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 $ cd r1
$ mkdir a
$ echo foo > a/f
$ hg add a
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 adding a/f (glob)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 $ hg ci -m "a/f == foo"
$ cd ..
$ hg clone r1 r2
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd r2
$ hg mv a b
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 moving a/f to b/f (glob)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 $ echo foo1 > b/f
$ hg ci -m" a -> b, b/f == foo1"
$ cd ..
$ cd r1
$ mkdir a/aa
$ echo bar > a/aa/g
$ hg add a/aa
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 adding a/aa/g (glob)
Nicolas Dumazet
tests: merge the two test-rename-dir-merge* into one
r12114 $ hg ci -m "a/aa/g"
$ hg pull ../r2
pulling from ../r2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
$ hg merge
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg st -C
M b/f
A b/aa/g
a/aa/g
R a/aa/g
R a/f
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913
$ cd ..