2011-06-14 88 views
5

假设我有一个位于公共开放源代码回购和私人开发回购的项目。发展回购的一些文件将包括像数据库密码的东西,并且我不想公开。在两个遥控器之间共享安全文件的最佳方式是什么?我在想某种只适用于公共回购的.gitignore文件,这可能吗?如果没有,还有其他建议吗?选择性的git忽略远程?

+0

这通常使用过滤器驱动程序来处理,如http://stackoverflow.com/questions/3318043/mark-a-file-in-the-git-repo-as-temporarily_ignored/3318202#3318202 – VonC 2011-06-14 04:53:06

回答

-1

请勿将密码放在源代码管理期间。他们到处只是.gitignore;通过其他方式分发私人密码文件。

(没有,没有只在某些仓库忽略文件的方式。)

+0

这没有帮助。我们需要在repo中部署配置,以便我们可以根据需要更改它们,并且每个人都会知道,而且我们的生产环境也是基于git的,因此需要部署的所有文件都需要在私人仓库中提供。没有理由这样的私人数据不应该在私人信息源控制。 – 2011-06-14 04:31:21

+0

@Stephen:问题在于,由于Git的运作方式,如果您甚至更改了单个文件,您将拥有完全不同的提交散列集合,从而形成完全不同的历史记录。 Git不会在历史级别上区分公共存储库和私人存储库。 – Amber 2011-06-14 04:33:57

+0

@Stephen:你可以做的是保持一个单独的分支,它有一个提交添加到你的私人文件中,并且永远不会将该分支发布到公共存储库。当更新开源部分时,您可以将其合并到'私人'分支中,私有文件将被保留。 – Amber 2011-06-14 04:34:51

3

可能把更多的敏感文件在不同的回购,在回购原其子模块,让您只私人开发商访问私人回购。

0

如果确实存在文件,为了安全起见,这些文件不应泄露给公众,请勿将它们放入存储库或使用密码加密文件!

最好的是,当你把非共享文件在一个单独的存储库可以住私人开发版本中:

BASE_DIR/.git 
BASE_DIR/private/.git 

这里BASE_DIR包含了所有公共文件。 BASE_DIR/private包含私有文件。

当你刚刚发布的数据,而不是存储库(及其所有历史记录),你可以简单地

git --work-tree=PATH_TO_THE_PUBLIC checkout HEAD -- . 

在新版本到来。