Windows下Git支持UTF-8文件名问题

Windows下的Git默认不支持中文文件名,由于字符编码问题导致。一个临时解决方案是通过网络共享,利用Samba进行UTF-8与Unicode的转换。用户可以使用Colinux挂载Windows共享目录,实现Git操作。然而,这种方法可能存在Samba的flush问题和其他兼容性挑战。

问题


如果搜索git 中文文件名,搜到大堆的配置选项指导,如ls显示中文文件名,comment/log支持中文,等等,都是linux下可用。Windows下mysGit目前还没有直接支持中文文件名的。见 http://code.google.com/p/msysgit/issues/detail?id=80 韩国人提交的utf-8文件名问题从2008年到现在都没有处理(当人也有中国人提过类似的问题,合并到这个最早的来了).

开发人员认为优先级低,关注的人不够,有人提交了补丁也没有人验证处理...可见这个项目还没有什么亚洲人(中日韩)参与。

 

原因


    原因还是字符编码的问题,git直接用UTF-8编码处理文件名,但是Windows是Unicode的,这个中间没有转换。见http://doyle.is-programmer.com/posts/10855.html

     

     

    暂时解决办法


    还没有人来直接解决的话,只有寻找“曲线救国”的方法,受这位哥们的提醒,通过网络共享解决: http://hi.baidu.com/likai3g/blog/item/cc2612c4e88473a28326ac69.html

    让samba之类的网络协议去转换,我用的是colinux。就像在linux下访问windows共享文件一样,没问题

    mount -t cifs -o username=xx,passord=yyy,iocharset=utf-8,uid=uuu,gid=uuu //server/share /mnt

    //server/share是windows的共享目录

    username/passord是访问共享目录的用户密码,是windows上的用户,不用在linux上建这个用户

    uid=,gid=是配置共享目录在linux上所属的用户和组,是linux系统用户,不用在samba配置用户。

    也就是说在这里不仅配置了字符集转换(linux的utf-8与unicode转换),而且配置了用户的转换,windows上//server/share共享给用户xxx,到linux上通过用户uuu可以访问/mnt

    见man mount.cifs的说明,这个iocharset专门用来处于与server的unicode路径名称转换的。 iocharset Charset used to convert local path names to and from Unicode. Unicode is used by default for network path names if the server supports it. If iocharset is not specified then the nls_default specified during the local client kernel build will be used. If server does not support Unicode, this parameter is unused.

    colinux的cofs还不支持charset转换,也有人提过问题,但没处理...

    通过samba共享的方式,已经可以用git svn来取svn的版本库了

     

     

    还有问题?


    可能有个问号出来了,都文件共享了,Git库建在linux上,再给Windows共享不就行了吗? 

    可能的一个原因是确实受不了svn的某些方面了,而且多数时候是在Windows下操作,操作版本库毕竟是少数,这时就不用一直开着linux了

    接着可能出现samba相关的一些flush相关问题,如 http://code.google.com/p/msysgit/issues/detail?id=130

    说明还是有不少人在用这个方式来在windows下尝试用Git,而且还有用git svn来在svn版本库下使用

    不知道这个方法能否解决所有类似问题,我是在尝试cofs的时候搜到这个 http://marc.info/?l=git&m=123797834905157&w=2
     时,core.fsyncobjectfiles = true 这个选项就配上了
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值