1. 程式人生 > >svn指定檔案為binary(二進位制檔案)

svn指定檔案為binary(二進位制檔案)

總覽:

某些檔案例如plist檔案,伴隨資原始檔生成,自身不需要作為文字檔案管理。

問題描述:

假設有3個bug,均修改同一個資原始檔。版本號按照時間順序為p1 p2 p3。由於某些原因,需要p1 p3先進行線上更新,p2在後續版本的更新計劃中。這時通過svn merge合併檔案的時候plist檔案預設做為文字檔案處理,直接merge會導致p2中的修改不會被合進來, 資原始檔(png,jpg等)均是二進位制檔案處理,完全覆蓋。這樣導致plist與資原始檔不匹配。

解決方案:

如題:將plist設定為二進位制檔案處理。
svn檔案屬性svn:mime-type會標記檔案的處理方式。預設情況下svn會在檔案首次提交的時候判定,預設讀取前1024個位元組,如果是0或者超過一定比例的位元組為非ASIC碼,則會新增svn:mime-type=application/octet-stream,標記為二進位制檔案。被標記檔案無法做差異化處理,無法diff,merge,blame等操作。

具體實行:

實行方法A:
統一所以svn使用者對plist檔案的處理,開啟auto-props, 配置檔案新增 *.plist = svn:mime-type=application/octet-stream。
使用批量修改指令碼,修改所有plist檔案的svn:mime-type屬性

實行方法B:
在svn伺服器設定hock,當有plist檔案新增修改的時候,吊用修改指令碼,為檔案新增mime-type屬性