关于4.7 Merge中断后Update报错
前两天为了做Merge转换,把TortoiseHg升级到了4.7,然后发现Merge一半没commit之前,如果试图直接Update来丢弃会报错
#!python ** Mercurial version (4.7). TortoiseHg version (4.7) ** Command: --nofork workbench ** CWD: xxxxx ** Encoding: cp936 ** Extensions loaded: tortoisehg.util.configitems ** Python version: 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] ** Windows version: sys.getwindowsversion(major=6, minor=2, build=9200, platform=2, service_pack='') ** Processor architecture: x64 ** Qt-5.9.2 PyQt-5.9.1 QScintilla-2.10.2.dev1711012104 Traceback (most recent call last): File "tortoisehg\hgqt\repowidget.pyo", line 1698, in updateToRevision File "tortoisehg\hgqt\update.pyo", line 408, in __init__ File "tortoisehg\hgqt\update.pyo", line 150, in __init__ File "tortoisehg\hgqt\update.pyo", line 183, in update_info File "tortoisehg\hgqt\csinfo.pyo", line 528, in update File "tortoisehg\hgqt\csinfo.pyo", line 381, in get_markup File "tortoisehg\hgqt\csinfo.pyo", line 330, in get_markup File "tortoisehg\hgqt\csinfo.pyo", line 268, in get_data File "tortoisehg\hgqt\csinfo.pyo", line 200, in preset_func AttributeError: 'changectx' object has no attribute 'thgtags'
就没法继续下去了
google搜索了下,貌似的确TortoiseHg的Bug,已经改好了,可惜还没release:
https://bitbucket.org/tortoisehg/thg/issues/5157/updated-to-47-unable-to-update-branch
这个应该是比较新版本的bug,我更新前类似的操作做过很多次并没有遇到这个问题,所以回退TortoiseHg的版本也许也可行
我目前临时解决方案是:
右键点击当前分支的某个旧版本,点击回退(backout),然后在弹出的准备回退(Prepair to backout)确认框中,点击丢弃(discard),就可以返回一个干净的状态了,之后就可以Update了
记得丢弃操作完成后,不要点下一步,而要点取消。因为我们并不是真的想要回退,只是要这个界面里的丢弃。
按理直接用hg命令行操作或者重新安装TortoiseHg的某个旧的健康版本也能解决这个问题
关于Hg的行尾自动解决冲突
另外一个问题是,自从windows上把BC的注册码给Mac用,windows上只用WinMerge和kdiff以后,每次Merge的时候,经常会有行尾冲突
There is a line end style conflict
虽然之前都是手工指定一下行尾
类似这里提到的操作 https://stackoverflow.com/questions/27382944/kdiff3-there-is-a-line-end-style-conflict
但需要操作的Merge的文件一多,尤其Unity工程的meta文件几乎每个都要手动点一下就很麻烦
考虑使用eol插件,配置项目的.hg\hgrc文件,这样配置貌似基本能解决问题
[extensions]
eol=
[encode]
**=cleverencode:
[decode]
**=cleverdecode:
以前貌似这样做过一次,后面忘了为啥去掉了,刚刚发现貌似这样修改后,有时候revert一些行尾修改会不实际执行,还有待之后观察