Перезаписать псевдоним bash для git pull, включив --recurse-submodules

Кажется, ни одна из функций ни на что не влияет? Кто-нибудь может заставить их работать и показать мне, что я делаю неправильно?

Я пытаюсь переопределитьgit pullвключить рекурсивные подмодули, сохраняя при этом работу других команд git

      #https://superuser.com/a/479816
function git() {
  case $* in
    -pull* ) shift 1; command git pull --recurse-submodules "$@" ;;
    * ) command git "$@" ;;
  esac
}

function ls() {
  case $* in
    -la* ) shift 1; command ls -la "$@" | more ;;
    * ) command ls "$@" ;;
  esac
}

1 ответ

Ваш сценарий не имеет особого смысла в первую очередь, поскольку он пытается сопоставитьgit -pull,git -pulled123и подобные заявления. Я бы порекомендовал прочитать о функциях, которые вы пытаетесь использовать, напримерcaseсовпадение с подстановочным знаком (*) или что$*означает (строка аргумента).

В любом случае, не углубляйтесь в это слишком глубоко, потому что это не тот путь. Самый правильный способ определить псевдонимы git — использовать и будет использоватьgit config --global alias.xyz "definition", например здесь:

      git config --global alias.rpull "pull --recurse-submodules"

Вы не сможете перезаписать команду таким образом, но можете использовать очень похожую. И переопределение, как правило, плохая идея, поскольку вы можете использовать обычныеpullоднажды и тебе придется избавиться от сценария хотя бы на время. Определенно бывают случаи, когда вы не хотите рекурсивно извлекать подмодули. Это также неоптимально для репозиториев без подмодулей.

Другие вопросы по тегам