На счет гальванической развязки — там очень слабый сигнал, и если он не затухнет на обмотке, то наводки при проходе через стену будут такими, что нынешний вариант HD-качеством покажется.
Оговаривать каждый раз если трясутся, либо свой код оформить в библиотеку (под нужной вам лицензией) и к проектам прилеплять ее, как внешний компонент — тогда то что вы написали по проекту (функционал) переходит заказчику в собственность, а библиотека все равно ваша.
Однако все не так просто, потому как надо мигрировать часть базы, которая плагинами создана. Кроме обновления базы (Вторая ссылка, Step 4.), не забывайте, что если заливали файлы, то их надо перенести в новую версию ручами (Вторая ссыка, Step 2, Backing up the files).
Судя по логам, редмайн находится в папке /usr/share/redmine, сделайте ее бэкап, бекап базы (чтобы можно было вернуть в состояние «как было»).
Мануалы по установке и обновлению довольно подробны и довольно простые, но если возникнут вопросы, то вэлком в личку — отвечу честно на все вопросы, на которые знаю ответы!
Скажу честно. С ZFS не сталкивался. У меня все на ext4fs живет. Попробуйте поиграться с 2мя виртуалками.
Если не доверяете linux+zfs, то можно попробовать поставить xbmс на FreeNAS. По этому поводу (как пропатчить xbmc под FreeBSD) есть ветки и на xbmc, и на freebsd форумах.
С гитом я и имел в виду pull. именно внешний репозиторий в который можно снаружи делать пуш, а из него win забирает только ветку для продакшена пулом.
А с процессами, если не убьете сервер сначала, а только процессы, то можно попасть в такое положение, что сервер породит новый процесс до окончания обновления, а это ведет к плохим последствиям. Настроить сервис. Потом его останавливать, чтобы не порождал новые процессы, а потом добивать оставшиеся.
Мне кажется выхода два: описать свой стиль кодирования и следовать ему (глупо менять стиль чтобы проверка не спотыкалась), либо игнорировать подобные предупреждения/ошибки, а реагировать только на поправимое несоответствие.
Там все написано. Я не хочу сюда копипастить 20 строк кода.
Кодировка задается в заголовке письма и (возможно) каждой части. Считывайте ее и обрабатывайте данные в той кодировке, в которой они пришли.
Корявых писем будет очень мало, потому что все пользуются в основном качественными отправителями.