Lindenii Project Forge
Commit info | |
---|---|
ID | 3188d507f662023325205191770b82b24ff7b29c |
Author | Runxi Yu<me@runxiyu.org> |
Author date | Sun, 16 Feb 2025 11:00:00 +0800 |
Committer | Runxi Yu<me@runxiyu.org> |
Committer date | Sun, 16 Feb 2025 11:00:00 +0800 |
Actions | Get patch |
*.go: Reformat
package main import ( "net/http"
"github.com/go-git/go-billy/v5/osfs" "github.com/go-git/go-git/v5/plumbing/format/pktline" "github.com/go-git/go-git/v5/plumbing/transport" "github.com/go-git/go-git/v5/plumbing/transport/server" ) func handle_repo_info(w http.ResponseWriter, r *http.Request, params map[string]any) (err error) { group_name, repo_name := params["group_name"].(string), params["repo_name"].(string) var repo_path string err = database.QueryRow(r.Context(), "SELECT r.filesystem_path FROM repos r JOIN groups g ON r.group_id = g.id WHERE g.name = $1 AND r.name = $2;", group_name, repo_name).Scan(&repo_path) if err != nil { return err } endpoint, err := transport.NewEndpoint("/") if err != nil { return err } billy_fs := osfs.New(repo_path) fs_loader := server.NewFilesystemLoader(billy_fs) transport := server.NewServer(fs_loader) upload_pack_session, err := transport.NewUploadPackSession(endpoint, nil) if err != nil { return err } advertised_references, err := upload_pack_session.AdvertisedReferencesContext(r.Context()) if err != nil { return err } advertised_references.Prefix = [][]byte{[]byte("# service=git-upload-pack"), pktline.Flush} w.Header().Set("content-type", "application/x-git-upload-pack-advertisement") err = advertised_references.Encode(w) if err != nil { return err } return nil }
package main import ( "net/http"
"github.com/go-git/go-billy/v5/osfs" "github.com/go-git/go-git/v5/plumbing/protocol/packp" "github.com/go-git/go-git/v5/plumbing/transport" "github.com/go-git/go-git/v5/plumbing/transport/server" ) func handle_upload_pack(w http.ResponseWriter, r *http.Request, params map[string]any) (err error) { group_name, repo_name := params["group_name"].(string), params["repo_name"].(string) var repo_path string err = database.QueryRow(r.Context(), "SELECT r.filesystem_path FROM repos r JOIN groups g ON r.group_id = g.id WHERE g.name = $1 AND r.name = $2;", group_name, repo_name).Scan(&repo_path) if err != nil { return err } endpoint, err := transport.NewEndpoint("/") if err != nil { return err } billy_fs := osfs.New(repo_path) fs_loader := server.NewFilesystemLoader(billy_fs) transport := server.NewServer(fs_loader) upload_pack_session, err := transport.NewUploadPackSession(endpoint, nil) if err != nil { return err } w.Header().Set("Content-Type", "application/x-git-upload-pack-result") reference_update_request := packp.NewUploadPackRequest() err = reference_update_request.Decode(r.Body) if err != nil { return err } report_status, err := upload_pack_session.UploadPack(r.Context(), reference_update_request) if err != nil { return err } err = report_status.Encode(w) if err != nil { return err } return nil }