协作时如何pipe理configuration文件?
我正在用一些简单的variables在页面顶部写一个简短的脚本。 我想和一个朋友一起工作,但是我们不知道如何pipe理每次拉我们中的一个后需要改变的variables,为git状态添加不必要的垃圾。 我想为我们每个人创build不同的命名分支,然后主人将只设置示例用户名,但似乎很难做所有额外的工作合并。 我们可以将这些variables作为选项传递给脚本,但这不是我们所希望的,也不会将它分离出来,以作为另一个单独的configuration文件。 拥有像.gitignore之类的东西真是太好了,但是只能忽略文件中的几行。
这如何优雅pipe理? 这个问题通常如何pipe理?
你恐怕不能轻易忽略文件特定行的改变,所以你可能会被困在一个单独的configuration文件中。 下面我列出了处理这个问题的两种典型方法,以及一个稍微异乎寻常的方法:
在git中有一个示例configuration文件
在这里,你将保存一个git中的文件config.sample
作为例子,但是应用程序实际上将使用在.gitignore
中的文件config
的值。 然后应用程序会产生一个错误,除非config
存在。 将新的configurationvariables添加到个人config
文件时,必须记住更改示例文件中的值。 在这种情况下,让应用程序检查所有必需的configurationvariables是否真正设置,以防某些人在更改样本后忘记更新其config
文件也是一个好主意。
在git中有一个默认值的文件
在git中保留一个config.defaults
文件,尽可能使用默认configuration值。 您的应用程序首先从config.defaults
获取configuration,然后从config
(位于.gitignore
)获取config
,以覆盖任何默认值。 使用这种方法,通常你不会让config
不存在,所以应用程序可以为那些没有打算创buildconfig
人开箱即用。
使用–assume – 不变的单个configuration文件
第三种可能性,在这种情况下,我个人不build议这样做,那就是在git中提交一个configuration文件,但是要使用git update-index --assume-unchanged <FILE>
来告诉git忽略它的变化。 (这在这个有用的博客文章中有进一步的描述。)这意味着你的configuration文件的本地修改不会被git commit -a
或者以git status
显示。
在我的情况下,我像在团队中的所有其他开发人员一样,在一个单独的(小)文件中“configuration”variables。 像我的数据库位置等事情都保存在那里。 我们把这个文件的名字放在我们的.gitignore
这样它就不受版本控制,但是签入一个“sample_config”文件,这样新手就可以制作一个副本,并将其用于自己的目的。
特定于Python / Django的解决scheme是将共享的settings.py
文件签入到存储库中,并在settings_local.py
结尾处导入一个本地settings.py
,该文件使用特定于机器的值覆盖某些设置。
其他选项(不优雅,但可能有所帮助):
- 使用
git stash
和git stash pop
您的configuration文件 - 有一个名为,比如说, configuration有你的本地configuration文件更改的分支,然后使用
git checkout config <your config file>
如果您需要保持repo(某处)的本地configuration更改,第二个选项是很好的。
您可以为本地设置创build一个额外的存储库,并将文件/文件夹符号链接到您的项目。
有关详情,请参阅我在另一个主题上的回答
- 使用Java使用Selenium WebDriver加载Chromeconfiguration文件
- 如何在运行时在我的Grails Config.groovy中获得好东西?
- 确定正在使用哪个configuration文件
- 什么是系统表master..spt_values的目的是什么,它的值的含义是什么?
- configurationlog4net根据级别向不同的appender发送错误
- 在Springconfiguration文件中使用bean id和name之间的区别
- Spring Boot和多个外部configuration文件
- Capistrano – 如何把文件放在共享文件夹中?
- parsingconfiguration文件,环境和命令行参数,以获得单个选项集合