1

我有一个项目我想开始在 github 上分享,我将它设置为另一个远程仓库。但是我有一些敏感的配置信息(amazon s3 帐户详细信息),我不想在 github 上明显分享。

有没有办法让远程 github 存储库忽略设置文件,但让本地和其他远程存储库使用它?

编辑 - 重新打开这个问题,看看是否有任何其他分布式源代码控制系统(mercurial?bazaar?等)可以做到这一点?

4

3 回答 3

1

您可以ignore设置文件,但它永远不会受到版本控制。

我要做的是拥有 2 个配置文件。一个用于生产,一个用于开发,其中包含所有设置。敏感凭据位于主配置“来源”的另一个文件中,这些不受版本控制。通常,它们只有两行(用户名、密码)。

但是,一般来说,没有办法跟踪文件但不推送它。

于 2011-12-12T16:34:48.043 回答
1

Mercurial 的工作方式与 Git 相同,您已经得到了很好的建议。但是,您可以设置一个编码过滤器,该过滤器将从存储库中的文件中删除密码。

这个想法是你版本一个文件

username =
password =

但是有一个在本地填充值的文件。Mercurial 会在您运行时忽略这些值hg statushg diff因为它会显示编码后的结果——编码过滤器会去除敏感信息。

就像是

[encode]
settings.cfg = sed "s/(username|password) = .*/\1 =/"

应该管用。(我现在无法测试,我在电车上。)

简单地不对文件进行版本控制仍然是处理此问题的简单、正常和推荐的方法。

于 2011-12-13T07:17:10.357 回答
0

通常,您可以通过拥有2 个配置文件来做到这一点(如果您想要示例配置,则 +1):

配置

username=root
password=r00t

配置.local

username=tkone
password=yoursecretpassword

config.local.sample(可选,但推荐)

username=replace with your local username and rename file to config.local
password=replace with your local password and rename file to config.local

.gitignore

config.local

.gitignore您需要放入config.local文件(您要保护的文件)并签入(config并且config.local.sample,如果您决定使用一个)。

当有人克隆您的项目时,他们将看到以下文件:

config
config.local.sample
.gitignore
all your other project files

重要的!!!当你加载配置文件时,你应该从你的程序中检查你是否有一个config.local文件。如果没有,请加载默认值:config

结论

您避免发布config.local包含您的敏感信息的内容。默认配置(从远程克隆)适用于用户名 root 和密码 r00t 有效的合理且罕见的情况。config.local.sample 将提供本地定制说明(如果有人需要)。

如果他们确实创建了一个config.local文件,它将被自动忽略(因为config.localfrom 行.gitignore),但它也会被您的程序自动使用,而不是默认config文件。

于 2011-12-12T17:32:21.047 回答