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文件復制過來。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM