localrepo: refactor prepush logic
Simplifies the prepush check logic and makes it a lot more direct and
comprehensible. Instead of comparing the total local vs. remote head count, it
compares the number of new vs. removed heads.
hg status in repo root:
[0;35;1;4m? a/1/in_a_1[0m
[0;35;1;4m? a/in_a[0m
[0;35;1;4m? b/1/in_b_1[0m
[0;35;1;4m? b/2/in_b_2[0m
[0;35;1;4m? b/in_b[0m
[0;35;1;4m? in_root[0m
hg status . in repo root:
[0;35;1;4m? a/1/in_a_1[0m
[0;35;1;4m? a/in_a[0m
[0;35;1;4m? b/1/in_b_1[0m
[0;35;1;4m? b/2/in_b_2[0m
[0;35;1;4m? b/in_b[0m
[0;35;1;4m? in_root[0m
hg status in a:
[0;35;1;4m? a/1/in_a_1[0m
[0;35;1;4m? a/in_a[0m
[0;35;1;4m? b/1/in_b_1[0m
[0;35;1;4m? b/2/in_b_2[0m
[0;35;1;4m? b/in_b[0m
[0;35;1;4m? in_root[0m
hg status . in a:
[0;35;1;4m? 1/in_a_1[0m
[0;35;1;4m? in_a[0m
hg status .. in a:
[0;35;1;4m? 1/in_a_1[0m
[0;35;1;4m? in_a[0m
[0;35;1;4m? ../b/1/in_b_1[0m
[0;35;1;4m? ../b/2/in_b_2[0m
[0;35;1;4m? ../b/in_b[0m
[0;35;1;4m? ../in_root[0m
hg status in b:
[0;35;1;4m? a/1/in_a_1[0m
[0;35;1;4m? a/in_a[0m
[0;35;1;4m? b/1/in_b_1[0m
[0;35;1;4m? b/2/in_b_2[0m
[0;35;1;4m? b/in_b[0m
[0;35;1;4m? in_root[0m
hg status . in b:
[0;35;1;4m? 1/in_b_1[0m
[0;35;1;4m? 2/in_b_2[0m
[0;35;1;4m? in_b[0m
hg status .. in b:
[0;35;1;4m? ../a/1/in_a_1[0m
[0;35;1;4m? ../a/in_a[0m
[0;35;1;4m? 1/in_b_1[0m
[0;35;1;4m? 2/in_b_2[0m
[0;35;1;4m? in_b[0m
[0;35;1;4m? ../in_root[0m
hg status in a/1:
[0;35;1;4m? a/1/in_a_1[0m
[0;35;1;4m? a/in_a[0m
[0;35;1;4m? b/1/in_b_1[0m
[0;35;1;4m? b/2/in_b_2[0m
[0;35;1;4m? b/in_b[0m
[0;35;1;4m? in_root[0m
hg status . in a/1:
[0;35;1;4m? in_a_1[0m
hg status .. in a/1:
[0;35;1;4m? in_a_1[0m
[0;35;1;4m? ../in_a[0m
hg status in b/1:
[0;35;1;4m? a/1/in_a_1[0m
[0;35;1;4m? a/in_a[0m
[0;35;1;4m? b/1/in_b_1[0m
[0;35;1;4m? b/2/in_b_2[0m
[0;35;1;4m? b/in_b[0m
[0;35;1;4m? in_root[0m
hg status . in b/1:
[0;35;1;4m? in_b_1[0m
hg status .. in b/1:
[0;35;1;4m? in_b_1[0m
[0;35;1;4m? ../2/in_b_2[0m
[0;35;1;4m? ../in_b[0m
hg status in b/2:
[0;35;1;4m? a/1/in_a_1[0m
[0;35;1;4m? a/in_a[0m
[0;35;1;4m? b/1/in_b_1[0m
[0;35;1;4m? b/2/in_b_2[0m
[0;35;1;4m? b/in_b[0m
[0;35;1;4m? in_root[0m
hg status . in b/2:
[0;35;1;4m? in_b_2[0m
hg status .. in b/2:
[0;35;1;4m? ../1/in_b_1[0m
[0;35;1;4m? in_b_2[0m
[0;35;1;4m? ../in_b[0m
adding .hgignore
adding deleted
adding modified
adding removed
hg status:
[0;32;1mA added[0m
[0;31;1mR removed[0m
[0;36;1;4m! deleted[0m
[0;35;1;4m? unknown[0m
hg status modified added removed deleted unknown never-existed ignored:
never-existed: No such file or directory
[0;32;1mA added[0m
[0;31;1mR removed[0m
[0;36;1;4m! deleted[0m
[0;35;1;4m? unknown[0m
hg status -C:
[0;32;1mA added[0m
[0;32;1mA copied[0m
[0;0m modified[0m
[0;31;1mR removed[0m
[0;36;1;4m! deleted[0m
[0;35;1;4m? unknown[0m
hg status -A:
[0;32;1mA added[0m
[0;32;1mA copied[0m
[0;0m modified[0m
[0;31;1mR removed[0m
[0;36;1;4m! deleted[0m
[0;35;1;4m? unknown[0m
[0;30;1mI ignored[0m
[0;0mC .hgignore[0m
[0;0mC modified[0m
hg status ignoreddir/file:
hg status -i ignoreddir/file:
[0;30;1mI ignoreddir/file[0m
adding .hgignore
adding deleted
adding modified
adding removed
% test unknown color
ignoring unknown color/effect 'periwinkle' (configured in color.status.modified)
M modified
[0;32;1mA added[0m
[0;32;1mA copied[0m
[0;31;1mR removed[0m
[0;36;1;4m! deleted[0m
[0;35;1;4m? unknown[0m
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
merging a
warning: conflicts during merge.
merging a failed!
merging b
warning: conflicts during merge.
merging b failed!
0 files updated, 0 files merged, 0 files removed, 2 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon
hg resolve with one unresolved, one resolved:
[0;31;1mU a[0m
[0;32;1mR b[0m