2013-10-22 40 views
2

我已經通過Gitolite管理Git回購,其中有約40個開發者和35,0000個文件。我們只是從CVS轉換而來,所以很多人都在努力適應差異。我可以編寫一個服務器鉤子來警告包含Git衝突標記的文件嗎?

一旦這樣的問題是我們的用戶使用Eclipse和EGit的工作。在CVS中,所有合併都是通過Team Sync進行的,衝突通過3路diff工具解決。在EGit中,合併衝突使用標記進行裝飾,因此開發人員可能會忘記這些標記,或者假設它們以某種方式被移除。並非所有這些問題都會顯示爲編譯錯誤,因爲衝突可能在批處理文件或配置文件中。

更多使用該工具的經驗可能會解決大部分這些問題,但我想爲Gitolite添加一個鉤子,該鉤子檢查任何以.開頭的任何推送的.java,.bat,.xml或.properties文件, =======>>>>>>>後跟任何其他字符,並向用戶添加一條警告消息,突出顯示問題及其所在的文件。

這樣,我希望他們能夠抓住錯誤,立即糾正錯誤並從錯誤中吸取教訓。另一種可能的方法是浪費時間,想知道爲什麼有些代碼無法正常運行。

我假設正則表達式很容易,例如, ^>>>>>>>[^>]。所以更重要的是Gitolite是否允許這樣做以及測試和生成這樣的腳本所需的努力?有沒有人有我可以適應這樣做的示例腳本?

我只會暫時警告用戶,但我想打開一個開關,然後徹底拒絕提交。

回答

1

所有你需要做的就是定義一個VREF (which is like a plain update hook)

還可以再敷一個回購協議中像任何其他R/W gitolite規則這VREF規則(曼寧,你可以只對某些人/分公司/文件夾/文件應用此規則)

您可以輕鬆地解析內容文件的推,就像this hook

#!/bin/bash 

while read old_sha1 new_sha1 refname; do 
    echo "ns: " $new_sha1; 
    echo "os: " $old_sha1; 

    echo "----" 

    git ls-tree -r $new_sha1 | cut -f 3 -d ' ' | cut -f 1 | while read file; do 
     git cat-file blob $file 
     # do your grep here 
    done; 


done 
+0

這應該是默認包括在內。 – sjas

相關問題