一位同事和我想一起做一个项目,该项目使用我们不允许保存在我们的工作站上的数据(它可以保存在公司服务器上,我们可以在我们的工作站上打开它)。我们需要编写和共享使用这些数据的代码,包括清理它并保存数据的清理版本(在公司服务器上)。这些清理后的版本应该在版本控制之下。我们正在使用 Git。
我们应该如何设置 Git 存储库?如果我们在公司服务器上放置一个裸露的远程存储库,那么当我们将数据克隆到其中时,数据最终会出现在我们的工作树中,因此会保存在我们的工作站上。如果我们只是使用远程存储库对代码进行版本控制,那么数据将不受版本控制。如果我们在公司服务器上创建一个非裸 Git 存储库,并且两者都直接在其中工作,我们并没有真正获得版本控制的好处。
感谢任何想法。
一个小警告:如果数据保存在远程位置,并且您在工作站上打开它,您将有效地将其保存在那里,即使只是暂时的,当然,除非您的所有操作都在内存中完成。(即便如此,根据法律解释,这可能被视为将其保存在您的机器上,因为它是持久存在的,即使只是在 RAM 中。)
我建议两个存储库:
我假设您的数据修改脚本可以通过 SSH 或类似方法访问远程主机以修改那里的数据。远程更改数据后,您可以手动提交这些更改(再次,例如通过 SSH)。
更复杂的方法是在 Repo A 中使用 Git 挂钩,一旦您将更改提交到本地存储库,它就会提交并推送 Repo B 中的远程更改。
您还可以在 Repo A 中添加一个指向当前版本的 Repo B 的 Git 子模块。这样,您可以跟踪使用了 Repo A 的数据版本。请注意,您永远不必实际实例化该子模块(即,如果您运行,您会得到什么
--recurse-submodules
);它只是一个指向修订的指针。使用远程存储库具有版本控制。只是你必须远程工作。这可能最符合“敏感数据不能下载”的精神。
根据敏感数据使用的确切性质,也许最好的办法是使用非敏感数据/程序设置服务器,并用虚假(测试用例?)敏感数据填充它。进行设置,以便在一个安全的位置,您可以获得不敏感的东西并且手头有敏感的东西。这样您就可以自由下载和浏览,享受所有或 git 的好处,同时确保敏感数据不会泄露(或损坏)。
如果你问我,我会更担心一些错误(git 使用中的手指滑倒,处理敏感数据的程序中的错误)泄漏/破坏敏感数据,而不是某人的机器被 p0wned 和数据被盗,以及开发程序/personel 访问它听起来……不太明智。首先检查谁/什么应该可以访问它,然后担心其余的。