4

我想在多个地点工作——例如——一个网站。每台电脑都有自己的项目存储库(最好是 Mercurial,否则是 Git),但每台电脑都需要自己的配置设置来进行本地测试,比如 base_url。对包含全局配置设置的配置文件进行版本控制的最佳方法是什么?

存储库详细信息:

  1. 使用 config.php 在 BitBucket 上回购:全局配置 + 实时服务器配置
  2. 使用 config.php 回购 pc A:全局配置 + 特定于 pc A 的配置
  3. 使用 config.php 回购 pc B:全局配置 + 特定于 pc B 的配置

当我签出 BitBucket 存储库时,我得到了完整的实时服务器配置。如果我需要在本地进行调整和测试,我会将实时设置更改为 PC 特定设置。然后修复一个错误或其他什么,提交并推送到 BitBucket。此时,PC 特定设置将被推送到全局 BitBucket 存储库:这不是我想要的。

那么正确完成这项工作的最佳方法是什么?

4

3 回答 3

3

您需要的是一个涂抹清洁脚本,它可以根据您所在的机器更改配置。

https://git-scm.com/docs/gitattributes

https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#_keyword_expansion

如果您想在单独的分支中跟踪每台 PC 的配置,请对配置进行更改,然后将您的更改合并到您在公共遥控器中公开的分支中,但忽略您的更改

git merge --no-ff -s ours yourbranch

从现在开始,您可以从您的分支合并,但您的配置更改将永远不会被合并,因为它已经被认为已根据 DAG 合并。

希望这可以帮助。

于 2011-04-25T18:18:13.873 回答
1

我对 php 不是很熟悉,但我假设您可以拥有一个全局 config.php 文件,其中可能包含(需要?)config.<hostname>.php文件。这样所有的配置文件都将受到版本控制,但不会有冲突。PHP 应该有某种方法来确定当前机器的主机名,然后加载适当的配置文件。

生成的存储库布局可能如下所示

/
/config.php
/config.web_server.php
/config.pc_A.php
/config.pc_B.php
于 2011-04-25T17:15:54.563 回答
0

我会将 config.php 设计为透明的。存储库本身不必关心它在什么环境中运行。我不知道您需要更改什么才能在您的情况下启动并运行它,但也许将您的 config.php 中的功能提升到一些设置中,然后由 config.php 读取。

于 2011-04-25T17:16:21.913 回答