• idea favorites bookmarks标签收藏夹数据丢失bug


    idea bookmarks标记代码很方便下次能够快速调转到标记点,如图

    !但是有一个严重的bug,在多模块git切换分支会触发该bug,当然可能设计上就不是为了多模块多分支设计的。

    直接看解决方式直接跳转到:最终解决办法 

    复现场景:

    1:将my-common简写叫模块1,将sweet-util简写叫模块2 

    2.1:模块1和模块2都创建新的分支“aaa”,然后都切换回master。

    2.2:模块2随意标记一处bookmarks并命名为“master分支”

    2.3:模块2切换到aaa分支,随意标记一处bookmarks并命名为“aaa分支”,然后模块1也切换到aaa分支。

    2.4:后面的不太记得了,大概就是切换后并随意标记分支,最后会发现原来的标记被覆盖了。

    原因:

    标记bookmarks时,bookmarks数据存储在两处:

      1处:所有分支bookmarks存储位置:tasks目录(所有工作空间、分支的bookmarks存放位置): C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2021.1\tasks  对应工作空间的.contexts.zip包,zip内的文件以分支名命名的(最终导致被覆盖的原因就是这里,在多个模块下存在相同分支在切换分支标记时会导致覆盖)

      2处:当前工作空间bookmarks存储位置:workspace目录(该目录的数据由tasks目录加载过来的):C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2021.1\workspace,当tasks目录数据被覆盖,则这个目录的数据也会错乱。

      补充说明:

      当标记bookmarks时,数据会临时存储在idea内存,触发刷入硬盘条件:

        1:切换模块分支时:

           1.1:idea内存数据更新到“C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2021.1\tasks”目录下的zip包

           1.2:将tasks的zip包中对应“分支的配置”加载到idea内存中。

        2:关闭idea时:触发idea内存数据更新到“C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2021.1\workspace”目录

    梳理:

      不知道idea官方是否知道该bug的存在,在使用过程中极度影响了使用,目前找过其他的一些代替插件,比如:“code notes”、“code remark(也有标签丢失情况)”,但是使用上原生的还是最便捷的。

    初步尝试办法(经过多次测试得出“最终解决办法”,看下面):

      1:将“C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2021.1\tasks”和“C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2021.1\workspace”做数据备份,比如上传到github、gitee等,方便回滚(可以只对workspace文件夹做备份,该文件夹是记录当前工作空间标签数据,占用内存较小

      2:只在某一个分支上做标记,切换分支后不允许做标记,以防止被覆盖,所有模块切换回原来分支后再做标记。

     

    最终解决办法:

    1:删除“C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdeaxxxxxx\tasks”目录,并新建“tasks”文件,并设置访问权限全部拒绝(目的是为了禁用tasks目录),如下图所示。(如需恢复可用其他安全软件粉碎tasks重建目录

    2:定期备份diea配置(经过测试,第一步解决了多模块多分支切换后导致的书签问题,但仍然存在书签丢失被清空的bug,暂未查明原因,所以最好备份下配置,以便还原丢失的书签)

    将“C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdeaxxxxxx\workspace”文件夹上传到自己远程仓库。

    (关闭idea后,只提交本地git,没必要每次保存到服务器。还可以设置windows自带的计划任务,定期每天执行cmd命令自动备份配置。)

     git提交命令,可以制作成一个cmd、bat文件。

    set work_path=%~dp0
    
    cd /d %work_path%
    
    git commit -a -m '提交配置'
    
    echo 执行完毕
    pause

    备份效果图:

    备份方法:

      1:在远程仓库建一个项目,项目名随意,然后checkout到本地

      2:将本地checkout下来的目录更名为workspace,并替换掉idea原来的workspace。workspace文件复制过来。

  • 相关阅读:
    <转>iOS SDK中使用NSXMLParser解析XML
    [原创]闲来无事,写了个c#的数据库附加工具,现附上源代码
    [转载]php数组操作foreach、each、reset、list
    [原创]xml序列化
    [原创]一个简单的药店用的会员积分管理系统
    [原创]我的cms项目
    简洁、标准的对联广告代码
    C#混淆 xenocode使用说明
    .net 随机数
    [原创]c# as用法
  • 原文地址:https://www.cnblogs.com/wulm/p/15604625.html
Copyright © 2020-2023  润新知