Git bare serve http

要把舊的 git server repo 搬到現在的 gitea server 上

舊的 git server 是用 ssh 方式做權限管控及access, repo 就手動開 git bare repo 但是 gitea 不支援透過 ssh migrate gitea 只支援透過 http, https migrate 遠端 repo 到 serer 上

所以現在就回到正題 將 git bare repo export as http static file

0. story

舊的 git server repo layout

/var/git/repo1
/var/git/repo2
/var/git/repo3

一般存取就會是 ssh://@git{ip}:22/var/git/repo1

1. update server info

首先你要將要 export 的 repo 做 server info 更新, 這樣 git 才能正常透過 http 存取

#Git 將執行這個 git-update-server-info 命令來更新匿名 HTTP 存取取得資料時所需要的檔案。
cd "${repo_name}"
git --bare update-server-info

2. serve it

假如有 python 直接拿現成的來用

cd /var/git/
python -m http.server 8000
# If using python2:
# python -m SimpleHTTPServer 8000

不然自己寫一個也可

package main                                                                                                                                                                                                   

import (
        "flag"
        "log"
        "net/http"
)

func main() {
        port := flag.String("port", "80", "port to export")
        path := flag.String("path", "", "path to serve")
        flag.Parse()

        http.Handle("/", http.FileServer(http.Dir(*path)))
        if err := http.ListenAndServe(":"+*port, nil); err != nil {
                log.Fatal(err)
        }
}
go build -o serveThis
./serveThis -p 8000 -path /var/git/*

之後可以透過 http 去 access 這些 repo

git clone http://{ip}:8000/repo1

3. gitea migrate

新增 migrate repo, 填上我們弄好的 http url 就可以拉