強制”只”將特定分支push到git 伺服器上
我的git用戶端只要是push就會把阿貓阿狗分支都push上去,這樣無腦的方式有時候反而有點麻煩,尤其是有些分支不想push上去。
若只想要把本地端master push上去,其他分支都不用,就不能借助有UI的用戶端程式,只能靠指令了。
git push -f origin master
我的git用戶端只要是push就會把阿貓阿狗分支都push上去,這樣無腦的方式有時候反而有點麻煩,尤其是有些分支不想push上去。
若只想要把本地端master push上去,其他分支都不用,就不能借助有UI的用戶端程式,只能靠指令了。
git push -f origin master
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)