我在abas-ERP的環境中工作,它使用 - 由於歷史原因 - 一個名爲abas-s3的深奧字符集。我們將Git與ERP服務器上的本地存儲庫一起使用來版本化我們的程序。Git - 支持異國情調的字符集
當然,Git不支持abas-s3。在erp服務器上有一個名爲s3_conv的程序,它從abas-s3轉換到外部世界(例如UTF-8和UTF-16),反之亦然。
有沒有什麼方法可以使用這個程序,使用UTF-8作爲存儲庫,使用s3作爲工作樹?
我很欣賞任何反饋!提前致謝!
我在abas-ERP的環境中工作,它使用 - 由於歷史原因 - 一個名爲abas-s3的深奧字符集。我們將Git與ERP服務器上的本地存儲庫一起使用來版本化我們的程序。Git - 支持異國情調的字符集
當然,Git不支持abas-s3。在erp服務器上有一個名爲s3_conv的程序,它從abas-s3轉換到外部世界(例如UTF-8和UTF-16),反之亦然。
有沒有什麼方法可以使用這個程序,使用UTF-8作爲存儲庫,使用s3作爲工作樹?
我很欣賞任何反饋!提前致謝!
如果問題是文件內容,您可以使用清潔/塗抹過濾器(見gitattributes)來讓Git存儲到存儲庫時轉換爲UTF-8,並檢查出的內容時,ABAS-S3進入工作區。
你也可以在Pro Git書中找到解釋。
總結:
需要在配置文件定義(每庫,每個用戶,或系統範圍)一個濾波器由兩個命令: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
宣告以gitattributes文件(內部資料庫,或者每個庫,或每用戶或全系統)應使用此操作轉換哪些文件。假設你想要轉換與SQL文件,使用*.sql
擴展,文件的相應片段看起來是這樣的(注意,不能有空格周圍=
這裏):
*.sql filter=s3conv
注意,Git是編碼不可知的,你不需要轉換文件的內容...除非你需要它的互操作性?
如果您需要正確有git diff
顯示變化(假設你沒有呼機,可以顯示阿巴斯-S3編碼的,且可以core.pager
使用),你可能需要配置textconv
過濾INSTEAD:
在配置文件中:
[diff "s3conv"]
textconv = s3_conv --from abas-s3 --to utf-8
這假定終端和尋呼機被配置成顯示UTF-8
在gitattributes文件:
*.sql diff=s3conv
感謝您的回答和對不起,我的延遲的響應。我會在星期一嘗試一下,並讓你知道結果! – 2015-02-07 12:12:07
這正是我正在尋找的。謝謝一堆! – 2015-02-10 07:25:34