Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 18, 2009 23:21:18

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Система контроля версий

Собственно, понадобилось написать что-то самое простенькое наподобие CVS. То есть система с отслеживанием изменений в подконтрольных файлах, причем с добавочным резервированием (incremental backup). Подскажите, пожалуйста, в какую сторону копать и как грамотно все это дело реализовать. Каким-то макаром использовать diff'ы? И да, надо будет реализовать работу с удаленным хостом. Клиент-сервер?



Отредактировано (Дек. 18, 2009 23:47:35)

Офлайн

#2 Дек. 19, 2009 00:00:34

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Система контроля версий

всё уже давно придумали: rsync



Офлайн

#3 Дек. 19, 2009 10:06:17

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Система контроля версий

poltergeist
да знаю, от меня просят свою :) С преферансом и пианистками.



Офлайн

#4 Дек. 19, 2009 10:55:13

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Система контроля версий

дубль второй: mercurial + своя надстройка



Офлайн

#5 Дек. 19, 2009 11:24:53

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Система контроля версий

poltergeist
Да я понимаю, что есть куча сторонних куда более крутых разработок! :) Я просто хочу хотя бы сам для себя понять, как это можно замутить - мониторинг файлов, сбор изменений, работа с сервером. И да, исходники mercurial крутые, но вряд ли я в них вот так сразу быстро один разберусь)



Отредактировано (Дек. 19, 2009 11:25:24)

Офлайн

#6 Дек. 19, 2009 12:22:15

nuklea
От:
Зарегистрирован: 2009-12-05
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Система контроля версий

$ eix duplicity
[i] app-backup/duplicity
Available versions: 0.4.11 0.5.17 ~0.5.20 ~0.6.05 ~0.6.06 {s3}
Installed versions: 0.5.17(09:05:25 17.12.2009)(-s3)
Homepage: http://www.nongnu.org/duplicity/
Description: duplicity is a secure backup system using gnupg to encrypt data
Там есть все! :) Инкрементальный бэкап тоже. Юзаю активно :)



Офлайн

#7 Дек. 19, 2009 18:45:07

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Система контроля версий

Enchantner
Ну, для начала, стоит определится в типе системы - распределённая/централизированная. Зависит от контекста использования.
Команды и фичи можно почерпнуть отсюда - http://en.wikipedia.org/wiki/Revision_control#Common_vocabulary

Как делать с удалённым хостом - зависит от типа системы.
Определись с этими вопросами - проще будет ставить следующие требования, и рисовать архитектуру.

А вообще, я согласен с другими коментаторами - не стоит изобретать велосипед.

Офлайн

#8 Дек. 21, 2009 13:50:21

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Система контроля версий

К меркуриалу можно хуки писать.



Офлайн

#9 Дек. 26, 2009 14:33:21

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

Система контроля версий

В общем, небольшой ап :) Разбираю тут работу с модулем difflib. Прикол в том, что diff файла получается раза в полтора больше, чем сам файл. Неужели нет алгоритма попроще, чтобы многомегабайтный дамп бд лежал просто кейфреймом, а остальные файлы были маленькими диффами от него?



Офлайн

#10 Дек. 28, 2009 10:53:47

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

Система контроля версий

Enchantner
В общем, небольшой ап :) Разбираю тут работу с модулем difflib. Прикол в том, что diff файла получается раза в полтора больше, чем сам файл. Неужели нет алгоритма попроще, чтобы многомегабайтный дамп бд лежал просто кейфреймом, а остальные файлы были маленькими диффами от него?
Я с difflib не разбирался, и в работе системы контроля версия понимаю только алгоритм - но все-таки попробую высказаться.
Если у вас есть какой-то дамп(т е файл), затем в него внесены изменения , то я думаю что diff между этими 2-мя файлами будет примерно в 2 раза больше внесенных изменений. Пример - вы изменили три строчки - diff будет содержать 6 строчек - три первоначальные и три конечные строчки. Если коммиты(т е изменения) небольшие, то и diff будут небольшие. Если же изменилось почти все , то и размер diff будет в 1.5-2 раза больше оригинала.

Еще одна засада может быть вот в чем - я рассказал про обычный текстовый файл, в который diff может посмотреть изнутри(ну вот так я выразился). А вот дамп БД может и не быть обычным текстовым файлом. И при небольших изменениях в самой базе, дампы при построчном сравнении в diff могут отличаться просто кардинально. Вот тогда diff действительно будет колоссальных размеров. Как быть в такой ситуации я не знаю - либо изменить diff, чтобы он понимал дамп по нормальному(читай писать свой diff) или как-то сравнивать в самой бд и тд.



Отредактировано (Дек. 28, 2009 10:55:58)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version