有没有人以这种方式使用git?
我想将一些多媒体内容从服务器分发到某些Android remote devices。我希望他们发送一个包含设备使用统计信息的日志文件(由我将编写的Android应用程序提供)。
服务器可以是任何东西,但我更喜欢linux盒子。
我认为既然git句柄和sych只是文件之间的差异,那么这将是一个很好的工具,我会将内容修订历史作为奖励。
我需要一些关于如何组织存储库架构的建议:它必须是星型拓扑还是不同的东西?
系统的远端不需要任何交互性,换句话说,远程git存储库可以自动且自动地拉动和推送它需要的任何东西。
更新:我发现了here作为git internals的作者(我现在正在下载它),Scott Chacon谈论我想要实现的架构。
更新2:好的我读了“Git的非SCM使用”一章,以下是作者关于对等CDN的说法:
你必须得到新的内容[...] 由xml的任意组合组成 文件,图像,动画,文本和 声音。您需要构建内容 分配框架将 轻松高效地转移所有 机器的必要内容 在你的网络上。你需要 不断确定每个内容 机器有它需要的东西 并将差异转移为 尽可能高效。[...] 事实证明,Git是一个 这个问题的出色解决方案。
我没有发现任何关于在其中提及本书的一小部分的内容,所以我希望我没有违反任何版权。无论如何,如果有人抱怨,我会删除它。
答案 0 :(得分:2)
我建议不要使用git来处理这种purpase。对于初学者来说,Git将使用额外的手机存储来修改历史记录,并且它将发送整个文件(而不是增量),因为多媒体内容是二进制的,并且差异不适用于它。只需实现一个方法来列出具有最后修改日期的服务器端多媒体和另一种下载更新文件的方法(我建议使用HTTP,因为它是最简单的)。在服务器端,您当然可以在内部使用git对多媒体文件进行版本控制,但我宁愿不公开git接口。
答案 1 :(得分:2)
git协议尝试发送补丁而不是整个文件,但git存储引擎始终存储整个文件,并始终保留旧版本的文件。如果您不想保留文件历史记录,git可能不是该工作的工具。
rsync是一个成熟的文件分发系统,可以在ssh或它自己的协议上工作(与git相同),可以制作二进制补丁,也不一定保留更改历史记录。可能会开始在那里看看你能不能做到这一点。答案 2 :(得分:1)
所以在以前的工作中,我们使用Git就是这样,原因是我们的媒体资产并没有经常变化,所以无论我们使用什么,我们都可能不得不发送整个文件 - 因此,二进制分层问题虽然也是其他内容分发工具的问题,但并不重要。
rsync的主要优点(并且可能是unison,虽然我从未使用它)是你可以在索引中构建内容树并将树存储在Git下的每个客户端的分支下,而不是必须拥有所有内容磁盘运行rsync。如果您对内容有多种变化,那么能够记录每个客户端所需的独特内容树(其中您可以拥有数千种组合)非常酷,并且只需要一个简单的pull命令来获取所需内容并在客户端上更新它。这就是我们选择Git而不是rsync来做到这一点的原因。如果每个客户端都需要完全相同的数据集,那么rsync可能会更容易,但是Git的另一个好处是你可以获得每个客户端上内容的历史记录 - 每个客户端何时以及如何更改它。
我们还用它来记录日志文件 - 因为它们通常非常统一且基于文本,它们非常有效并且非常有效地传输 - 我们非常高兴使用它来记录并向上传输我们的日志数据。