0

Kiva 在http://build.kiva.org提供了一个 API

我们还偶尔会收到来自 API 的匿名(尽我们所能)数据的快照。我们现在正致力于定期更新这些快照,比如每周一次。它们总共很大,350MB 压缩,> 1GB 未压缩。但是,它们由数百个 JSON 文件组成,因此可以从 git 中受益,只需拉下更改即可。

我们想将我们的快照移动到 Git 和 Github 中,以利用它们的托管以及更快地获取快照的更新。事实上,我在这里提交了当前快照的一个提交:https ://github.com/coderintherye/kivaloans

但是,我们希望不保留 git 历史记录,因为我们不想让获取过去的历史记录变得容易,以便随着时间的推移拼凑数据。理由当然是我们有保护用户隐私的法律责任,并且我们有一个现实的期望,即无论我们如何尝试匿名数据,如果将足够多的数据放在一起,就有可能精确定位用户活动给团体或个人,例如 Netflix 比赛发生的事情:http: //www.wired.com/threatlevel/2010/03/netflix-cancels-contest/

有没有一种方法可以使用 Git 并提供数据,同时不保留历史记录?我们正在考虑的一个选项是使用 git,但使用 rebase -i 来破坏以前的提交。但是为了从 Git 中获得任何好处,我认为我们至少需要保留之前的提交,当然,任何不定期拉取的人根本不会获得太多好处,因为他们不会有旧承诺参考(或者我们认为?)

或者以这种方式试图成为拥有数据的好公民的期望是一种不合理的期望?如果是这样,我们可以完全放弃这个想法。

4

3 回答 3

2

GitHub 能够上传静态文件以供在源代码控制之外进行下载。这通常被项目用于提供预编译的二进制安装程序或其他大文件。

您可以使用他们的Repo Downloads API 来自动执行此操作。

于 2012-05-30T19:22:09.907 回答
1

另一种想法:使用具有完整历史记录的本地 git 存储库,并使用“构建过程”将特定快照发布到 GitHub。例子:

  1. 您进行了一系列提交并将它们签入您的本地存储库
  2. 您决定发布本地存储库,因此您首先标记它(为了更好地衡量)。
  3. 您的“构建过程”可以访问 GitHub 存储库的克隆。在结帐时,它会删除所有本地文件并执行本地存储库的导出(而不是结帐) - 特别是最后一个标记版本。
  4. 导出的文件被提交并推送到 GitHub。
  5. GitHub repo 有历史,但只有快照。

您可以使用某种标记或提交消息约定来轻松将公共提交与私人提交相关联,而不会暴露私人历史。

这个“构建过程”只是某种脚本,没什么特别的。

于 2012-05-30T21:05:19.047 回答
0

好吧,我们在这里决定的最终解决方案可能是非常规的,但应该对我们有用。

我们将仅以 json 文件形式保留最新的两个快照,如果数据有问题,我们会将存储库翻转为私有。然后,当数据被修复和/或清理到所需的程度时,我们会将其转回公开。

此外,虽然我们可能会按照 AlanBarber 的建议,通过 repo 下载 API 提供完整的快照。

于 2012-06-04T21:26:00.370 回答