Более эффективный способ разобрать git команд? - PullRequest
1 голос
/ 05 августа 2020

Вкратце: хотелось бы, чтобы подсказка появлялась быстрее, хотя это не слагги sh.

Создание настраиваемой подсказки для моего bash терминала; следующий список находится в моем /etc/bash.bashrc

Я уже использую репозиторий «gitstatus», который ускоряет выполнение некоторых команд git. Я думаю, что замедление происходит из-за количества самих команд. Я хочу знать, могу ли я обычно использовать МЕНЬШЕ git команд, чтобы делать то же самое.

Вот список всего, что я делаю:

  1. Получить ветку (если голова отсоединена , команды, требующие его пропущены)
  2. Проверить восходящий поток
  3. git rev-list --left-right --count "$branch"..."$upstream", чтобы проверить, впереди или позади
  4. Проверить тайники

РЕДАКТИРОВАТЬ: Не обращайте внимания на № 5. Сначала я вызвал команду # 8, получил эту информацию и добавил # 5 к PS1 перед командой # 8

Проверить наличие грязной ветки (выполняется отдельно; я знаю, что # 8 предоставляет эту информацию, но эта команда вызывается ранее, и мне нравится символ там)

Проверить для удаленного

Проверить наличие неотслеживаемых файлов (отдельно, чем указано ниже, поскольку они расположены в начале приглашения, поскольку я рассматриваю их как «проблему» с более высоким приоритетом)

Все сразу проверяют наличие измененных, добавленных, удаляемых или не объединенных файлов путем синтаксического анализа git status -s

Они запускаются с использованием одной команды git на строку. При необходимости предоставит изображение.

На Bash для Windows терминала.

1 Ответ

1 голос
/ 06 августа 2020

Ответ на мой собственный чрезвычайно конкретный c вопрос:

В моем случае я пытаюсь проанализировать git status -s в функции foo и вызвать функцию bar, которая обнаруживает, что файлы существуют. Дело в том, что вывод bar добавляется к PS1 перед foo. Вроде нормально, но я пытаюсь свести к минимуму количество команд git, вызываемых каждый раз в моем bashr c. Итак, вместо синтаксического анализа git status -s в foo, а затем отдельного поиска, существуют ли неотслеживаемые файлы в bar, я могу вызвать foo, создать переменную untracked_files_exist и сделать ее истинной, если это задано git status -s. Затем я могу вызвать bar после, использовать этот untracked_files_exist, как я хочу, и отдельно добавить выходные данные функций к PS1 в любом порядке после того, как оба вызываются.

если это не имеет смысла: Если Если вам нужен быстрый запрос, вызовите функцию git с возможностью синтаксического анализа, которая отображает как можно больше информации. Если вы хотите, чтобы запрос содержал такую ​​информацию в другом порядке, чем вывод команды git, не добавляйте в PS1 INSIDE функций синтаксического анализа. Сделайте это ПОСЛЕ, чтобы контролировать порядок подсказок.

...