2015-02-06 18 views
3

我在abas-ERP的環境中工作,它使用 - 由於歷史原因 - 一個名爲abas-s3的深奧字符集。我們將Git與ERP服務器上的本地存儲庫一起使用來版本化我們的程序。Git - 支持異國情調的字符集

當然,Git不支持abas-s3。在erp服務器上有一個名爲s3_conv的程序,它從abas-s3轉換到外部世界(例如UTF-8和UTF-16),反之亦然。

有沒有什麼方法可以使用這個程序,使用UTF-8作爲存儲庫,使用s3作爲工作樹?

我很欣賞任何反饋!提前致謝!

回答

2

如果問題是文件內容,您可以使用清潔/塗抹過濾器(見gitattributes)來讓Git存儲到存儲庫時轉換爲UTF-8,並檢查出的內容時,ABAS-S3進入工作區。

你也可以在Pro Git書中找到解釋。


總結:

  1. 需要在配置文件定義(每庫,每個用戶,或系統範圍)一個濾波器由兩個命令:clean該變換從工作區域表示到存儲庫表示,以及反向工作的smudge。假設s3_conv作品像iconv,它看起來是這樣的(這是適當的配置文件的片段):

    [filter "s3conv"] 
        clean = s3_conv --from abas-s3 --to utf-8 
        smudge = s3_conv --from utf-8 --to abas-s3 
    
  2. 宣告以gitattributes文件(內部資料庫,或者每個庫,或每用戶或全系統)應使用此操作轉換哪些文件。假設你想要轉換與SQL文件,使用*.sql擴展,文件的相應片段看起來是這樣的(注意,不能有空格周圍=這裏):

    *.sql filter=s3conv 
    

注意,Git是編碼不可知的,你不需要轉換文件的內容...除非你需要它的互操作性?


如果您需要正確有git diff顯示變化(假設你沒有呼機,可以顯示阿巴斯-S3編碼的,且可以core.pager使用),你可能需要配置textconv過濾INSTEAD

  1. 在配置文件中:

    [diff "s3conv"] 
        textconv = s3_conv --from abas-s3 --to utf-8 
    

    這假定終端和尋呼機被配置成顯示UTF-8

  2. 在gitattributes文件:

    *.sql diff=s3conv 
    
+0

感謝您的回答和對不起,我的延遲的響應。我會在星期一嘗試一下,並讓你知道結果! – 2015-02-07 12:12:07

+0

這正是我正在尋找的。謝謝一堆! – 2015-02-10 07:25:34