[О блоге] [наверх] [пред] [2024-03-24 11:47:19+03:00] [42b3d1b739b5f0cef40f349cdc7044a785dc604a]
Темы: [zsh]

Более-менее активная работа с schwabrak-ом

В bd94115b066472316ea03e85d611f732785f8b7c я упоминал о написании "issue
tracker"-а на основе директорий и файлов, пригодного для использования
без дополнительного софта, имея под рукой только Git.

С парой коллег вот попытались его вести для нескольких проектов.
Наверное ещё рано говорить об успехе или провале, но пока вроде
отторжения ни у кого не вызывает это всё. Используем все написанные
на Z shell утилиты мои.

Много коммитов наделал в него, которые то тут, то там что-то упрощают
при работе с ним. Разукрасил его вывод, обмазал цветами: всё же цвета
ощутимо позволяют облегчить навигацию по тексту глазами. Изначально
использовал supercat утилиту, но, оказалось, есть ещё компьютеры с
настолько старой версией, где нет множества используемых мною опций.
Написал свою версию supercat на zsh:

    # Usage: colourise ColourSpec:RegExp [ColourSpec:RegExp ...]
    # It is intended to be a drop-in replacement for supercat utility.
    # ColourSpec is comma delimited list of ANSI codes for colour setting.
    # Look for zsh'es Functions/Misc/colors documentation about possible
    # colour values. For example to set bold red on green background you use
    # "bold,fg-red,bg-green" as a ColourSpec.
    # RegExp is POSIX extended regular expression of the text you want to
    # colourise.
    colourise() {
        if [[ -n $NO_COLOR ]] || [[ $# -eq 0 ]] ; then
            cat
            return
        fi
        (( ${+colour} )) || { autoload -Uz colors ; colors ; }
        local lc=$'\e[' rc=m colr=""
        local spec=(${(s/:/)1})
        shift
        for c (${(s/,/)${spec[1]}}) colr="${col}${lc}${colour[$c]}${rc}"
        local re=${(j/:/)spec[2,-1]}
        sed -E "s/${re}/${colr}&${reset_color}/g" | colourise $@
    }

Можно давать вот такие команды:
    colourise bold,fg-green,bg-magenta:"\d+" blue:"whatever regexp"
перечисляя множество регулярок и опций для формирования ANSI разукрасок.
Понравилось что вышло без кучи кода, переиспользуя colors модуль zsh и
POSIX-совместимый sed с расширенными регулярками.

Раньше не было команды "comment", ибо что в неё засунуть, если нужно
всего-лишь открыть issues/.../comment файл и после редактирования
добавить в Git? Но теперь она есть и позволяет предыдущий комментарий
оставить в виде "#"-комментария, а после выхода из редактора удаляет
его, добавляя в Git index. А если ничего не было отредактировано, то
оставляет как было.

"list" команда позволяет фильтровать по тагам. Причём не нужно указывать
полное название тагов. "list star" покажет список задач у которых есть
таги "assignee:stargrave". Если перед тагом написать "!", то будут
показаны задачи у которых него его. "list starg \!done" -- все не
сделанные задачи (у которых нет status:done тага) повешенные на меня.

На работе используется сраный GitLab (сраный -- потому что не
поддерживает SHA256 Git-репозитории, как минимум). Но в нём парой
щелчков можно включить отсылку оповещений о коммитах с показом diff-а.
Поэтому любой push в репозиторий с задачами -- оповещает на email всех
участников.

Пока мне очень нравится как с ним удаётся работать и лично мне ощутимо
помогает уже с несколькими десятками задач. Кроме него, у меня ещё и
личный issue tracker был, по которому очень легко было делать отчёты об
удалённой работе (да, сдаём каждый месяц такое). С schwabrak-based
tracker-ом можно давать ссылки на GitLab и на нужную директорию задачи,
что было бы уже проблематично, если бы задачи находились в
SQL/Recutils/Org-mode СУБД какой-нибудь.

    [оставить комментарий]