折腾的DVCS
svn,git,TortoiseHg,Mercurial, windows, utf8
已经用了很长一段时间的svn,整体来讲的很顺利,突然想用用dvcs,折腾了2天,感叹dvcs在于折腾
整体环境,windows xp/7 +S2008,原来一直用svn(visual svn server + tortoiseSVN),几个项目,也有千余个commit
dvcs中选中了msysgit(git的windows版,名气大),TortosieGit, TortoiseHg(其实本来是个误会)
插曲:一直在看git相关的内容,但却在开始把TortoiseHg误认为是git的GUI客户端。
这里使用的软件版本分别是 msysGit 1.7.10, TortoiseHg 2.4.1
安装:
TortoiseHg:简单,基本安装完成后就可以使用,
TortoiseGit:只是一个GUI,还要msysGit才能用,而且和TortoiseSVN有些冲突,导致另外一个图标不能用,设置一个,影响两个
msysGit:本身就带一个简单的GUI,但大部分都是功过bash完成
基本使用:新建,提交等等
都是基本可以的。
从svn迁移:
TortoiseHg:可以启用用convert插件,可以顺利迁出,中文显示也正确,不过有个小小的不同,svn中333次历史记录,但hg中只有284次。
TortoiseGit:从svn服务器始终不能完整导入,并且由于和tortoisesvn的相互干扰,卸载了。
msysGit:结合网上的教程,直接用bash进行导入clone。
一直有个问题,就是第一次只能clone部分历史,少则3、5个,多则18、9个,然后用fetch,则基本每次1-3个,整个过程不报错。
这要到后年马月才能弄好,只好google
先是看到了 《 git svn ambiguous argument 'HEAD' 》 其中提到了clone不完整,fetch只能1次1个的问题,但没给出解决方法
然后是 《GIT-SVN clone command executes without errors but the local master branch is missing 》 这里提到了不报错停止的现象,并且给出了解决办法
就是放弃http(s)://,而改用svn://,事实证明这个是正确的。直接原因是“未知原因导致https链接断开”
另外不要想这用本地路径的方式file://或者D:/之类的,下面的文章会告诉你的,此路不通。
UTF8中文支持:
TortoiseHg: clone时遇到中文文件名的内容(更准确的说是部分中文,因为有的中文文件能通过,有些不能,而且和svn转换有关),停止工作;
另外,kdiff3似乎也对中文不友好,会乱码,
但是,添加中文名字的文件,可以正常保存,可以显示
提交中文注释也能(至少在本地机器上可以)
msysGit:也好不到哪里去,由于1.7.10已经支持utf8了,所以clone是可以的通过,但还是有不少问题,
比如clone的存放的目录不能为中文;bash能显示,但不能输入,gui能显示或部分显示,能输入,但还是不能使用(毕竟还要靠具体bash)
这个是最大的软肋。
另外。git-gui在clone 时,目标目录必须不能存在,否则不让clone。
跨平台:听说
TortoiseHg:用qt+ python 良好
msysGit:或者Git,可以跨,但似乎对windows还是不太友好,听说linux上工作不错。
总结:
新项目可以考虑Git或者Hg,老项目还是算了吧。除非你感觉特别需要。
你的项目要中文或者其他多语言环境么,对这个不敏感的可以考虑Git或者Hg,敏感的还是算了吧,或者你自己想办法。