git server移轉注意事項

我工作上用的git server有兩個, 一個是吉茶(gitea), 另一個是吉累(gitlab), 因為重新使用吉碧麗(gitblit), 所以將吉累狠心地關閉, 因為他功能太多, 架構龐大, 太耗資源, 願意用的原因只有一個, 就是分類的方式比吉茶好, 現在終於來了一個分類更強的server – gitblit.

我將gitlab上面的git專案, 直接複製到gitblit 目錄上, 一切正常, 但卻遇到 lfs 檔案移轉失敗的現象, 也就是gitblit上面的lfs並無法真正的指向檔案實體位置, 全部都是空的.

我嘗試很多指令想解決這問題, 如 git lfs clean , git lfs pust –all 等等要麻就是無反應timeout, 要麻就是出現檔案不存在等等奇怪現象, 皇天不負苦心人, 我終於爬文爬到有位專家 https://github.com/sprohaska 提出解法 https://github.com/git-lfs/git-lfs/issues/1113 , 最後如願從client端將大檔案正確的放到新的gitblit上, 指令如下:

git lfs ls-files -l | awk '{ print $1 }' | xargs git lfs push --object-id origin

再次擁抱-吉碧麗gitblit – git server 使用docker

原本用習慣的git server gitblit , 在2016年發表1.8.0版本之後, 原創者就不再更新, 當時也因為參與修改幾個bug,以及中文化花了不少心血, 覺得非常可惜, 撐到2018年之後, 覺得該專案不再更新, 安全性與bug都無法處理, 就毅然決然改用gitea 吉茶.

用了吉茶之後, 發現非常不能適應, 吉茶並沒有多子目錄的設計 , 方便我們建立階層式管理專案, 例如我要建立it部門, 吉碧麗除了畫面會分類成it之外, 連網址都與分類一致, https://yyy.zzz/r/it/xxx.git , 非常直覺.
吉茶則是團隊, 群組的概念, 對於專案的分類並沒有這樣的設計, 應該都儘量與github相同,程式師才會容易上手.
至於gitlab有分類,但似乎只能一層,無法達到gitblit的多子階層的功能.

以下是docker安裝吉碧麗的步驟:

  1. 官網
    https://github.com/gitblit/gitblit-docker
  2. 設定volume之後, 啟動gitblit , 指令的port隨時可改, 預設帳密都是admin , 登入後請馬上更改
    docker volume create gitblit-etc
    docker volume create gitblit-data
    docker run -d --restart always --name gitblit -v gitblit-data:/var/opt/gitblit/srv -v gitblit-etc:/var/opt/gitblit/etc -p 8443:8443 -p 8089:8080 -p 9418:9418 -p 29418:29418 gitblit/gitblit:latest

jgit for android version

前一陣子突然想在android玩git , 因此測試了一下Eclipse 內的 jgit library

發現原本我的 InMethodJakarta 專案所含的 jgit 4.6 版library 居然無法相容android,

最後終於發現 jgit 4.6以後至少要java 8, 但 android 有些不相容.

測試了好久, 從最新的jgit 5.4版本降測到3.7.1, 終於成功了. 又再往上測試到4.5版也可相容 android , 因此寫下來做個紀念

下載的地方在這裡

docker安裝gitlab

很方便, 也很簡單

1. docker volume create  gitlab-config 
2. docker volume create gitlab-logs
3. docker volume create gitlab-data
4.
docker run -d --hostname <主機名稱> -p<外部對應http>:80 -p
<外部對應https> :443 --name gitlab --restart always --volume gitlab-config:/etc/gitlab --volume gitlab-logs:/var/log/gitlab --volume gitlab-data:/var/opt/gitlab gitlab/gitlab-ce:latest
5. 設定檔案在 gitlab-config/gitlab.rb
若不需要http ,可加上external_url "https://主機名稱" ,
若不需要 leetsencrypt , 請加上 letsencrypt['enable'] = false

2019/10/07 後記

後來gitlab一直更新, 想說docker pull gitlab/gitlab-ce:latest
以前天真的以為這樣就好了, docker上面的gitlab就會自動變成最新版,
沒想到以前的latest跟現在的latest是不同的
所以我就很瀟灑的砍掉目前docker上正在跑的gitlab ,反正設定檔案都在volume
砍掉之後, 重新執行以上的第四步驟
發現起不來, 於是找了很久找到 log 裡面一個 reconfigure 的目錄, 看了一下目錄裡面最新的檔案,才發現gitlab的自動升級功能有提醒版本過舊, 但是我不知道舊的版本是啥.
最後終於找到以前gitlab的image id (可以使用docker images 指令找) , 再去docker上找出一樣的images id 就能知道版本了, 於是再慢慢升級, 因為 gitlab 無法跳躍式升級, 需要一版接一版, 最後就成功升級到最新版了

visual studio code 超強的跨平台編輯器

visual studio code 是微軟出品的跨平台開源軟體, 該軟體跳脫了編輯器的功能, 整合了開發, 版本控管,與很多第三方擴充的功能, 一般直接稱作 vscode 或是 code.

咖啡偶直到現在才發現, 使用了一下, 發現不得了, 非常好用, 尤其內建git版本控管, 檔案總管, 終端機,與powershell功能, 真讓人可以不管用哪個作業系統, 都能一個環境習慣到底呢, 其實可以取代notepad++了.

這裡紀錄一下ubuntu初用vscode的注意事項.

1. 安裝

直接使用網站的檔案即可

2. 重設vscode環境,回到初始值

刪除  /home/帳號/.config/Code

 

GIT LFS 兩三事

GIT 從1.8.2起, 為大家帶來了大檔案的解法.

這裡說一下GIT LFS 需要注意的兩三事:

  1. 你的本地端的GIT不需要所有LFS的檔案
    這樣可以解決clone過慢的問題, 本地端不需要於存放所有LFS歷史檔案.
  2. Git 2.3以前, 若要clone專案, 必須使用git lfs clone指令,否則使用git clone只會得到大檔案的指標, 並不是真正實體檔案. 但2.3 版本以後, 取消git lfs clone指令, 再度回歸 git clone 一樣可以取得大檔案的實體檔.
  3. CentOS LFS安裝要記得下 yum install git-lfs

asdf

Dockerfile 初體驗

Docker 大家都會用, 但是如何實做自己的docker image就需要研究了

因此咖啡偶把簡易步驟記下來:

此範例是因為咖啡偶需要使用前人開發的舊系統(使用php3), 因此建立一個apache . php , mysql 三劍客, 並且將設定php.ini參數能吃以前的php寫法 register_globals = On

1. 使用版控, 可選擇github , 或是 bitbucket

ps.我以版控的tag當作docker 的tag name

2. docker 綁定bitbucket , 並且設定auto build功能, 讓docker自動抓取 bitbucket的資料來編譯

bitbucket source https://bitbucket.org/inmethod/centos-6_httpd-2.2_php-5.3_mysql-5.1

docker image  https://hub.docker.com/r/inmethod/centos-6_httpd-2.2_php-5.3_mysql-5.1

 

 

Gitea中文名稱-吉茶

上週終於喝了一杯-吉茶(Gitea)

這款最近超級夯的Git私人版本控管伺服器,使用docker安裝起來非常快速!

我為什麼把Gitea叫做吉茶?

因為我發現Gitea網站的圖片與標語(slogan), 是一杯掛著茶包的茶!

https://gitea.io
Gitea – Git with a cup of tea

直翻成吉茶 Git Tea , 不是很好嗎!

來杯吉茶吧 https://try.gitea.io

Gitea安裝方式,請參考10014_(Docker)如何安裝Gitea(吉茶).txt

1 2 3