github中,一些涉及到用户配置的文件怎么处理(比如数据库用户名/密码)? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
gracece
V2EX    git

github中,一些涉及到用户配置的文件怎么处理(比如数据库用户名/密码)?

  •  
  •   gracece 2013 年 6 月 30 日 11182 次点击
    这是一个创建于 4682 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想把代码放在github上,不知道怎么处理好,怕一不小心把密码都push上去了。
    22 条回复    1970-01-01 08:00:00 +08:00
    fangzhzh
        1
    fangzhzh  
       2013 年 6 月 30 日
    ignore吧, 保存在本地好了.
    或者上去前, 加密下
    gracece
        2
    gracece  
    OP
       2013 年 6 月 30 日
    @fangzhzh 比如我有一个 config.php ,在第一次push的时候放个空密码。然后设置为ignore掉之后再把密码写进去这样吗?
    Livid
        3
    Livid  
    MOD
    PRO
       2013 年 6 月 30 日   9
    源代码库里放 config.example.php,然后 .gitignore 里忽略 config.php。
    fangzhzh
        4
    fangzhzh  
       2013 年 6 月 30 日   1
    @Livid 这个正解
    yuelang85
        5
    yuelang85  
       2013 年 6 月 30 日
    @Livid 正解啊,正为这个发愁呢
    gracece
        6
    gracece  
    OP
       2013 年 6 月 30 日
    @Livid 感谢!
    gracece
        7
    gracece  
    OP
       2013 年 6 月 30 日
    突然想到为什么wordpress的代码里面只给了 wp-config-sample.php 没有 wp-config.php ,大概也是这样的原因吧。
    Livid
        8
    Livid  
    MOD
    PRO
       2013 年 6 月 30 日
    @gracece 对,很多 PHP 开源项目都是这样做的,phpMyAdmin 也是。
    lex
        9
    lex  
       2013 年 6 月 30 日
    build 的时候从 keychain 取。
    xzl380
        10
    xzl380  
       2013 年 6 月 30 日
    用我们学校的邮箱可以申请到micro 的套餐,好像5个私有。
    另外gitcafe目前免费。
    thai9quohs6jae1C
        11
    thai9quohs6jae1C  
       2013 年 6 月 30 日
    phing 用这个
    Kjuly
        12
    Kjuly  
       2013 年 6 月 30 日   4
    gitignore一般来说是ignore一些untracked文件(比如生成的二进制、临时文件等)
    但如果项目中已经存在了一个已经设置了参数但各参数为空的config文件 那么最好的办法还是使用

    git update-index --assume-unchanged config

    这样每个本地库对config的修改都不会被track 但服务器端的config文件还在

    而且现在越来越多的项目使用Live Build,这就避免了缺失config中的参数带来的Build Failed错误

    ---
    另外 当你需要为config文件添加新参数的时候 使用

    git update-index --no-assume-unchanged config

    来重新track文件的修改 提交修改后记得再--assume-unchanged回来 具体使用方法自己可以搜索下 建立一个测试项目试试效果 ;)
    bcxx
        13
    bcxx  
       2013 年 6 月 30 日
    @Kjuly 但是如果协作的话就要大家都设置一遍了,有其他方法可以解决这个开销么?
    timonwong
        14
    timonwong  
       2013 年 6 月 30 日   1
    @bcxx
    可以用 git attributes 的 filter,不过稍显复杂,每个working directory仍然需要单独设置。

    你可以考虑这种办法:
    1. 首先还是在 ${git_working_dir}/.gitignore 中排除掉 xxx.conf
    2. 使用任意安全的同步方法,维护一个专供config的库
    3. 软连接 ln -s ${path_to_real_config_folder}/xxx.conf ${git_working_dir}/xxx.conf
    est
        15
    est  
       2013 年 6 月 30 日   3
    测试和正式服一般是通过环境变量注入来提供db密码之类的。
    binux
        16
    binux  
       2013 年 6 月 30 日
    我的做法是在config.py中try一个import local_config.py,local_config.py不提交
    bcxx
        17
    bcxx  
       2013 年 6 月 30 日
    @timonwong 这个方法就是我现在用的啦 :)
    reorx
        18
    reorx  
       2013 年 6 月 30 日
    @binux +1
    tangzx
        19
    tangzx  
       2013 年 7 月 1 日   1
    越来越多的实践采用环境变量,而非本地文件
    tangzx
        20
    tangzx  
       2013 年 7 月 1 日
    默认值采用mongodb://localhost/devdb (数据库)这样的本地开发值,这样如果再配合mongo这样无schema的货货。就几乎可以0配置启动开发了,这样对对代码有兴趣的开发者很友好。如果一个项目启动配置都要很麻烦,自然让其他人不想参与其中
    ushuz
        21
    ushuz  
       2013 年 7 月 1 日   2
    @fangpeishi 即使私有库也不能该把密码push进去。
    这里有一篇亡羊补牢的指南,如果不小心把敏感数据push进去了如何清理。
    https://help.github.com/articles/remove-sensitive-data
    duhastmich
        22
    duhastmich  
       2013 年 7 月 1 日
    还有个类似config.example.php 的思路不过可以生成 config.php https://github.com/zweifisch/redact; 环境变量也可以只导出一个变量,APP_ENV=production,然后根据这个变量来加载不同的配置文件
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2723 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 123ms UTC 12:51 PVG 20:51 LAX 05:51 JFK 08:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86