/ gitHUD

Как вы Как можно было догадаться по названию, githud — это заголовок для командной строки, который будет отображать информацию git. Основное внимание уделяется информации и производительности.

Если вы так же без ума, как и я, по поводу своего запроса, вы можете проверить мой несколько связанный projectenvstatus

См. подробное описание элемента за элементом, чтобы узнать, что вы видите

Примечание. этот пример взят из терминала iTerm2 OSX с пользовательскими цветами из темы Solarized Dark

  • Почему githud?
  • Установить
  • Настройка
  • Конфигурация
  • Общие сведения о приглашении githud
  • Преимущества
  • Тесты
  • Спасибо

Почему githud?

Несколько месяцев назад я был в восторге (середина 2015) быгит-радар. Git-radar делает то же самое, что и githud, но реализован в оболочке. Хотя я какое-то время отлично провел время, я понял, что в моей конкретной настройке git-radar вводил видимую задержку (> 200 мс, слишком длинную для меня) при отображении myprompt.

В то время я искал упражнение для реализации в Haskell, поэтому я создал githud

Install

Каким бы способом вы не установили githud, не забыть завершить установку

Mac OSX с пивом

(поддерживается в каждом выпуске)

  • связать мой кран
  brew tap gbataille/homebrew-gba  
  • установить githud
  brew install githud  

Бинарные пакеты в Linux

Ищете участника, который предоставит рецепт (в форме действий github?)

С Cabal и Nix

(Используется в процессе разработки, поэтому поддерживается и обновляется)

Конфигурация Nix поддерживается в соответствии с файлом cabal. Поэтому, чтобы обязательно использовать совместимую версиюghc и соответствующие библиотеки, просто

 nix-shellcabal v2-install 

With Stack

(Не поддерживается. Dev использует Nix + Cabal. Не стесняйтесь вносить свой вклад)

Stack — это пакет haskell управляющий делами. 1 команду install можно найти здесь

githud доступен для взлома, но некоторые зависимости должны быть объяснены. Вам нужно добавить следующее в extra-deps в вашем файле stack.yml

 extra-deps: - daemons-0.3.0- network-2.8.0.1 

тогда вы можете запустить

  stack install githud  

With Cabal

(Не поддерживается. Dev происходит с использованием Nix + Cabal. Не стесняйтесь вносить свой вклад)

githud доступен для взлома. Поэтому просто загрузите его как обычно

  cabal v2-install exe: githud  

Затем вы можете обновить свой путь, включив в него вашу установку каталог (обычно ~/.cabal/bin ) или скопируйте установленный исполняемый файл в общее расположение, например /usr/local/bin

Настройка

Если вы просто вызовете исполняемый файл githud, вы получите краткий статус вашего репозитория. Он предназначен для вызова каждый раз, когда вы показываете свое приглашение. Поэтому вы хотите поместить его в свою переменную env PS1.

Оболочки имеют необычный способ управления подсказками, когда вы делаете такие вещи, как автозаполнение и тому подобное. Для этого ему необходимо знать размер приглашения. Специальные символы, используемые для обозначения цвета приглашения, должны быть окружены специальной разметкой, чтобы они не учитывались.

GitHUD знает, как с этим справиться. . Все, что вам нужно сделать, это запустить программу с параметром в зависимости от выбранной оболочки, и эти специальные символы будут использоваться в выводе

Bash

  githud bash  

Например, в моем файле .bashrc с исполняемым файлом в /usr/local/bin/ githud , у меня есть определение подсказки, которое выглядит так:

  export PS1 = " [ 033 [0; 37m ] [ A]  [   033 [0m ]  [ 033 [0; 36m ]  u  [ 033 [0m ]  W  [ 033 [0; 32m ]  $ (/usr/local/bin/githud bash  )  [ 033 [0m ]  $ " 

(в нем гораздо больше вещей, включая текущий каталог, час и подсказка ‘$’ завершающий символ)

ZSH

  githud zsh  

Примечание : эти специальные символы % { %} интерпретируются и скрываются только тогда, когда zsh отображает приглашение . Если вы просто вызовете githud с этим параметром ‘zsh’ из командной строки, вы увидите их в выводе!

Собираем его вместе в моем .zshrc , у меня есть следующая переменная PROMPT с исполняемым файлом в /usr/local/bin/githud

  setopt PROMPT_SUBSTexport PROMPT = '%  F {белый}% T% F {голубой}% n% {$ reset_color%} $ (/usr/local/bin/githud zsh) $ ' 

(в нем гораздо больше вещей, включая текущий каталог, текущего пользователя, час и завершающий символ ‘$’)

Fish

