Фотоснимки при коммитах в Mercurial

2013.02.17

Недавно узнал про #gitshots — фотоснимки, получаемые с помощью веб-камеры во время коммитов в git-репозитории.  По-моему это — самый верный способ получения фотоснимков себя без лишних действий.  Цели у всех разные: можно их куда-нибудь постить, а можно просто собирать и потом анализировать.  Мы с женой пробовали фотографироваться каждый день, но быстро надоело, а с таким скриптом всё происходит само собой.

Я почти не использую Git — у меня везде Mercurial, скрипт пришлось писать самому.  Но делается это элементарно.  Получением снимков с камеры у меня занимается утилита fswebcam, а скрипт целиком выглядит так:

#!/bin/sh
if [ -e /dev/video0 ]; then
    REPO=$(basename $PWD)
    if [ -n "$HG_NODE" ]; then
        test -d $HOME/Pictures/commitshots || mkdir $HOME/Pictures/commitshots
        nohup fswebcam --quiet --jpeg 95 --no-banner \
          "$HOME/Pictures/commitshots/%Y%m%d-%H%M%S-$REPO.jpg" >>$HOME/commitshots.log
        notify-send -i camera "Commit shot" \
          "New commit shot is available in ~/Pictures/commitshots"
    else
        geeqie $HOME/Pictures/commitshots
    fi
fi

Чтобы скрипт срабатывал при каждом коммите в любой репозиторий, в ~/.hgrc добавлены две строки:

[hooks]
commit = ~/bin/commitshot

Имена файлов содержат дату, время и имя репозитория, то есть можно даже понять, над чем велась работа в момент снимка.

Попутно выяснилось, что встроенная камера моего ноутбука снимает ужасно, и я теперь ищу как бы её заменить на что-нибудь более приличное.

commitshot

Следить за развитием событий можно через RSS ленту или почтовую рассылку.