2015-07-06 121 views
1

我正在處理大型項目,並且settings.php文件位於存儲庫中。我需要在本地覆蓋用戶名和密碼,因爲我的詳細信息不同。我不想影響主settings.php文件,因爲這是由其他開發人員使用。這可以做到嗎?如果我可以創建一個新文件,那麼我可以用GIT在本地忽略它,這意味着它不會影響存儲庫。本地覆蓋Drupal的settings.php?

+1

這是一項常見任務。退房:http://drupal.stackexchange.com/a/41/7009 – Screenack

+0

這不是一個不錯的解決方案。我希望不必編輯主要的回購庫中的任何東西,這個解決方案需要編輯settings.php,但它可能是可以接受的,如果它是唯一的方法來做到這一點。 – Evans

+2

FWIW,Drupal的8採用settings.local.php風格:https://www.drupal.org/node/1118520認爲這是「面向未來的」工作流程。 ;) – Screenack

回答

0

您可以在許多不同的方式做到這一點:

  1. 使只讀在你的開發環境中的文件。這使得您可以將本地文件設置爲任何內容,而不會被版本控制中的同步覆蓋。不過,您需要手動排除每次提交時的文件。

  2. 排除在版本控制的文件。如果您需要將設置提供給其他開發人員,則可以創建一個名爲settings.base.php的單獨文件,以便他們可以使用該文件創建自己的本地設置。

  3. 我的選擇是使它這樣的設置是通用的。顯然,擁有相同用戶名和密碼的資源並不是問題,您可能遇到的問題是主機。您可以讓每個開發人員/服務器覆蓋它的主機映射到您希望它指向的實際服務器。在Linux中,它是/ etc/hosts,在Windows中是/ windows/system32/drivers/etc/hosts。

爲#3例主機設置:

開發機

127.0.0.1 databaseserver.com 

暫存計算機

192.168.1.100 databaseserver.com 

生產機器可能就不需要重映射。除非您從未擁有數據庫的主機名,在這種情況下,您將創建一些構成主機名(如my.database.srv),然後將其設置爲生產。

有一兩件事是很方便的對所有上述情況,尤其是3號,就在於它是一個獨立於平臺的解決方案,所以你可以做到這一點對任何類型的項目(不只是Drupal的)。

0

您可以添加到您的settings.php文件的底部:

/** 
* settings file for local development only. 
* 
* This file should NEVER be committed to version control and should never exist 
* on a non-local development machine. 
*/ 
if (file_exists('./' . conf_path() . '/settings.local.php')) { 
    require './' . conf_path() . '/settings.local.php'; 
} 

然後就去做喜歡你建議和settings.local.php添加到您的.gitignore文件。

發表Screenack鏈接應該是你所需要的。