Kirjaudu
Google-sovellukset
Päävalikko
張貼意見於:
Thinking more...
"Fork gedit-git-plugin"
尚未有任何意見。 -
1 – 0 (共 0 個)
gedit-git-plugin 這個 plugin 不錯,就類似 vim-gitgutter 的功能,但是它用的是 libgit2-glib,這個還真麻煩,所以就 fork 出來改,看可不可以擺脫 libgit2-glib。
為此,我先讀了 vim-gitgutter 的程式,vim-gitgutter 主要是在 GitGutter 函式裡,這邊會先去 git diff,然後解析結果,再去作畫面的處理,gedit-git-plugin 也很類似。
程 式主要是在 viewactivatable.py ,在啟用 plugin 的時候,會觸發 do_activate(),這時會去繫結相關的事件到程式裡。主要的處理在 update_location(),這裡就調用 libgit2-glib 函式庫去取得 git repository,然後再取得當前檔案的 blob ,最後再去呼叫 update();update() 是在做檔案比對,根據比對結果去顯示,這裡的比對用的是 python 內建的 difflib,而不是用 git diff 的結果。
分析完,大致知道要處理的部份就在 update_location(),只要這裡將使用 libgit2-glib 改為用 subprocess 呼叫 git 取得結果就可以了。第一個要做的事情是取得當前檔案的位置,這個只要套原來的程式,呼叫 self.location.get_path() 就可以。接著要去找 .git 資料夾,這邊我參考了 repo 裡找 .repo 的函式去找 .git 。基於以上兩者,可以取得相對於 .git 所在路徑的檔案路徑,也就是假設 .git 是在 /home/user/project1/.git ,編輯的是 /home/user/project1/dir1/readme,就可以得出 dir1/readme,接著只要用 git show HEAD:dir1/readme 就可以取得原始 blob 內容。依照原來程式的邏輯,把原始 blob 內容替換為 git show 程式的輸出之後,就可以擺脫 libgit2-glib 了!
最後,將 git.plugin 裡的 Loader=python3 改為 python ,再更新 README 並補上 setup.py 就收工了。現在就不用 libgit2-glib 啦~
我 fork 出來的專案放在 github 上。
由 elleryq 在 2013年9月26日 的
下午3:31
所張貼
留下您的意見
您可以使用一些 HTML 標記,例如
<b>, <i>, <a>
已啟用留言管理。所有留言都必須經過網誌作者核准。
請選擇一個身分
Google 帳戶
提交意見後,系統會要求您登入。
名稱 / 網址
使用你的 Google 帳戶留言,日後你才能管理自己的留言。如果選擇匿名留言,則無法編輯或刪除你的留言。
瞭解詳情
名稱
網址
匿名
使用你的 Google 帳戶留言,日後你才能管理自己的留言。如果選擇匿名留言,則無法編輯或刪除你的留言。
瞭解詳情
請回答人機驗證問題
"Fork gedit-git-plugin"
尚未有任何意見。 -