Добавьте этот код в свой файл config.fish.

  function fish_prompt set_color white echo -n [(date "+% H:% M")] set_color голубой  echo -n (whoami): set_color желтый echo -n (prompt_pwd) set_color $ fish_color_cwd echo -n (/usr/local/bin/githud) set_color normal echo -n ">" конец  

TMUX

Предложено @Thermatix

  githud tmux  

Собираем все вместе в мой .tmux.con f , у меня есть следующая переменная status-right с

  set -g status-right '# {pane_current_command} #  (~/. zsh/bin/githud_status "# {pane_current_path}") ' 

, что требует небольшого скрипта ~/.zsh/bin/githud_status

  #!/usr/local/bin/zsh -fcd $ 1 &&/usr/local/bin/githud zsh  

и исполняемый файл в /usr/local/bin/githud

NONE

Предложено @Thermatix

Вы можете получить необработанный текстовый вывод (без специального форматирования), вызвав

  githud none  

Configuration

Формат подсказки легко настраивается. Настройки по умолчанию дают вам вид и ощущения, как на скриншоте выше, с терминалом, настроенным с цветами темы SolarizedDark.

Чтобы изменить эти цвета или маркеры, используемые в приглашении:

  • Скопируйте файл .githudrc из этого репозитория в ваш домашний каталог, а затем из вашего домашнего каталога
  wget https://raw.githubusercontent.com/gbataille/gitHUD/master/.githudrc
  • Отредактируйте файл, раскомментировав некоторые поля и изменив их значения (инструкции включены в файл)

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

Демон сборщика

githud включает в себя демон-компаньон с именем githudd . Этот демон запустится при первом вызове githud и будет работать вечно.

Этот демон просто выполнит git fetch периодически в последнем репозитории git, в котором выполнялся githud . В стандартной установке, где вы используете githud в приглашении, это означает, что демон выполняет git fetch в последнем посещенном репозитории git.

Файл конфигурации .githudrc может содержать следующую конфигурацию для демона (значения по умолчанию указаны здесь)

 # Будет ли githud запускать  background daemonrun_fetcher_daemon = True # Как долго демон спит между циклами githudd_sleep_seconds = 30 # Путь, где будет храниться pid-файл githudd.  Должен существовать и быть доступным для текущего # usergithudd_pid_file_path =/usr/local/var/run/githudd.pid # Путь, где будет храниться файл блокировки githudd.  Должен существовать и быть доступным для текущего # usergithudd_lock_file_path =/$ TMPDIR/githudd.lock # Путь, где будет храниться файл сокета githudd.  Должен существовать и быть доступным для текущего # usergithudd_socket_file_path =/usr/local/var/run/githudd.socket # Путь, где будет храниться файл журнала захвата githudd stdout/stderr. # Журналы Githudd могут быть подробными.  Они здесь только для отладки. Не рекомендуется # активировать их # Используйте значение/dev/null, чтобы отключить logsgithudd_log_file_path =/dev/null 

Чтобы остановить демон, вы можете просто сделать

 pkill githudd 

Обратите внимание, что из-за нестабильности демон в настоящее время отключен по умолчанию

На работоспособность демона githudd указывает красный очаг (сломанный, когда неработоспособен) в начале приглашения (только когда демон активирован)

Понимание githud подсказка

См. объяснение подсказки

Преимущества

  • githud работает быстро (в моей системе примерно в два раза быстрее, чем git-radar, время выполнения ниже 100 мс)
  • githud легко поддерживать с помощью надлежащего тестового покрытия

Единственным недостатком по сравнению с git-radar является то, что вы нужно скомпилировать его на вашей платформе, а не просто в оболочке.

На Mac это теперь просто, так как я упаковал его как бутылку для пива. Что касается Linux, я жду вкладов, чтобы поместить его в пакеты RPM или DEB 🙂

Benchmarks

Итак, конечно, я хотел проверить, что бы я ни делал был полезен. Итак, я провел несколько тестов с библиотекой Haskell Criterion. Он основан на mysystem и не гарантирует каких-либо характеристик, но дает представление об улучшениях. Вот и:

  • git-radar — полная реализация оболочки
  • githud-syncIO — с обычными операциями ввода-вывода, выполняемыми по одному
  • githud-asyncIO — с асинхронным программированием операций ввода-вывода для повышения производительности.

Здесь вы можете найти подробности.

Для информации: я запускал это на Macbook Pro 13 «, 2014 г., полностью загружен, работает с iTerm 2, tmux, о- my-zsh, внутри репозитория git с некоторой информацией для анализа

Спасибо

Ну, спасибо git-radar за отличную идею и toguibou за обзоры кода

Оцените статью
motary.ru
Добавить комментарий