update: allow update to existing branches with invalid names (issue3710)
Starting with 361ab1e2086f, users are no longer able to update a
working copy to a branch named with a "bad" character (such as ':').
Prior to v2.4, it was possible to create branch names using "bad"
characters, so this breaks backwards compatibility.
Mercurial must allow users to update to existing branches with bad
names. However, it should continue to prevent the creation of new
branches with bad names.
A test was added to confirm that 'hg update' works as expected. The
test uses a bundled repo that was created with an earlier version of
Mercurial.
$ hg init a
$ hg clone a b
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd a
$ echo '[paths]' >> .hg/hgrc
$ echo 'dupe = ../b' >> .hg/hgrc
$ echo 'expand = $SOMETHING/bar' >> .hg/hgrc
$ hg in dupe
comparing with $TESTTMP/b (glob)
no changes found
[1]
$ cd ..
$ hg -R a in dupe
comparing with $TESTTMP/b (glob)
no changes found
[1]
$ cd a
$ hg paths
dupe = $TESTTMP/b (glob)
expand = $TESTTMP/a/$SOMETHING/bar (glob)
$ SOMETHING=foo hg paths
dupe = $TESTTMP/b (glob)
expand = $TESTTMP/a/foo/bar (glob)
#if msys
$ SOMETHING=//foo hg paths
dupe = $TESTTMP/b (glob)
expand = /foo/bar
#else
$ SOMETHING=/foo hg paths
dupe = $TESTTMP/b (glob)
expand = /foo/bar
#endif
$ hg paths -q
dupe
expand
$ hg paths dupe
$TESTTMP/b (glob)
$ hg paths -q dupe
$ hg paths unknown
not found!
[1]
$ hg paths -q unknown
[1]
$ cd ..
'file:' disables [paths] entries for clone destination
$ cat >> $HGRCPATH <<EOF
> [paths]
> gpath1 = http://hg.example.com
> EOF
$ hg clone a gpath1
abort: cannot create new http repository
[255]
$ hg clone a file:gpath1
updating to branch default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd gpath1
$ hg -q id
000000000000
$ cd ..