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.
adding b
popping changeb
patch queue now empty
% push patch with missing target
applying changeb
unable to find 'b' for patching
2 out of 2 hunks FAILED -- saving rejects to file b.rej
patch failed, unable to continue (try -v)
patch failed, rejects left in working dir
errors during apply, please fix and refresh changeb
% display added files
a
c
% display rejections
--- b
+++ b
@@ -1,3 +1,5 @@
+b
+b
a
a
a
@@ -8,3 +10,5 @@
a
a
a
+c
+c
adding b
popping changeb
patch queue now empty
% push git patch with missing target
applying changeb
unable to find 'b' for patching
1 out of 1 hunks FAILED -- saving rejects to file b.rej
patch failed, unable to continue (try -v)
b: No such file or directory
patch failed, rejects left in working dir
errors during apply, please fix and refresh changeb
? b.rej
% display added files
a
c
% display rejections
--- b
+++ b
GIT binary patch
literal 2
Jc${No0000400IC2
% test push creating directory during git copy or rename
adding a
popping patch
patch queue now empty
applying patch
now at: patch