OpenProject與GIT整合
OpenProject能與GitHub、GitLab深度整合,當然也包含一般git server或local git。整合後,專案成員可看到所有檔案內容,我覺得有必要管控權限,畢竟有些人只要看到修改記錄即可,如PM。
既然我的目標只是想讓OpenProject能看到git的修改記錄,於是硬著頭皮改openproject程式,好險不難,硬生生讓我改成只能看到修改記錄。
詳請參考咖啡偶之書。
OpenProject能與GitHub、GitLab深度整合,當然也包含一般git server或local git。整合後,專案成員可看到所有檔案內容,我覺得有必要管控權限,畢竟有些人只要看到修改記錄即可,如PM。
既然我的目標只是想讓OpenProject能看到git的修改記錄,於是硬著頭皮改openproject程式,好險不難,硬生生讓我改成只能看到修改記錄。
詳請參考咖啡偶之書。
我在試用openproject的時候,官方提供的docker指令只能看出容器大版本,很難看出細一點的數字(openproject/community:13),於是我找到一個程式,後面接容器名稱,就能列出所有的版本。
https://github.com/axil/docker-registry-list/tree/master
python3 -m pip install requests
wget https://github.com/axil/docker-registry-list/raw/master/docker-registry-list.py
chmod +x docker-registry-list.py
./docker-registry-list.py <container image name>
公司有個RedHat 5.x伺服器系統,安裝git 2.9 ,多年以來使用上一直相安無事;沒想到因為全面停用tls 1.0,導致git無法使用。
RedHat Linux系統在無法升級的情況下,git就再起不能;最後我指定其中一台windows主機,安裝RaiDrive透過sftp掛載Linux伺服器的git目錄,使其變成windows其中的一個磁碟,再透過windows的git用戶端,達到讓Linux伺服器裡面的資料能上git版控的目標。
就在我在windows主機上,順利掛載Linux目錄後,接著準備將資料push到git server,豈料出現一大堆檔案呈現已修改狀態,提示我這些檔案要commit,但是實際上這些檔案沒有任何異動修改;我追查了一下,發現是換行字元搞的鬼,Linux換行只有\n ,windows則為\r\n;
windows掛載Linux檔案,因為換行字元不同,當然會被誤認檔案被修改過。
解決方式,在windows掛載linux情況下,執行以下git指令,就可以解決了。
git config --global core.autocrlf true
git config core.filemode false
git status
bookstack 真是越來愈好用,其「變動日誌」類似git版控系統commit messages功能,可以記錄修改原因。
https://book.kafeiou.pw/books/bookstack/page/bookstackiso
前陣子我協助機構部門導入git LFS大檔案版本控管,當時希望push資料時,觸發webhooks,執行我寫好的程式進行分析。
我使用gitea內建測試功能,能很順利觸發webhooks,進而執行程式。
可是實作時卻觸發不了,經檢查logs與爬文後,發現docker版本必須大於等於 20.10.6 有作用,我更新到20.10.6之後測試,還是一樣沒用,只好先擺著,希望主機重開後,能有改善,但無論如何,吉茶說要更新我就照作了。
自己寫 java 呼叫 jgit 函式庫clone專案,卻失敗,我看到錯誤訊息是沒有帳號密碼;可是程式明明有輸入帳號密碼,後來爬文才發現我有案子有使用LFS,需要設定快取把帳號密碼儲存起來,否則會一直要求輸入帳號密碼造成程式錯誤。
git lfs 需要2.0或是以上才行
git config --global lfs.cachecredentials
我在Gitea上面設定達成某個條件,觸發webhook執行
但是出現以下錯誤
...webhook can only call allowed HTTP servers (check your webhook.ALLOWED_HOST_LIST setting)
需要允許webhook執行遠端的http程式
#修改app.ini [root@firewall crontab]# docker exec -it gitea bash 14c18c2bd6c0:/# vi data/gitea/conf/app.ini #加上 [webhook] ALLOWED_HOST_LIST = 192.168.1.0/24
修改完成重開gitea就能使用了
我們從github拉乾貨下來的時候,一般只有兩種方式,一種是直接下載zip檔案,另一種是克隆;這兩種方式差在克隆可以全部版都(甚至連分支branch)都有,而下載只有最新版的檔案,不含其他版本。
這裡介紹第三種方式,克隆指令加上–bare
git clone --bare <git http url>
會出現原始版本紀錄,但不會出現檔案.
未加–bare
我因為系統設計需要寫程式,只需抓出專案標籤名稱以及該標籤所屬的所有檔案名稱,但不需要使用實際檔案;考慮jgit函式庫還是需要克隆下來才能做事情,但我又不需要把真的檔案都拉下來,因此選擇–bare的方式拉貨,就能達到我的目標了。
根據官方文件 , 吉茶可以綁定各式各樣的登入認證, 也包含微軟網域主控認證, 但並沒有解釋太多, 因我有需求要綁定Micro$oft 網域主控站 , 因此記錄一下注意事項.
# (memberOf=xxx) xxx 為群組名稱 CN=GitGroup,OU=groups,DC=test,DC=com
# 意思就是帳號需隸屬於GitGroup這個群組, 若不需要可以拿掉.
# (mail=*) 代表帳號email屬性必須有值才能用, 若不需要也可以拿掉
(&(objectCategory=Person)(memberOf=CN=GitGroup,OU=groups,DC=test,DC=com)(sAMAccountName=%s)(mail=*)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))
MariaDB [gitea]> delete from email_address where id<>1;
Query OK, 2 rows affected (0.00 sec)
MariaDB [gitea]> delete from user where id<>1;
Query OK, 2 rows affected (0.00 sec)
我用過幾種GIT客戶端程式, 從tortoiseGit, GitEye, gitkraken,SourceTree,GitHub Desktop, 都長期用過, 但老實說我只用基本功能,因此看不出來差異在哪, 也不在意哪種用戶端程式好或不好.
直到最近,公司有個需求,要版控”機構部門的圖檔”,這原本是PLM宏大系統的功能(整合ERP,文件管制), 但…廠商報價後,就GG了.
於是我想自己找解決方案, 能滿足版控, 又要能滿足檔案鎖定功能, 也參考過網路力推,能管控圖檔的 https://www.perforce.com,
perforce 能版控,也能鎖檔案, 甚至細心列出git,svn,與自身產品的差異(當然是老王賣瓜了)
https://www.perforce.com/blog/vcs/git-vs-svn-what-difference
如果有預算, 我也建議圖檔管控應當要用perforce.
但我個人還是想要用git這個比較熟悉,簡單,無複雜系統的工具.
那問題來了,雖說git的LFS可以進行大檔案版本控管與鎖定,但客戶端工具程式還沒找到好用上手的,
直到SmartGit(20.1版以上)現世,這工具能針對檔案進行直覺的”鎖定”, 就好像用檔案總管一樣,能讓麻瓜容易上手.
雖說tortoiseGit也可以在客戶端就鎖定檔案,但整合度實在差太多了, 很不推薦.
不囉唆,寫心得
#執行cmd, 到專案Repository目錄執行
git lfs install
git lfs locks --local
git lfs locks --verify
## 設定那些檔案需要進行LFS管控
git lfs track *.exe --lockable
git lfs track *.zip --lockable
...
#修改.git\config 以下設定若沒有就自行新增
[lfs "https://server/repo.git/info/lfs"]
...
locksVerify = true
#"https://server/repo.git/info/lfs" 為 remote URL,加上/info/lfs
SmartGit->Edit->Preference->Low-level Properties
設定
status.lfs.locks = true
#也可以設定定期檢查其他人是否有鎖定檔案的時間(預設30分太久了)
backgroup.fetch.delay = 600
#改成每5分鐘查看一次
SmartGit->Edit->Preference->Backgroup Command->detect remote changes
設定
當專案Repository沒使用的時候, 或是已設定我的最愛的專案Repository 需要定期檢查LFS狀態
#若沒有設定,則不會自動更新狀態, 會無法得知其他人是否鎖定檔案
SmartGit 一套單機版最便宜約100美金左右