2013-11-01 57 views
1

我有一個問題,即我們供應源到必須安裝在源文件中客戶特定的法律意見報頭信息與客戶端使用的$ id和$格式(?)中的git的差異被忽略的文本幾個不同的版本取決於頭部的上源文件它們(即:開發商指定的類別)如何在源代碼的分發

所以,我要的是指定像$Id$$SpecialName$一個字符串來定義什麼頭被插入,這將是一種能力由代碼分佈版本(使zip或jar文件)擴展爲

$SpecialName: lots of customer specific stuff like a big header of copyright, legal, and 
other info 
blah blah blah $ 

然後,如果他們修改或修補的東西在文件中,並將其發送回來我要檢查將更改Git和有它忽略了構建之間的一切擴展"$SpecialName:"和下一個「$」的方式$Id$可以進行檢查,當工作東西在。

我看到在this question的引用,但沒有找到它是什麼的引用,以及它是否是我正在尋找或不。

理想的情況下,我可以指定參考庫服務器「只讀」的字符串,並將它傳播到所有用戶,當他們拉的變化,但是從實現它至上的功能一個單獨的問題。


它看起來像一個方法是使用「濾鏡」 - 從混帳書:

然而,這一結果存在一定的侷限性。如果你使用關鍵字在CVS或顛覆 替代,可以包括郵戳 - 的 SHA是不是所有的幫助,因爲它是相當隨機的,你不能 告訴我們,如果一個SHA比另一箇舊或新。

事實證明,你可以寫自己的過濾器對文件做 換人上提交/結帳。這些是「乾淨的」和 「污跡」過濾器。在.gitattributes文件,你可以設置一個過濾器 特定的路徑,然後設置腳本,將處理文件只是 他們承諾之前(「乾淨」,見圖7.2),只是 之前,他們檢查了( 「污跡」,見圖7.3)。這些過濾器可以設置爲 做各種有趣的事情。

此相關的是這將是適當做這個資源庫服務器上,而不是在客戶端上 - 是「文件」數據的處理預提交和預結算可能在信息服務器上?

+0

在git中,所有機器都有一個存儲庫,所以任何機器原則上都可以作爲存儲庫服務器。 –

+0

正確 - 但希望有一個新的克隆或從服務器(對等),被認爲是「權威」的拉,擁有一切「預配置」,所以沒有額外的行動檢索對方的一部分是需要有東西的工作如預期的。是的,這是將這個「一鍵無縫」和安全性之間的衝突,因爲你不希望它很容易推動自動執行活動代碼,如同伴掛鉤或不安全地返回給其他人。所以唯一的辦法似乎是建立一套分開維護和分發的腳本。 – peterk

+0

這樣做使得「保持同步」過程更加複雜一些,並且使得與使用IDE中的集成git插件不兼容的協議保持一致,而這通常並不是足夠可編程的。 – peterk

回答

0

傳統的做法是讓版本控制系統進行這種擴展。但是這對你來說並不是必須的,因爲你只需要它出現在客戶端機器上。

您只需在源代碼分發構建過程中使用某種模板工具。在大多數情況下,如果發送補丁程序,使其無視頭文件是不必要的,因爲補丁程序無論如何都應該適用,只需使用一些模糊程序即可,不會妨礙它自動應用。

+0

這更像是如果我將整個文件恢復並只是想在不進行預處理的情況下提交它。想知道是否有任何方法來標記源文件中的塊被git忽略$ Id $似乎是,因此可以使用,並想知道是否有一個機制,其中$ ArbiraryWord $或$ PredefinedWord $也是可能的。 當然可以看中並在服務器上放置一個預處理鉤子,根據哪個分支被檢出可以選擇該分支集合,這將使客戶能夠實時訪問存儲庫等等,但是...... – peterk

+0

如果你得到一個文件,你可以從它生成一個補丁,通過對分佈式源做一個簡單的'diff'(而不是'git diff')。 –

+0

是的 - 但你不能只是解壓縮500個文件到文件夾,然後把它提交給客戶的分支,這是通過自動化完成的:)我真正要求的是幫助理解git工具集的處理能力源文件,所以我可以使用它的任何數量的潛在的東西。 – peterk