Фото после каждого коммита (Win)

в 9:11, , рубрики: Git, обработка изображений, фото из командной строки, метки:

Приятного времени суток!

Ох, жуть как зацепила статья alizar Фотографируемся после каждого коммита (Linux, OSX). Но в силу особенностей своей ОС, предложенные решения мне, слегка, не подошли. Проведя немного времени в поисках и не получив искомого результата, было принято решение сделать что-то простенькое (just for fun, with Demonix) для решения данной задачи…

Дано:
Несколько клиентов для разных систем (изврат, но что поделать)
Фото после каждого коммита (Win)
Найти:
решение как можно при коммите делать фото с веб камеры.

Чтобы максимально упростить решение задачи, я использовал библиотеку DirectShow .NET

Основной код консольного приложения:

Image image = Capture.GetImage();
image.Save(path, ImageFormat.Jpeg);
image.Dispose();

Настройки клиентов:
Я создал hook на событие Post-commit, т.к. мне хотелось добавлять к имени файла ревизию.
Фото после каждого коммита (Win)

При запуске команды, автоматически добавляются аргументы. Для разных событий, разные аргументы.
Конкретно для события Post-commit аргументы следующие:
PATH DEPTH MESSAGEFILE REVISION ERROR CWD

В итоге получается что-то типа c:tempsvn_134278_2012-07-17_13-54-46.jpg

Фото после каждого коммита (Win)

Путь и формат файла каждый может настроить под себя.
Для TortoiseGit настройки практически идентичны:
Фото после каждого коммита (Win)

На моем железе время работы программы около 00:00:03.3676868

before INIT 00:00:00.0000007
before CaptureImage 00:00:00.3365297
before CloseInterfaces 00:00:02.3431425
before Clone 00:00:03.3188398
before save 00:00:03.3235840
end 00:00:03.3676868

Естественно использовать webcam-snap.exe можно и для любых других целей.
В дальнейшем имеющиеся снимки можно склеить, например, в видео. Пример не прикрепил, т.к. пока у меня недостаточно фото коммитов ;)
GitHub

Автор: iklementiev

* - обязательные к заполнению поля