4

我正在尝试在我的 Debian 计算机和一台 OS X 笔记本电脑上进行以下工作。

我想要的是某种使用 Amazon S3 作为后端的版本控制文件系统。

我在想的是使用 s3fs(使用 FUSE)来挂载存储桶,然后创建一个使用 GIT 的文件系统,每次我编写文件时都会进行新的提交(我想要一个完整的版本历史记录最多 x 天)。然后,安装的文件夹应显示文件的最新版本。我不知道如何解决的问题之一(由于缺乏经验,我假设)是我想将文件与本地文件夹同步。当然,我可以只下载所有文件,但这对带宽不友好。

另一个问题是当前版本的 s3fs 似乎不适用于 MacFUSE。

此外,可能不会发生的事情,但如果两台计算机同时写入文件,我想防止文件损坏。如果我理解正确的话,git自己实现了某种文件锁定,并不依赖于操作系统的文件锁定。

什么可能是使这项工作的大纲?我想以这些方式存储的文件只是 .tex 文件和矢量图像。

我知道存在一些解决方案(比如 Dropbox),但我不太喜欢它是封闭源代码的。

4

1 回答 1

5

首先,我要说的是,我不建议盲目地在 s3 上运行 git。git在运行过程中会产生很多小文件;在处理大量非常小的对象时,S3 很昂贵(而且速度很慢)。正如您所猜测的,S3 也没有机制锁定。最终的一致性使这成为不可能。最后,git 依赖于对其对象数据库的快速随机访问;S3 无法提供此功能,因此无论如何您都需要整个存储库的本地镜像。

相反,我建议您扩展现有的 git http 后端以推送到 S3。这将推送单个包文件,而不是推送松散的文件。这将利用 S3 的优势 - 大量加载大型对象。您仍然没有锁定,但由于您决定何时手动推送,您可以找到一些其他方式来轻松协调事情。

于 2011-06-30T21:05:39.183 回答