Я создаю пользовательские команды Git, написав сценарии в /usr/local/libexec/git
и создавая псевдонимы для их вызова. Например:Как написать портативные скрипты библиотеки Git?
git config --global alias.graph '!/usr/local/libexec/git/git-graph'
Хитрость в том, что я хочу, чтобы мои скрипты, чтобы быть «портативный» в том смысле, что любой, кто установил Git должен быть в состоянии установить и запустить мои сценарии так же, как и я, не встречая отсутствующие зависимости.
Важное замечание: После ответа Шверна я понимаю, что должен добавить немного дополнительную информацию. Замените «любого, кто установил Git», с «любым, кто взаимодействует с Git через скрипты git-core
, предоставленные официальными источниками Git». Например, вызов git rebase
выполняет .../git-core/git-rebase.sh
. (Вы можете щелкнуть это последнее слово, это гиперссылка, но во всех браузерах это не так). Я предполагаю, что это ситуация для большинства пользователей Git, поскольку это по умолчанию предоставляется самим проектом Git.
Из моего многолетнего опыта работы portable shell scripts, я знаю, что бесполезно ожидать, что сценарий оболочки даже с умеренной степенью сложности будет работать на всех Unix-подобных ОС, которые когда-либо существовали. Тем не менее, я думаю, что разумно ожидать, что между рабочими станциями Git будет существовать общая база коммунальных услуг, по крайней мере, достаточно, чтобы постоянно перескакивать через обручи и ходить по яичной скорлупе при написании сценариев для работы на этих рабочих станциях.
Вот мои предположения о рабочих станциях Git:
- Все скрипты в каталоге
git-core
(например,/usr/libexec/git-core
) не были изменены с момента его помещают туда установки Git. - Все сценарии в
git-core
работают так, как ожидалось (например, на рабочих станциях Git, или кто-либо с «нормальной» настройкой). - Установленная версия Git удовлетворяет некоторым минимальным требованиям, которые я решил поддержать своими сценариями. Редактировать: «Произвольно», я действительно имел в виду «удобный». @Schwern заявил с точностью, что я действительно пытался сказать здесь.
Как определить общую базу утилит, которые я могу использовать для написания переносных скриптов на этих рабочих станциях Git?
Edit: Я в основном ищу список зависимостей для git-core
сценариев, представленных в основном дистрибутиве Git. Это даст общую базу, которую я ищу.
Это не имеет ничего общего с git, и ваша ссылка - очень хорошая запись о том, что было найдено для работы повсюду. Есть ли что-то неудовлетворительное в отношении информации, которая там вас привела? – jthill
@jthill Проблема заключается в написании переносных скриптов, чем о Git, но это определенно относится к Git, довольно сильно на самом деле. В принципе, я ищу общий набор утилит (включая встроенные оболочки), которые можно ожидать найти на любом компьютере с установленной Git, учитывая сделанные мной предположения. Как видно из содержимого «git-core», Git полагается на то, что это правда, а также существуют определенные версии Python и Perl. Рекомендации, приведенные в руководстве GNU, с которым я связан, не сопровождаются 'git-core'. – Sam
BTW, в то время как 'git-p4' является Python, все остальные основные сценарии не являются Python, они находятся в разных каталогах« contrib ». Я предполагаю, что это главным образом для того, чтобы избежать зависимости от Python2 и Python3 и/или от сложности сложности библиотеки Python. – torek