2011-06-14 95 views
5

假設我有一個位於公共開放源代碼回購和私人開發回購的項目。發展回購的一些文件將包括像數據庫密碼的東西,並且我不想公開。在兩個遙控器之間共享安全文件的最佳方式是什麼?我在想某種只適用於公共回購的.gitignore文件,這可能嗎?如果沒有,還有其他建議嗎?選擇性的git忽略遠程?

+0

這通常使用過濾器驅動程序來處理,如http://stackoverflow.com/questions/3318043/mark-a-file-in-the-git-repo-as-temporarily_ignored/3318202#3318202 – VonC 2011-06-14 04:53:06

回答

-1

請勿將密碼放在源代碼管理期間。他們到處只是.gitignore;通過其他方式分發私人密碼文件。

(沒有,沒有隻在某些倉庫忽略文件的方式。)

+0

這沒有幫助。我們需要在repo中部署配置,以便我們可以根據需要更改它們,並且每個人都會知道,而且我們的生產環境也是基於git的,因此需要部署的所有文件都需要在私人倉庫中提供。沒有理由這樣的私人數據不應該在私人信息源控制。 – 2011-06-14 04:31:21

+0

@Stephen:問題在於,由於Git的運作方式,如果您甚至更改了單個文件,您將擁有完全不同的提交散列集合,從而形成完全不同的歷史記錄。 Git不會在歷史級別上區分公共存儲庫和私人存儲庫。 – Amber 2011-06-14 04:33:57

+0

@Stephen:你可以做的是保持一個單獨的分支,它有一個提交添加到你的私人文件中,並且永遠不會將該分支發佈到公共存儲庫。當更新開源部分時,您可以將其合併到'私人'分支中,私有文件將被保留。 – Amber 2011-06-14 04:34:51

3

可能把更多的敏感文件在不同的回購,在回購原其子模塊,讓您只私人開發商訪問私人回購。

0

如果確實存在文件,爲了安全起見,這些文件不應泄露給公衆,請勿將它們放入存儲庫或使用密碼加密文件!

最好的是,當你把非共享文件在一個單獨的存儲庫可以住私人開發版本中:

BASE_DIR/.git 
BASE_DIR/private/.git 

這裏BASE_DIR包含了所有公共文件。 BASE_DIR/private包含私有文件。

當你剛剛發佈的數據,而不是存儲庫(及其所有歷史記錄),你可以簡單地

git --work-tree=PATH_TO_THE_PUBLIC checkout HEAD -- . 

在新版本到來。