{
if [ ! -s "$git_dir/info/attributes" ] || ! grep -q topmsg "$git_dir/info/attributes"; then
{
- echo -e ".topmsg\tmerge=ours"
- echo -e ".topdeps\tmerge=ours"
+ echo ".topmsg merge=ours"
+ echo ".topdeps merge=ours"
} >>"$git_dir/info/attributes"
fi
if ! git config merge.ours.driver >/dev/null; then
# measure_branch NAME [BASE]
measure_branch()
{
- _name="$1"; _base="$2"
- [ -n "$_base" ] || _base="refs/top-bases/$_name"
+ _bname="$1"; _base="$2"
+ [ -n "$_base" ] || _base="refs/top-bases/$_bname"
# The caller should've verified $name is valid
- _commits="$(git rev-list "$_name" ^"$_base" | wc -l)"
- _nmcommits="$(git rev-list --no-merges "$_name" ^"$_base" | wc -l)"
+ _commits="$(git rev-list "$_bname" ^"$_base" | wc -l)"
+ _nmcommits="$(git rev-list --no-merges "$_bname" ^"$_base" | wc -l)"
if [ $_commits -gt 1 ]; then
_suffix="commits"
else
_cmd="$1"; shift
_name="$1"; # no shift
_depchain="$*"
- depsfile="$(mktemp)"
- git cat-file blob "$_name:.topdeps" >"$depsfile"
+ _depsfile="$(mktemp)"
+ git cat-file blob "$_name:.topdeps" >"$_depsfile"
_ret=0
while read _dep; do
if ! git rev-parse --verify "$_dep" >/dev/null 2>&1; then
# Shoo shoo, keep our environment alone!
[ -z "$_dep_is_tgish" ] ||
- (needs_update "$_cmd" "$_dep" "$@") ||
+ (recurse_deps "$_cmd" "$_dep" "$@") ||
_ret=$?
eval "$_cmd"
- done <"$depsfile"
+ done <"$_depsfile"
missing_deps="${missing_deps# }"
- rm "$depsfile"
+ rm "$_depsfile"
return $_ret
}
# _dep needs to be synced with its base
echo ": $_dep $_depchain"
_ret=1
- elif ! branch_contains "refs/top-bases/$1" "$_dep"; then
+ elif [ -n "$_name" ] && ! branch_contains "refs/top-bases/$_name" "$_dep"; then
# Some new commits in _dep
echo "$_dep $_depchain"
_ret=1