Перезаписать псевдоним 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
однажды и тебе придется избавиться от сценария хотя бы на время. Определенно бывают случаи, когда вы не хотите рекурсивно извлекать подмодули. Это также неоптимально для репозиториев без подмодулей.