#!/bin/bash # A wrapper for system git that prevents commands such as `clone` or `fetch` to be # executed in testing. It logs commands to “~/.history” so afterwards it can be # asserted that they ran.

command=“$1”

“$command” = “config”

|| echo git “$@” >> “$HOME”/.history

case “$command” in

"clone" | "fetch" | "pull" | "push" )
  # don't actually execute these commands
  exit
  ;;
* )
  # note: `submodule add` also initiates a clone, but we work around it
  if [ "$command $2 $3" = "remote add -f" ]; then
    subcommand=$2
    shift 3
    exec "$HUB_SYSTEM_GIT" $command $subcommand "$@"
  else
    exec "$HUB_SYSTEM_GIT" "$@"
  fi
  ;;
esac