Ivanovo Linux Users Group - Not logged in
Forum Help Search Login
Previous Next Up Topic Программирование / Системное / diff отслеживаем изменения в файлах. (5822 hits)
- By hawk Date 17.02.11 14:28 Edited 17.02.11 14:54
Давненько все хотел что-то подобное сделать. Хостинг, диры с сайтами, два скрипта. Один делает синхронизацию всех дир хостинга. Синхронизация с возможностью удаления файлов в зеркале, если файл был удален в источнике и второй момент файлы изменяемые в источнике, не должны записываться в зеркало. Т.е. зеркало - это как бы отправная точка для учета всех последующих изменений файлов. Все это не сложно делается с помощью rsync.
Второй скрипт делает diff папок зеркала источника, с записью в файлы формата имя_сайта.diff, так по каждому сайту, например 10 сайтов 10 diff файлов соответственно. Скрипты в крон, в 1:00 (утра) текущего дня выполняем синхронизацию,  в 23:00 текущего дня получаем diff и того видим код, который менялся за день. В последующие дни  будет формироваться накопительный патч. Возможно сделаю rsync замену изменяемых файлов в зеркале раз в сутки, тогда патчи будут не накопительные, а только изменения за день.
Все работает, возможно некоторые вещи пересмотрю еще, если есть дельные советы с удовольствием выслушаю. Пока решаю накопительный патч или за день.
Вопрос в следующем, при получении так называемого мега патча diff со всех файлов сайта, внутри получается каша из кодировок. Системная кодировка KOI8-R, часть файлов сайтов в UTF-8, часть в CP1251. По сути пока не заморачиваюсь, т.к. русские буквы не так важны, важно в первую очередь видеть код, который менялся, в каких файлах и строках были изменения. Но кто и как попробовал бы решить эту проблему :-)? Например мне на ум приходит использование утилиты file для получения сведений кодировок, потом iconv. Да, скрипт получает diff-ы с 18 Gb файлов :-) достаточно долго, но операция проходит ночью, так что приемлемо. 

p.s. систему SVN и прочие не предлагать, вся разработка ведется программистом on-line на нескольких серверах, да и это идет в разрез с уже сложившимися традициями программирования веб программиста :-), да и руководству главное скорость. Поэтому контроль веду я, таким вот лисипедным образом.
echo "good..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
Parent - By Bercut Date 21.02.11 22:50
по поводу кодировок - не совсем понятно, нафига оно надо. тут скорее путь в причесывании кодировок в исходных файлах кода (что только не выскажеш), и то не ясно откуда изначально такая разнопи...здица пошла, ну а раз пошла и нужна то видимо так на роду написано. ежели для повышения чсв, то делаеш вторую версию .diff файлов примерно следующим образом каждый файл, я так понимаю кодировка там толко одна на сервак, попускаеш через перлскрипт. в скрипте пишеш незатейливый регексп который выцепляет букеры не ascii, ну или подумай там как похитрей. в спане есть библиотечка с iconv, хотя тру перловики сами соответствующий регексп, как два пальца об асфальт напишут. заменяеш результатом найденное в первом регэкспе. файлик сохраняеш это и есть вторая версия.

по теме. ты ужо ея поднимал. советов начитался. кури методичку по правильной разработке говнософта. и никогда не бойся ломать стереотипы. сломанными стереотипами бьют не так сильно как целыми, и массогабариты не те и держать не удобно :D
русский язык подобен искуству кун-фу, и великий мастер никогда не применит его без необходимости...
Parent By hawk Date 22.02.11 06:16 Edited 22.02.11 06:22

> по поводу кодировок - не совсем понятно, нафига оно надо. тут скорее путь в причесывании кодировок в исходных файлах кода


Правильно говоришь, все проекты должны быть в одной кодировке, все хостинги привести к одним версиям установленного ПО, разработку можно завернуть через систему контроля версий. Универсально, легко управляемо и ежели что, можно потом так же легко разобраться. Но ситуация не такая простая, разработка ведется в том виде, в котором велась долгие годы и устраивает всех, кроме меня )))).
С кодировками пока вопрос снимаю, русские буквы не так важны. Видно код, который менялся, пока этого достаточно.
echo "good..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
Previous Next Up Topic Программирование / Системное / diff отслеживаем изменения в файлах. (5822 hits)

Powered by mwForum 2.12.0 © 1999-2007 Markus Wichitill

Page created in 0.073s with 10 database queries.