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

Комментарии 27

а есть документация по этому пакету? или какое-нибудь howto?
а зачем доки там всего пару строк чтоб его использовать
import daemon from spam import do_main_program with daemon.DaemonContext(): do_main_program()
spam это я так понимаю типа-мой-модуль?
да
а как запустить этот скрипт?
просто python my_script.py?
и еще вопросы)
2. Как остановить?
3. Как указать, что нужна одна копия?
этот скрипт сделает fork и запустит отдельный процесс который уже будет daemon процессом!

чтобы остановить его нужно послать этому процессу сигнал c помощью kill

что касается одной копии то это уже нужно проверять самому перед запуском daemon процесса
спасибо. Попробовал, получилось.
Для получения изменения удобнее использовать деплой
gitnotify выполняет отсылку писем, а не нотификацию, как тут.

кстати, со своей стороны, рекомендую взглянуть на bitboxer.github.com/git-commit-notifier/
ну вот, появился хоть один коммент, а то одни минусы :)

Да, но мне кажется отсылка писем, в таком деле как оповещение о коммитах более удобней и функциональней.
я как разработчик (и немного админ своих серверов) не всегда нахожусь за одним компьютером, да и вообще могу быть на телефоне, поэтому получая оповещения по почте я знаю, что не пропущу ни одно из них, на каком бы устройстве я его не просмотрел.
Да и удобно складывать эти оповещения в папочку «на всякий пожарный»

Я использую gitnotify вместе с etckeeper'ом на каждом сервере, и всегда знаю, что где меняется.

За ссылку спасибо — посомотрю
Да, письмом надежнее. Тут скорее целью было ненавязчивое уведомление о изменениях, чтобы не затягивать время merge'a и разрешения конфликтов. В коде предусмотрел добавление новых видов уведомлений, постепенно думаю обрастет новыми экспериментами :)
Для реализации задачи был выбран язык Python (высокоуровневый, интерпретируемый, объектно-ориентированный и расширяемый язык программирования), так как я его не знаю.


Что ж вы будете делать, когда языки-то кончатся…
Мне кажется всё правильно сделал. Я тоже стараюсь решать простые задачи на незнакомых мне языках. Во-первых, это интересно, а во-вторых, ещё и полезно для развития кругозора.
На заметку: чтобы не опрашивать репозитории, научите демона ловить, к примеру, широковещательные сообщения, разбрасывать которые будет post-commit хук git.
А если следить за десятью репозиториями и ждать коммита от неизветсного человека?
Хук будет работать ровно с тех репозиториев, для которых определён. Не более.
А если вы действительно следите и ждёте, то libnotify не лучший вариант.

Я так понял, что автор упражняется, поэтому предложил ему упражнение №2 %)
Можно в повседневной работе использовать code review. Тогда ссылки на новые коммиты будут вам на почту падать. Будучи тимлидом, вы сможете их ревьювить. Да, кстати, и не только тимлидом.
Цель использование данного демона?
Все равно после коммита уже сложно что-то исправить без костылей.
а мне нравится. just for fun и обучение/опыт. мог бы — плюсанул.
Доложите объём оперативной памяти, занимаемой этим демоном, и стоили ли того эти мегабайты?
def setLastCheckTime(self, time = None):
    subprocess.check_output('touch ' + __file__, shell=True)

OMG… При правильной установке у файла будет овнер root:root и права rwxr--r--. Никакой touch вы ему не сделаете. Либо создайте отдельный файл и в него пишите дату последней проверки либо сохраняйте эту дату внутри объекта GitPushNotify()

if listGroup.has_key(i)
has_key уже deprecated. Пользуйтесь
if i in listGroup


В питоне по крайней мере, принято в CamelCase писать только названия классов, все остальное через_подчеркивание.

А в целом, если говорите что на Python раньше не писали — очень даже не плохо.
Спасибо!
Хранить внутри объекта не совсем верно, если демон простаивал некоторое время, то уведомления начнут поступать о коммитах потупивших только после запуска. Способ с touch был выбран, чтобы избежать дополнительных файлов, про права не подумал.
Может кому пригодится:
При заходе через ssh/НЕ из виртуального терминала 7 получается все так:

lomalkin@lomalkin-qdbook:~$ notify-send "Habr"

GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
aborting...
Аварийный останов


Соответственно это лечится указыванием display, куда отправлять:

lomalkin@lomalkin-qdbook:~$ DISPLAY=:0 notify-send "Habr"
Теперь работает.
Добавлю, что такой же прием необходим при отправке notify-send из cron'а.
Буквально недавно написал примерно такую же штуку, только на Perl. Использует веб-хуки гитхаба (висит на порту и ждет HTTP POST от github), отсылает по XMPP заинтересованным пользователям сообщения о коммитах, тикетах, пулл-реквестах и комментариях в репозитории (на комментарий можно ответить от своего имени прямо из XMPP-клиента, если настроить OAuth-токен)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории