Наверняка многие из вас слышали или знают по собственному опыту, что системы контроля версий плохо работают с бинарными файлами, большими файлами и особенно большими бинарными файлами.
Здесь и далее речь идет о современных популярных распределенных системах контроля версий, таких как Mercurial и GIT. Часто это не имеет значения.
Не знаю, причина это или следствие, но системы контроля версий используются в основном для хранения относительно небольших текстовых файлов.
Иногда несколько картинок или библиотек.
Если в проекте используется большое количество изображений высокого разрешения, звуковых файлов, исходных файлов графики, 3D, видео или любых других редакторов, то это проблема.
Все эти файлы обычно большие и двоичные, а это значит, что все преимущества и удобства систем контроля версий и хостинга репозиториев со всеми сопутствующими сервисами становятся недоступными.
Далее мы рассмотрим пример интеграции систем контроля версий и Amazon S3 (облачного файлового хранилища), чтобы воспользоваться преимуществами обоих решений и компенсировать недостатки.
Решение написано на C#, использует API Amazon Web Services и показывает пример настройки репозитория Mercurial. Код открытый, ссылка будет в конце статьи.
Все написано более или менее модульно, поэтому добавить поддержку чего-то кроме Amazon S3 не должно быть слишком сложно.
Я могу себе представить, что настроить GIT будет так же легко.
Итак, все началось с идеи — нам нужна была программа, которая после интеграции с системой контроля версий и самим репозиторием работала бы совершенно незаметно, не требуя от пользователя никаких дополнительных действий.
Как магия.
Реализовать интеграцию с системой контроля версий можно с помощью так называемых хуков — событий, которым можно назначить свои обработчики.
Нас интересуют те, которые запускаются в момент получения или отправки данных в другой репозиторий.
В Mercurial необходимые хуки называются входящими и исходящими.
Соответственно, вам нужно реализовать по одной команде для каждого события.
Один предназначен для загрузки обновленных данных из рабочей папки в облако, а второй — для обратного процесса — загрузки обновлений из облака в рабочую папку.
Интеграция с репозиторием осуществляется с использованием файла метаданных, индексного файла или чего-то еще, что вы предпочитаете.
Этот файл должен содержать описание всех отслеживаемых файлов, как минимум пути к ним.
И именно этот файл будет находиться под контролем версий.
Сами отслеживаемые файлы будут находиться в .
hgignore, списке игнорируемых файлов, иначе весь смысл этой идеи потеряется.
Интеграция репозитория
Файл метаданных выглядит примерно так:Теги: #vsc #dvcs #Mercurial #hg #git #aws #amazon s3 #dropbox #skydrive #bittorrent sync #системы контроля версий #Amazon Web Services<Эxml version="1.0" encoding="utf-8"?> <assets> <locations> <location>Content\Textures</location> <location>Content\Sounds</location> <location searchPattern="*.
pdf">Docs</location> <location>Reference Libraries</location> </locations> <amazonS3> <accesskey>*****************</accesskey> <secretkey>****************************************</secretkey> <bucketname>mybucket</bucketname> </amazonS3> <files> <file path="Content\Textures\texture1.dds" checksum="BEF94D34F75D2190FF98746D3E73308B1A48ED241B857FFF8F9B642E7BB0322A"/> <file path="Content\Textures\texture1.psd" checksum="743391C2C73684AFE8CEB4A60B0317E634B6E54403E018385A85F048CC5925DE"/>
-
Интрверсия
19 Oct, 24 -
Прикладная Лингвистика
19 Oct, 24 -
Новый Sip Домофон Grandstream Gds3710
19 Oct, 24 -
Создание Html-Формы С Помощью Веб-Интерфейса
19 Oct, 24 -
Критический Анализ Игр Со Поиском Предметов
19 Oct, 24 -
Банкомат Book Начнет Работу В Следующем Году
19 Oct, 24