#!/bin/bash set -e . tests/lib t-setup-import examplegit t-tstunt-parsechangelog cd $tmp/git/$p.git git config core.sharedRepository true chmod -R g+w objects umask 022 cd $tmp/example suite=stable t-commit 'No changes, just send to stable' '' stable t-make-badcommit git reset --hard $badcommit t-dgit -wgf build t-dgit push --overwrite=1.2 stable t-archive-process-incoming stable rstable=refs/remotes/dgit/dgit/stable t-dgit fetch stable t-has-parent-or-is $rstable $badcommit fixup=${DGIT_BADCOMMIT_FIXUP-dgit-badcommit-fixup} cd $tmp/git/$p.git git gc --aggressive --prune=all rmdir objects/* ||: $fixup --real cd $tmp/$p git symbolic-ref HEAD >../sym.before git rev-parse HEAD >../ref.before $fixup --real git symbolic-ref HEAD >../sym.after git rev-parse HEAD >../ref.after diff ../sym.before ../sym.after set +e; diff ../ref.before ../ref.after; rc=$?; set -e; test $rc = 1 t-dgit fetch stable t-expect-fail "child $rstable lacks parent $badcommit" \ t-has-parent-or-is $rstable $badcommit check_shared () { find "$1" -perm -200 \! -perm -020 -ls |tee $tmp/badperm test -f $tmp/badperm -a ! -s $tmp/badperm } check_shared $tmp/git/$p.git/objects t-ok