git: полезные советы

IDE, VCS и прочее

Модератор: Модераторы разделов

Ответить
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

git: полезные советы

Сообщение t.t »

Предлагаю здесь обмениваться советами по git.

Для затравки небольшая оптимизация git help. У git такое количество команд, что без алиасов работать очень неудобно даже с автодополнением. Но гитовская команда help при вызове с алиасом выдаёт лишь строку, которая сокращена в этом алиасе. А хотелось бы получать справку по соответствующей команде. Для этого я написал такой простенький скрипт (назвав его gh, для краткости):

Код: Выделить всё

#!/bin/sh
c=$(sed -n '/\[alias]/,/\[/p' <~/.gitconfig |
  sed 's/^\s*//' | grep -v ^# |
  egrep -o "^$1 *= *[a-z]+" |
  cut -d = -f 2)
[ -z "$c" ] &amp;&amp;
  exec git help $1
git help $c


Как видите, если алиас не найден, команде git help передаётся первый аргумент в неизменном виде. Т.е. получаем единообразный вызов справки и для алиасов, и для внутренних команд. По алиасу на внешнюю команду будет выдана стандартная строка git help для алиасов. Для полноты картины можно добавить в bash-completions для gh такую же строку, как там уже есть для git, чтобы алиасы и команды после неё ещё и автодополнялись.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: git: полезные советы

Сообщение watashiwa_daredeska »

Какой страшный хакерский парсинг гитконфига :)

Код: Выделить всё

#!/bin/sh
cmd=$(git config --get alias."$1" | awk '{print $1}')
[ -z "$cmd" ] && cmd="$1"  # alias not found
exec git help "$cmd"
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git: полезные советы

Сообщение t.t »

watashiwa_daredeska писал(а):
07.07.2010 00:41
Какой страшный хакерский парсинг гитконфига :)

Код: Выделить всё

#!/bin/sh
cmd=$(git config --get alias."$1" | awk '{print $1}')
[ -z "$cmd" ] &amp;&amp; cmd="$1"  # alias not found
exec git help "$cmd"
«Я не волшебник, я только учусь». (: Как-то я действительно забыл про config --get. Но что-то вроде egrep -o [a-z]+ всё равно нужно оставить. Иначе с алиасами на внешние команды «кина не будет».
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git: полезные советы

Сообщение t.t »

Исправленный вариант:

Код: Выделить всё

#!/bin/sh
c=$(git config --get alias.$1 |
  egrep -o '^[a-z]+')
[ -z "$c" ] && c=$1
exec git help $c
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Ответить