inotify: raise correct error if server is already started in a deep repository
When path is too long to be an Unix socket address, we create a socket in a
temporary directory and link from the long path to the shorter one.
But checks in server code at startup were insufficient in this case, and used
to raise an unclear "tried linking .hg/inotify.sock to a temporary socket but
.hg/inotify.sock already exists"
$ cat >> $HGRCPATH <<EOF
> [extensions]
> graphlog=
> rebase=
>
> [alias]
> tglog = log -G --template "{rev}: '{desc}' {branches}\n"
> EOF
$ hg init a
$ cd a
$ echo c1 > common
$ hg add common
$ hg ci -m C1
$ echo c2 >> common
$ hg ci -m C2
$ echo c3 >> common
$ hg ci -m C3
$ hg up -q -C 1
$ echo l1 >> extra
$ hg add extra
$ hg ci -m L1
created new head
$ sed -e 's/c2/l2/' common > common.new
$ mv common.new common
$ hg ci -m L2
$ hg tglog
@ 4: 'L2'
|
o 3: 'L1'
|
| o 2: 'C3'
|/
o 1: 'C2'
|
o 0: 'C1'
Conflicting rebase:
$ hg rebase -s 3 -d 2
merging common
warning: conflicts during merge.
merging common failed!
abort: fix unresolved conflicts with hg resolve then run hg rebase --continue
[255]
Abort:
$ hg rebase --abort
saved backup bundle to $TESTTMP/a/.hg/strip-backup/*-backup.hg (glob)
rebase aborted
$ hg tglog
@ 4: 'L2'
|
o 3: 'L1'
|
| o 2: 'C3'
|/
o 1: 'C2'
|
o 0: 'C1'
$ cd ..
Constrcut new repo:
$ hg init b
$ cd b
$ echo a > a
$ hg ci -Am A
adding a
$ echo b > b
$ hg ci -Am B
adding b
$ echo c > c
$ hg ci -Am C
adding c
$ hg up -q 0
$ echo b > b
$ hg ci -Am 'B bis'
adding b
created new head
$ echo c1 > c
$ hg ci -Am C1
adding c
Rebase and abort without generating new changesets:
$ hg tglog
@ 4: 'C1'
|
o 3: 'B bis'
|
| o 2: 'C'
| |
| o 1: 'B'
|/
o 0: 'A'
$ hg rebase -b 4 -d 2
merging c
warning: conflicts during merge.
merging c failed!
abort: fix unresolved conflicts with hg resolve then run hg rebase --continue
[255]
$ hg tglog
@ 4: 'C1'
|
o 3: 'B bis'
|
| @ 2: 'C'
| |
| o 1: 'B'
|/
o 0: 'A'
$ hg rebase -a
rebase aborted
$ hg tglog
@ 4: 'C1'
|
o 3: 'B bis'
|
| o 2: 'C'
| |
| o 1: 'B'
|/
o 0: 'A'