您将需要某种脚本来为您构建各种内容分支。执行此操作的基本方法是将内容添加到数据库(在您的情况下,只需将它们提交到主分支),然后在临时索引中,读取您希望在每个分支中拥有的所有内容(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'等)。
我正在考虑做一个快速的截屏视频来演示这一点——希望示例脚本对您有所帮助。它应该很容易运行并弄清楚发生了什么。在同一个项目中,有一个“列表”脚本列出了哪个服务器分支上的内容。