Use git rev-list --stdin and cat-file --batch-check
This commit is contained in:
parent
a0232a9a67
commit
1960c8ede0
1 changed files with 15 additions and 6 deletions
|
@ -213,7 +213,14 @@ pack_hash()
|
||||||
xecho "${hash_%:}"
|
xecho "${hash_%:}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Pass the branch/ref by pipe to git
|
||||||
|
safe_git_rev_parse()
|
||||||
|
{
|
||||||
|
local out_=
|
||||||
|
out_=$(xecho "$1" | git cat-file --batch-check)
|
||||||
|
out_=${out_%%*missing}
|
||||||
|
xecho "${out_%% *}"
|
||||||
|
}
|
||||||
|
|
||||||
check_recipients()
|
check_recipients()
|
||||||
{
|
{
|
||||||
|
@ -400,7 +407,7 @@ do_push()
|
||||||
if isnonnull "$Branchlist"
|
if isnonnull "$Branchlist"
|
||||||
then
|
then
|
||||||
remote_has=$(xecho "$Branchlist" |
|
remote_has=$(xecho "$Branchlist" |
|
||||||
cut -f1 -d' ' | sed -e 's/^\(.\)/^&/' | tr '\n' ' ')
|
cut -f1 -d' ' | sed -e 's/^\(.\)/^&/')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
while read line_ # from <<
|
while read line_ # from <<
|
||||||
|
@ -409,9 +416,9 @@ do_push()
|
||||||
splitcolon "${line_#+}"
|
splitcolon "${line_#+}"
|
||||||
if isnonnull "$prefix_"
|
if isnonnull "$prefix_"
|
||||||
then
|
then
|
||||||
remote_want="$remote_want$prefix_ "
|
remote_want=$(append "$remote_want" "$prefix_")
|
||||||
Branchlist=$(append "$Branchlist" \
|
Branchlist=$(append "$Branchlist" \
|
||||||
"$(git rev-parse "$prefix_") $suffix_")
|
"$(safe_git_rev_parse "$prefix_") $suffix_")
|
||||||
else
|
else
|
||||||
: # FIXME delete branch
|
: # FIXME delete branch
|
||||||
fi
|
fi
|
||||||
|
@ -424,8 +431,10 @@ EOF
|
||||||
|
|
||||||
TmpPack_Encrypted="$Localdir/tmp_pack_ENCRYPTED_.$$"
|
TmpPack_Encrypted="$Localdir/tmp_pack_ENCRYPTED_.$$"
|
||||||
TmpObjlist="$Localdir/tmp_packrevlist.$$"
|
TmpObjlist="$Localdir/tmp_packrevlist.$$"
|
||||||
git rev-list --objects $remote_has $remote_want -- | \
|
|
||||||
tee "$TmpObjlist" | \
|
append "$remote_has" "$remote_want" |
|
||||||
|
git rev-list --objects --stdin -- |
|
||||||
|
tee "$TmpObjlist" |
|
||||||
git pack-objects --stdout | ENCRYPT > "$TmpPack_Encrypted"
|
git pack-objects --stdout | ENCRYPT > "$TmpPack_Encrypted"
|
||||||
# Only send pack if we have any objects to send
|
# Only send pack if we have any objects to send
|
||||||
if [ -s "$TmpObjlist" ]
|
if [ -s "$TmpObjlist" ]
|
||||||
|
|
Loading…
Reference in a new issue