arcanis |
|
Темы:
31
Сообщения:
1496
Участник с: 09 сентября 2012
|
Очередная никому не нужная фигня, правда на сей раз с ориентацией на пингвинов-красноглазиков. В общем, тут уже поднималась тема по поводу создания гит-репозитория для контроля изменений в директории /etc. Ну а так как я человек ленивый, то каждый раз запускать я не буду однозначно - просто лень будет. Вот со скуки и черканул простенького демона (я искренне верю, что 75% линуксоидов способны на это). Не искал, т.к. дело было сделано со скуки, а не потому что имелась какая то задача, наверняка что то подобное уже и существует. Исходники тут выкладывать не буду, ибо они в достаточной мере большие, чтобы засорить тему. В принципе, там чистой воды баш (надо бы по хорошему на sh портировать), так что, если хотите - можно глянуть исходники на гитхабе (ветка source немного отличается в конфигах от linux, тестить я ж не на /etc буду). Также имеется сервис для systemd и конфиг файл. В принципе, без правки исходного кода скрипта (только правкой сервиса и конфига) можно запустить несколько таких штук в разных директориях с разными интервалами обновления. Еще (помимо директории и времени обновления) настраивается игнор-лист (по дефолту там *pacnew, *bak и mtab). Логирование самого гита не убирал, потому в journalctl довольно подробно. Ну и + дебаг самого демона. Для ознакомления с работой/настройкой (хотя, повторюсь, демон элементарный) можно почитать 2 мана: по конфигу и по бинарнику. Вроде как работает (у меня стоит и запущен), замечания/предложения (кроме тех, что касаются того, что это никому не нужно) с удовольствием выслушаю. В планах еще нарисовать гуй (питон+qt, увы все навыки написания графических оболочек ограничиваются этим. Хотя, мб и cpp попробую освоить) по сути больше с работой гита как такового. В ауре выложен: yaourt -S git-etc ЗЫ забыл вроде в мане указать - будет исправлено в след версии - что время задается в часах и только целочисленное значение >=1 (иначе ошибка вылетит, проверка на идиота немного криво сделана). |
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
я так понял это демон который весит в памяти и по времени проверяет и комитит изменения в /etc ???
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
arcanis |
|
Темы:
31
Сообщения:
1496
Участник с: 09 сентября 2012
|
nafanjaв общих чертах - да. Т.е. совсем простенькая штука. Впрочем, по памяти он не проседает (по крайней мере ничего такого обнаружено не было), процессор не грузит, т.к большую часть времени в слипе. Блин, ошибочка вылетела, поторопился немного с выкладыванием. Не перезапускается %) этот момент я почти не тестил |
nafanja |
|
Темы:
94
Сообщения:
9252
Участник с: 02 июня 2012
заблокирован
|
Впрочем, по памяти он не проседает (по крайней мере ничего такого обнаружено не было), процессор не грузит, т.к большую часть времени в слипе.А не лучше ли было это сделать через крон или средствами юнита типа таймер?
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874 |
arcanis |
|
Темы:
31
Сообщения:
1496
Участник с: 09 сентября 2012
|
nafanjaне знаю, может и так и не городить велосипеды. Но я повторюсь, мне делать было нечего =) arcanisошибка была с теста, когда стоял exit перед слипом (есно демон закрывался успешно). Сейчас все в рабочем состоянии: [root@ARCANIS /root]# systemctl status git-etc [19:14] [77%] git-etc.service - git-etc daemon Loaded: loaded (/usr/lib/systemd/system/git-etc.service; enabled) Active: active (running) since Ср 2013-02-13 19:06:10 MSK; 8min ago Process: 14889 ExecStart=/usr/bin/git-etc $DIRECTORY $TIMESLEEP $IGNORELIST (code=exited, status=0/SUCCESS) Main PID: 14895 (git-etc) CGroup: name=systemd:/system/git-etc.service ├─14895 /bin/bash /usr/bin/git-etc /etc 12 mtab;;*[bB]ak;;*pacnew └─14903 sleep 43200 фев 13 19:06:10 ARCANIS git-etc[14889]: [II]: Set DIRECTORY to '/etc' фев 13 19:06:10 ARCANIS git-etc[14889]: [II]: Set TIMESLEEP to '43200' sec фев 13 19:06:10 ARCANIS git-etc[14889]: [II]: Adding files фев 13 19:06:10 ARCANIS git-etc[14889]: [II]: Creating new commit фев 13 19:06:11 ARCANIS git-etc[14889]: [II]: Waiting '43200' sec |
sleepycat |
|
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
имхо лишний комит - безполезный коммит, слишком много старых версий - непоймешь на которую откатывать... а для кого этот софт? для тех кто в гите разбираться не хочет? не могу понять просто.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
arcanis |
|
Темы:
31
Сообщения:
1496
Участник с: 09 сентября 2012
|
sleepycatскорее да, для тех, кто не хочет разбираться (в сумме, когда допилю небольшой гуй). Ну и автоматика (то для чего писалось "для себя") |
arcanis |
|
Темы:
31
Сообщения:
1496
Участник с: 09 сентября 2012
|
Ну вот, собсна, гуй приделал (python2/pyqt4). Все кликабельно/растягивательно + табуляция и return. В нем имеется какие то общие действия с гитом - вроде вывести список коммитов (по количеству, в определенный день или в интервал). А если в листе нажать на коммит, то можно посмотреть и более детальное содержание вплоть по отдельным файлам. Эти файлы (текущие версии) можно открыть в редакторе внешнем (по дефолту gvim, настраивается). Ну и ясен пень, можно чекнуть статус и закоммитить тут же. +работа с игнор-листом (.git/info/exclude), лист кликабелен. Из дополнительных возможностей: можно слить старые и новые конфиги в один - для этого используется ветка experimental (создается демоном текущей версии), в которой текущий конфиг заменяется свежим и готовится патч. Затем патч редактируется (по крайней мере, просмотр этого патча обязателен!) и применяется. По умолчанию ищет файлы *.pac*, *.bak, *.Bak, *.old, *.new, *.bckp и подставляет их. Хотя, предусмотрена возможность ручного указания. Еще есть по хардкору возможность отката к коммиту. В том окне все специально усложнено и присутствует предупреждение. При откате одного файла он просто патчится, потому вернуть к старой версии его можно. А вот при полном откате используется git reset --hard, потому до затертых файлов достучаться будет трудно. На самом деле, я просто не смог разрешить все зависимости при отдельном пропатчивании файлов. Хотя, предусмотрено окно лога, в которое вывалятся id затертых коммитов (сами коммиты формально не куда не денутся, пока их не удалить), потому его можно скопировать и затем, при необходимости, откатиться назад (вперед). Ну небольшое окошко настроек, в т.ч. и конфиг сервиса можно отредактировать. Англ.язык вроде есть (по дефолту). Программе могут потребоваться права суперпользователя (если не будет доступа к гит директории) - это также настраивается (включено по умолчанию) - если доступа не будет и судо будет выключено, большая часть программы откажется работать (сигналов просто не будет). Для этого ее надо запускать из терминала (запускать sudo ctrlconf не нужно в нормальных условиях). Кстати, как выяснилось (_внезапно_), ей терминал нужен, потому ее вообще говоря, надо запускать из терминала. Следует заметить, что у программы не все возможности адекватно тестировались (например, откаты), потому возможны некоторые баги, связанные с этим, которые я с удовольствием выслушаю. + Небольшая правка самого скрипта. Добавлено обновление игнор листа, парсер опций, возможность указать нужно ли менять права на директорию или нет (дефолт - да). Вроде все в скрипте. Хотел еще портировать на sh, но, если я правильно понимаю, у меня это не получится, например, из за перенаправления вывода). Потому забил на это дело, жду тапки из за башизмов. Исходный код все также доступен на гитхабе. PS да, я быдло-кодер =) Небольшой выброс (пример лога) в journalctl [root@ARCANIS /root]# journalctl -bu git-etc.service [2:28] [75%] -- Logs begin at Сб 2013-02-16 16:20:27 MSK, end at Вт 2013-02-19 02:28:05 MSK. -- фев 19 02:19:41 ARCANIS git-etc[425]: [II]: Set DIRECTORY to '/etc' фев 19 02:19:41 ARCANIS git-etc[425]: [II]: Set TIMESLEEP to '43200' sec фев 19 02:19:41 ARCANIS git-etc[425]: [II]: Cheching ignore-list фев 19 02:19:41 ARCANIS git-etc[425]: [II]: Experimental branch already exists фев 19 02:19:41 ARCANIS git-etc[425]: [II]: Adding files фев 19 02:19:41 ARCANIS git-etc[425]: [II]: Creating new commit фев 19 02:19:41 ARCANIS git-etc[425]: [II]: Waiting '43200' sec about окно просмотра изменений в коммите главное окно окно слияния старых и новых конфигов скромное окошко с откатом изменений до определенного состояния |