协作时如何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 stashgit stash pop您的configuration文件
  • 有一个名为,比如说, configuration有你的本地configuration文件更改的分支,然后使用git checkout config <your config file>

如果您需要保持repo(某处)的本地configuration更改,第二个选项是很好的。

您可以为本地设置创build一个额外的存储库,并将文件/文件夹符号链接到您的项目。

有关详情,请参阅我在另一个主题上的回答