其他分享
首页 > 其他分享> > Ye使用HG相关笔记

Ye使用HG相关笔记

作者:互联网

目录

Ye使用HG相关笔记

TortoiseHg

扩展相关

碰到的错误列表

AttributeError: 'NoneType' object has no attribute 'configbool'

错误详情

Traceback (most recent call last):
  File "thg", line 99, in <module>
  File "tortoisehg\hgqt\run.pyo", line 88, in run
  File "tortoisehg\hgqt\run.pyo", line 146, in dispatch
AttributeError: 'NoneType' object has no attribute 'configbool'	

解决方案

  1. 使用命令执行hg debuginstall -T'{pythonexe}'

    config error at C:\Users\AsionTang\mercurial.ini:7: mercurial_keyring

  2. 原来是mercurial_keyring 少了一个=

    修改前

    [extensions]
    mercurial_keyring
    

    修复后

    [extensions]
    mercurial_keyring = 
    
  3. 再执行命令hg debuginstall -T'{pythonexe}' 就一切正常了.

mercurial_keyring

缘由

最新版本tortoisehg-5.8.1-x64集成打包的对应版本太老了.可能不兼容HG-GIT

主页

mercurial / mercurial_keyring · GitLab

使用源码最新版本配置步骤

  1. 从主页下载最新源码包

  2. 解压到以下目录D:\Program Files\TortoiseHg.Ext\mercurial_keyring

  3. 然后打开TortoiseHg的全局设置增加以下配置

    [extensions]
    mercurial_keyring = D:\Program Files\TortoiseHg.Ext\mercurial_keyring\mercurial_keyring.py
    
  4. 直接运行会提示报错:

    *** 加载扩展 'mercurial_keyring',自 'D:\Program Files\TortoiseHg.Ext\mercurial_keyring\mercurial_keyring.py': Can not import mercurial_extension_utils.
    
  5. 再去 mercurial / mercurial-extension_utils · GitLab 下载Zip包

  6. 将包里的2个文件解压到``

    • "D:\Program Files\TortoiseHg.Ext\mercurial_keyring\mercurial_extension_utils_loader.py"
    • "D:\Program Files\TortoiseHg.Ext\mercurial_keyring\mercurial_extension_utils.py"
  7. 理论上有以下2个文件就OK了

    "D:\Program Files\TortoiseHg.Ext\mercurial_keyring\mercurial_keyring.py"
    "D:\Program Files\TortoiseHg.Ext\mercurial_keyring\mercurial_extension_utils.py"

hg-git

缘由

主页

使用源码最新版本配置步骤

  1. 从主页下载0.10.x源码包 Files · branch/0.10.x · mercurial / hg-git · GitLab

  2. 解压到以下目录[D:\Program Files\TortoiseHg.Ext\hg-git](D:\Program Files\TortoiseHg.Ext\hg-git)

  3. 然后打开TortoiseHg的全局设置增加以下配置

    [extensions]
    hggit = D:\Program Files\TortoiseHg.Ext\hg-git\hggit
    
  4. 在绑定有Git远程仓库地址的仓库执行下拉报错

    *** 加载扩展 'hggit' 失败: No module named hggit

    经过多次设置后总结的经验就是保存后, hggit后面的自定义路径就消失了. 可能是新版本的BUG导致的.

  5. 然后修改TortoiseHg的全局设置以下配置

    [extensions]
    hggit2 = D:\Program Files\TortoiseHg.Ext\hg-git\hggit
    
  6. 然后执行后又报错:当** Unknown exception encountered with possibly-broken third-party extension "mercurial_keyring" (version N/A)

    需要将设置里的配置注释掉后, 再运行

    [extensions]

    mercurial_keyring = ...

  7. 设置里的配置注释掉后,然后执行后又报错:

    *** 加载扩展 'hggit2',自 'D:\Program Files\TortoiseHg.Ext\hg-git\hggit': future feature generator_stop is not defined (init.py, line 140)

  8. 返回第1步下载0.10.x低版本即可

  9. 重新运行后报错

    *** 加载扩展 'hggit2',自 'D:\Program Files\TortoiseHg.Ext\hg-git\hggit': No module named dulwich

  10. 查找对应的依赖版本: setup.py · branch/0.10.x · mercurial / hg-git · GitLab

        install_requires=[
            'dulwich>=0.19.0;python_version>="3.0"',
            'dulwich>=0.19.0,<0.20.0;python_version<"3.0"',
        ],
    
  11. 下载对应版本的 Dulwich

> Versions of Dulwich prior to 0.20 also supported Python 2.7. Supported platforms include Linux, Mac OS X and Windows.
>
> - Git repository: https://www.dulwich.io/code/dulwich ([github](https://github.com/dulwich/dulwich))
>
> - [Release 0.19.7 · dulwich/dulwich](https://github.com/dulwich/dulwich/releases/tag/dulwich-0.19.7) 
>
>   > 发布了这个 2018 年 11 月 6 日 · 自本次发布以来,[ 591 次提交](https://github.com/dulwich/dulwich/compare/dulwich-0.19.7...master)给 master
  1. 将压缩包里的文件夹dulwich-dulwich-0.19.7.zip\dulwich-dulwich-0.19.7\dulwich解压后

  2. 放入 D:\Program Files\TortoiseHg\lib\library.zip\dulwich压缩包里

    放在根目录或子目录都无法识别.

    只有放这个压缩包里才算正常.

  3. 在绑定有Git远程仓库地址的仓库执行下拉 一切正常 除了闪退

    让查看日志:"D:\Program Files\TortoiseHg\thgw.exe.log"然后直接这个程序闪退了

    zipimport.ZipImportError: bad local file header: D:\Program Files\TortoiseHg\lib\library.zip

  4. 通过thg.exe启动程序居然闪退! 一切正常且没有命令行窗口!

    thgw.exe程序启动就会闪退!这个是Windows GUI版本

    而且后续启动都不再输出错误信息到thgw.exe.log了, 并且闪退后 其进程居然没有退出还有残留thgw.exe

    thg.exe 这个是Windows console版本

    • thg.exe 修改为thgw.exe 后居然也无法正常运行! 奇怪啊!
    • library.zip包还原为原来的包,再运行thgw.exe居然还是闪退! 奇怪啊!
    • 将全局配置里的hggit2注释掉,再运行thgw.exe居然还是闪退! 奇怪啊!

将"扩展"最新代码统一集成到library.zip的方案

优点:

效果

  1. 修改前: 是通过外部文件夹直接指定目录的方式来配置扩展

    [extensions]
    mercurial_keyring = D:\Program Files\TortoiseHg.Ext\mercurial_keyring\mercurial_keyring.py
    hggit2 = D:\Program Files\TortoiseHg.Ext\hg-git\hggit
    
  2. 修改为: 统一集成后的配置效果

    [extensions]
    mercurial_keyring = 
    hggit = 
    

集成步骤

  1. 在通过指定外部文件夹路径能正常生效的基础上

  2. 将"HG-Git最新扩展源码包里的所有*.pyo文件"放入指定路径即可library.zip\hgext\hggit

  3. 覆盖同名文件 library.zip\hgext\mercurial_keyring.pyolibrary.zip\hgext\mercurial_extension_utils.pyo即可

  4. 如何得到*.pyo文件?

    • 正常 通过指定外部文件夹路径 运行过1次, 就会在 .py 源码 同级目录生成同名的 .pyo 文件.
    • 或者直接使用python -o命令来手动生成应该也是可以的.

标签:TortoiseHg,mercurial,keyring,笔记,hg,https,net,Ye,HG
来源: https://www.cnblogs.com/AsionTang/p/15095420.html