Вам понадобится какой-то сценарий для создания различных ветвей контента для вас. Основной способ сделать это - добавить содержимое в базу данных (в вашем случае, просто поместив их в основную ветку), затем во временный индекс, считывая все содержимое, которое вы хотите иметь в каждой ветви (git read -tree / git update-index), запись этого дерева (git write-tree), запись объекта коммита (git commit-tree) и обновление ветки до этого нового коммита (git update-ref). Это все сантехнические команды, которые обычно не используются в повседневных операциях, но позволяют создавать моментальные снимки без одновременного хранения всего содержимого в каталоге на диске.
Пример сценария для выполнения чего-то подобного здесь:
http://github.com/schacon/gitcrazy/blob/master/update_content.rb
Здесь я определяю количество серверов, каждый из которых имеет одну или несколько ролей («memcache», «database» или «webserver»). Затем я могу добавить контент к роли, подобной этой:
$ update_content.rb /path/to/content file_name memcache
Это добавит содержимое в мой git db, а затем обновит ветви для затронутых серверов (в данном случае с ролью memcache). Я могу сделать это для нескольких файлов для любой роли, и git будет отслеживать, какой контент должен иметь каждый сервер. Затем каждый сервер может получить свою конкретную ветку ('server / s1', 'server / s2' и т. Д.).
Я подумываю в скором времени сделать скриншот, демонстрирующий это, надеюсь, пример сценария будет полезен. Это должно быть довольно легко бежать и выяснить, что происходит. В том же проекте есть сценарий «list», в котором указано, какой контент находится на какой ветви сервера.