Эхо в псевдонимах gitconfig, повторяющих весь список аргументов командной строки, когда ожидается только один
Долгое время в моем файле псевдонимов были следующие псевдонимы:
ignore=!([ ! -e .gitignore ] && touch .gitignore) | echo $1 >>.gitignore
Это не было оригинально для меня, и если вы будете искать его, вы увидите много мест. Однако недавно у меня возникла странная проблема с псевдонимом. Все, что я игнорирую, помещается дважды в файл .gitignore и в одну строку (только с пробелом).
Я сделал немного отладки и обнаружил, что на самом деле происходит то, что вызовecho $1
эхом$1
как и следовало ожидать, но также повторяет всю строку аргументов для псевдонима.
Чтобы проверить это, я создал новый псевдоним:
eo = !echo $1
> git eo test
test test
> git eo test0 test1
test0 test0 test1
Эта последняя строка наиболее интересна, потому что она ясно показывает, что вызов echo получает весь набор аргументов, пока$1
оценивается правильно. На самом деле, если я возиться с вещами и изменить$1
в$9
(и не заполняйте$9
), Я получил:
> git eo test0 test1
test0 test1
Я подтвердил, что это происходит в версиях Git с 1.8.5 до 1.9.0, и я подтвердил, что этого не происходит в версии Git 1.7.1; к сожалению, я не могу проверить между 1.7.1 и 1.8.5.
У кого-нибудь есть понимание того, что здесь происходит? Это ломает несколько моих псевдонимов ...