Бывает, хочется подойти к подсказанным 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/
Добавить комментарий