我有一个项目,我想开始在github上分享,我将其设置为另一个远程回购。但我有一些敏感的配置信息(亚马逊s3帐户详细信息),我不想在github上明显分享。
有没有办法可以让远程github repos忽略设置文件,但是本地和其他远程repos可以使用吗?
编辑 - 重新打开这个问题,看看是否有其他可以做到这一点的分布式源代码控制系统(mercurial?bazaar?等)?
答案 0 :(得分:1)
您可以ignore
您的设置文件,但它永远不会受版本控制。
我所做的是拥有2个配置文件。一个用于生产,一个用于dev,包含所有设置。敏感凭证位于主配置“源”的另一个文件中,并且这些文件不受版本控制。通常,它们只是两行(用户名,密码)。
但是,一般情况下,无法跟踪文件但无法推送文件。
答案 1 :(得分:1)
Mercurial与Git的工作原理相同,你已经为此提出了很好的建议。但是,您可以设置一个编码过滤器,该过滤器将从存储库中的文件中删除密码。
您的想法是使用
对文件进行版本控制username =
password =
但是在本地填充了一个文件。 Mercurial会在您运行hg status
和hg diff
时忽略这些值,因为它会在编码后显示结果 - 编码过滤器会删除敏感信息。
像
这样的东西[encode]
settings.cfg = sed "s/(username|password) = .*/\1 =/"
应该有效。 (我现在不能测试它,我在电车里。)
简单地不对文件进行版本控制仍然是处理此问题的简单,正常和推荐的方法。
答案 2 :(得分:0)
通常你可以通过 2个配置文件来实现这一点(如果你想要一个示例配置,则可以+1):
<强>配置强>
username=root
password=r00t
<强> config.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.local
的{{1}}行),但它也会获得您的程序自动使用而不是默认的.gitignore
文件。