diff --git a/base/web/serve.go b/base/web/serve.go index 9a6e1c68..d1afd00b 100644 --- a/base/web/serve.go +++ b/base/web/serve.go @@ -314,7 +314,7 @@ func init() { "login", true, "space", true, "share", true, "plugin", true, "publish", true, "intshell", true, ), - "static", kit.Dict("/", "usr/volcanos/"), + "static", kit.Dict("/gitrepos/", "usr/repos/", "/", "usr/volcanos/"), "volcanos", kit.Dict("refresh", "5", "share", "usr/volcanos/page/share.html", diff --git a/misc/git/git.shy b/misc/git/git.shy index ba13c40e..27bfd665 100644 --- a/misc/git/git.shy +++ b/misc/git/git.shy @@ -13,6 +13,7 @@ section "构建" spark shell ` yum install -y wget make gcc yum install -y libcurl-devel.x86_64 openssl-devel.x86_64 +yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-1.8.3.1.tar.gz tar xvf git-1.8.3.1.tar.gz && cd git-1.8.3.1 diff --git a/misc/git/server.go b/misc/git/server.go index 499be39c..2a7dc3ce 100644 --- a/misc/git/server.go +++ b/misc/git/server.go @@ -1,11 +1,9 @@ package git import ( - "os" - "strings" + "github.com/AaronO/go-git-http" ice "github.com/shylinux/icebergs" - "github.com/shylinux/icebergs/base/cli" "github.com/shylinux/icebergs/base/web" kit "github.com/shylinux/toolkits" ) @@ -24,53 +22,13 @@ func init() { web.LOGIN: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Option(ice.RENDER_OUTPUT, ice.RENDER_RESULT) }}, - "/repos/": {Name: "repos", Help: "repos", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Option(ice.MSG_USERNAME, "shy") - m.Option(cli.CMD_ENV, - "GIT_PROJECT_ROOT", kit.Path("./"), - "PATH_INFO", "/"+strings.Join(arg, "/"), - - "REMOTE_USER", m.Option(ice.MSG_USERNAME), - "REMOTE_ADDR", m.Option(ice.MSG_USERNAME), - "GIT_COMMITTER_NAME", m.Option(ice.MSG_USERNAME), - "GIT_COMMITTER_EMAIL", m.Option(ice.MSG_USERNAME), - - "REQUEST_METHOD", m.Option(ice.MSG_METHOD), - "CONTENT_TYPE", m.R.Header.Get(web.ContentType), - - "GIT_HTTP_EXPORT_ALL", "true", - "QUERY_STRING", m.R.URL.RawQuery, - "PATH", "/Users/shaoying/miss/contexts/usr/install/git-1.8.3.1"+":"+os.Getenv("PATH"), - ) - - switch strings.Join(arg, "/") { - case "info/refs": - msg := m.Cmd(cli.SYSTEM, "/Users/shaoying/miss/contexts/usr/install/git-1.8.3.1"+"/"+"git-http-backend") - m.Cmd("nfs.file", "append", "hi.log", msg.Append(cli.CMD_ERR)) - x := msg.Result() - - ls := strings.Split(x, "\n") - for i, v := range ls { - vs := strings.SplitN(v, ": ", 2) - if strings.TrimSpace(v) == "" { - m.Echo(strings.Join(ls[i+1:], "\n") + "\n") - break - } - m.W.Header().Set(vs[0], vs[1]) - } - case "git-upload-pack": - m.Option("input", m.R.Body) - defer m.R.Body.Close() - msg := m.Cmd(cli.SYSTEM, "/Users/shaoying/miss/contexts/usr/install/git-1.8.3.1"+"/"+"git-upload-pack", "--advertise-refs", kit.Path("./")) - m.Cmd("nfs.file", "append", "hi.log", msg.Append(cli.CMD_ERR)) - x := msg.Result() - - ls := strings.SplitN(x, "\n", 2) - m.Debug(" %v %v", len(x), x[:len(x)]) - - m.Render(ice.RENDER_OUTPUT, ice.RENDER_VOID) - m.W.Write([]byte(ls[1])) - } + "/github.com/": {Name: "github.com", Help: "github.com", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + m.Render(ice.RENDER_OUTPUT, ice.RENDER_VOID) + p := kit.Path(".ish/pluged") + m.Debug("what %v", p) + git := githttp.New(p) + m.Debug("what %v", p) + git.ServeHTTP(m.W, m.R) }}, }, })