2011-01-31 62 views
3

我有這個文件。對於本示例中的文件夾y,我們假設x。我想在目錄中添加一個存根(P.S:我相信this github project確實是我想要的),但只有一次。在這個例子中,它看起來是這樣的:只在git存儲庫中包含一次文件

module.exports.id = ""; 
module.exports.secret = ""; 
module.exports.callback = ""; 

這些價值不應該被共享的,這就是爲什麼我只想把文件(存根/空)在倉庫裏的一次。

當我再次修改x時,不應將更改放在git存儲庫中,而只應在目錄y內。

我希望我有道理,這也不是一個重複的問題。如果是這種情況,我很想知道討論這個問題的stackoverflow主題,以便我可以關閉這個主題。

+0

你試過符號鏈接嗎? – Amber 2011-01-31 22:13:23

+0

何actually你的意思是?請你舉個例子。可以將它作爲答案發布? – Alfred 2011-01-31 22:15:07

回答

5

我解決這個問題的方式如下:我重命名文件xx-default並設置混帳忽略文件x(例如,由.gitignore在DIR y)。每個檢出回購的用戶都必須將簽出的文件x-default複製到x並設置其值。

這樣的優點,該文件x-default可以用新值沒有問題(未覆蓋用戶的配置)進行更新,並因爲x被忽略,用戶的價值沒有得到與其他用戶的回購同步(比如你想)。

你的程序應該檢查的x存在,如果不存在,給出一個提示x-default複製到x並配置它(或自動執行此操作)。


編輯

這工作,但我相信這是可以做到清潔。

取決於你想要什麼。您還可以在當地的回購使用:

git update-index --assume-unchanged x 

所以你提交的文件一次,然後在文件上運行的命令,如果你不希望進一步修改被提交。這裏的問題是,如果其他用戶想要像你一樣擁有它,其他用戶將不得不這樣做,否則他們的更改將被提交(並且將覆蓋您的或者將以合併衝突結束)。

要撤消此,只是去

git update-index --no-assume-unchanged x 

我不知道其他的解決方案,但也許其他人。


編輯

P.S:我相信這個github上項目實際上我想什麼呢,以

這更長得像我的第一個答案!他們有一個文件example_keys_file.js和文件.gitignore他們忽略keys_file.js

+0

這可行,但我相信它可以做得更乾淨。我更新我的問題,以顯示參考github爲什麼我打賭使用這個。也許我會通過發送電子郵件問他。 – Alfred 2011-01-31 22:24:59

2

這個問題的標準方法是:

  1. template.ext.in在你的倉庫
  2. 有你的makefile /腳本/手動template.ext.in複製到template.ext和修改值
  3. 添加template.ext到您的確保它永遠不會被提交。
相關問題