prepush: add more precise error messages
Part of the patch is from timeless@mozdev.org
- indicate the branch name where there are multiple heads
- give better advice when hitting a possible race, where new heads are added
between discovery and the call to branchmap(). In that case, asking the user
to merge isn't helpful, since only remote has the changes.
% empty directory
initializing destination source-hg repository
scanning source...
sorting...
converting...
2 Initial add
1 Empty directory added
0 Added file into directory
% manifest of 1
644 a
% manifest of tip
644 a
644 empty/something
% directory renames
tpyo => typo
initializing destination source-hg repository
scanning source...
sorting...
converting...
1 Added directory
0 Oops, typo
% manifest of 0
644 tpyo/something
% manifest of tip
644 typo/something
% nested directory renames
firstlevel/secondlevel => secondlevel
initializing destination source-hg repository
scanning source...
sorting...
converting...
1 Added nested directories
0 Moved secondlevel one level up
% manifest of tip
644 secondlevel/file
644 secondlevel/thirdlevel/stuff
% directory remove
initializing destination source-hg repository
scanning source...
sorting...
converting...
1 Added directory
0 Removed directory
% manifest of 0
644 src/sourcecode
% manifest of tip
% directory replace
first/file => second/file
first => third
initializing destination source-hg repository
scanning source...
sorting...
converting...
1 Initial layout
0 Some conflicting moves
% manifest of tip
644 second/file
644 second/something
644 third/dummy