git 在 clone 時遇到 server certificate verification failed ,解決方法有三種:
- 不要自己簽發 SSL 憑證,花錢。
- git config –global http.sslverify false
- export GIT_SSL_NO_VERIFY=1
Just thinking more…
git 在 clone 時遇到 server certificate verification failed ,解決方法有三種:
從 Git – Git 与 Subversion 整理出來的步驟,Git 本身就有可以從 Subversion 簽出程式的功能:git-svn,應用 git-svn 就可以成功的搬家:
這兩者是由同一個開發者建立的,兩者可以結合。主要設定有兩個:
在建立專案的時候,要依照下面步驟:
這樣做之後,在 gitlab 點選 Issues 時,畫面會帶到 Redmine 去,而在 Redmine 專案的儲存機制頁籤也可以存取到跟 gitlab 的 repository,也不需要利用 git hook 機制來做同步了。
使用者帳號同步的部份應該是可以用 LDAP 來達成,這部份還要試驗看看。
git 沒辦法加空目錄,沒有任何選項可以用。Stackoverflow (How do I add an empty directory to a Git repository? – Stack Overflow) 上提到的變通方法就是為這些空目錄添加一個空白的檔案,檔名看是要用 .gitignore 或是 README 之類的就可以。
那要找所有空目錄的話,該怎麼找?find 就可以做到這點 (參考 bash – finding empty directories unix – Stack Overflow) :
find . -type d -empty -print
那麼,要為每個空目錄加上空白檔案的話,再利用 -exec 參數就可以了:
find . -type d -empty -exec touch {}/README \;
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 上。
同事都用 gedit ,只有我是用 vim。vim 有個 vim-gitgutter 的 plugin,可以直接顯示你目前的 code 跟 git repository 裡的 code 之間的差異點,用 ]h 或 [h 就可以快速搜尋,我想 gedit 應該也有。找了一下,就找到這個 gedit-git-plugin 。
安裝這個 plugin 相當簡單,依照說明去做,很快就可以裝好,但是安裝他背後所依賴的 library 就稍嫌麻煩了。他所需要的 library 有 libgit2, libgit2-glib。libgit2 有人已經包好在 ppa,只要 sudo add-apt-repository ppa:pressureman/ppa 再 sudo apt-get update && sudo apt-get install libgit2 即可。libgit2-glib 沒有人包,只能自己包,於是就又重練了一次打包 debian packages,真的太久沒包會忘記。大致列一下步驟,下次可以快速的回憶起來。
override_dh_install: $(MAKE) DESTDIR=$(PWD)/debian/tmp install
想調整 configure,就用
override_dh_auto_configure: dh_auto_configure -- --enable-python=yes
想忽略自動測試,就用
override_dh_auto_test-indep:
這樣子,這也是手冊上建議的作法。
建立完之後,把該裝的都裝好,發現 gedit plugin 還是不能用,說找不到 python3。
結論是,這是一篇用來回憶打包 debian package 的文。
參考資料: