Как стать автором
Обновить

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

Время на прочтение1 мин
Количество просмотров5.2K
Бывает, хочется подойти к подсказанным 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-ам.

UPD

На всякий случай дисклеймер, я понял что он сдесь нужен. Это шуточный сервис.
Теги:
Хабы:
Всего голосов 35: ↑15 и ↓20-5
Комментарии26

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань