“git Internal”这本书提到了在p50使用git作为对等内容分发网络,但没有太多细节。特别是如何让多个分支跟踪不同的文件。示例:
(工作目录) a00.exe a01.exe b00.exe c00.exe c01.exe c02.exe
主分支跟踪所有文件,分支A仅跟踪a00.exe和a01.exe,分支B跟踪b00.exe,依此类推。下一次提交将更新a00.exe b00.exe c00.exe。如何创建这样的分支?提交所有分支后,我只能从远程获取某些分支吗?谢谢!
发布于 2009-12-08 07:56:35
您将需要有某种类型的脚本为您构建内容的各种分支。基本方法是将内容添加到数据库中(在本例中,只需将它们提交到主分支),然后在临时索引中,读取每个分支中需要的所有内容(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‘脚本,它列出了哪个服务器分支上的内容。
发布于 2009-12-08 06:55:08
git internals的作者scott chacon有一个关于这个话题的视频/演讲,他谈到了某种商场的广告内容分发网络。鼓舞人心的:http://www.techscreencast.com/language/ruby/using-git-in-ruby-applications---scott-chacon-/1431
https://stackoverflow.com/questions/1863491
复制相似问题