git punish – команда которой мне всегда не хватало

от автора

Бывает, хочется подойти к подсказанным git blame-ом коллегам, посмотреть им ласково в глаза и поговорить о наболевшем. В такие моменты отсутствие команды git punish кажется невообразимым.

Сначала я намеревался написать пост в «Я пиарюсь», но очень хотелось рассказать о технических деталях, потому прошу простить ссылку на мой собранный на коленке git-punish.io.

Задача была простая: пока не выветрился азарт написать что-то вызываемое через git punish разбирающее вывод команды git blame и возвращаемое ссылку на страницу в онлайне.

Первым в голову конечно же пришло

git config --global alias.punish "...shell command..."

Но быстро выяснилось, что многого так не сделаешь. На второе решение навел чей-то добрый совет на Coderwall. Подход сразу показался красивым и лишенным ограничений. Оказывается, в любом месте перечисленном в $PATH можна создать исполняемый файл git-%command% который добавит новую команду в git.

Получилось вот так:

#!/bin/bash git blame --line-porcelain $@ | curl --data-binary @- http://git-punish.io/create 

Параметр --line-porcelain включает расширенный вывод для каждой строчки, который удобно разбирать. Добавляем в конец пользовательские параметры $@. Затем POST-им весь вывод на git-punish.io/create.

Разбор вывода малоинтересен, но если очень хочется увидеть то вот. В терминал выводится сгенерированый сервисом короткий URL.

Такие вот дела. Буду рад советам, подсказкам и прочим blame/punish-ам.

ссылка на оригинал статьи http://habrahabr.ru/post/267025/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *