2013-06-03 37 views
28

Golang教程中我不清楚如何将Golang代码放到Github中,以便能够在稍后从Github中将该代码作为一个包导入。如何将Golang项目(一组包)放到Github上?

这是从Golang教程http://golang.org/doc/code.html一个例子项目工作区(目录结构):

bin/ 
    hello    # command executable 
pkg/ 
    linux_amd64/  # this will reflect your OS and architecture 
     github.com/user/ 
      newmath.a # package object 
src/ 
    github.com/user/ 
     hello/ 
      hello.go # command source 
     newmath/ 
      sqrt.go # package source 

那么,什么才是我需要做的,我在哪里需要git init在此工作空间,能够后来:

  1. 只导入newmath包到我的一些单独的项目。通过这种方式:

    import "github.com/user/newmath" 
    
  2. 要获得唯一hello.exe可执行文件。

  3. 获取整个项目工作区(所有目录:bin,pkg,src)。

回答

33
  1. 对于newmath是一样的(后2)

    $ mkdir $GOPATH/src/github.com/username/newmath 
    $ cd $GOPATH/src/github.com/username/newmath 
    $ git init 
    $ ... more git setup 
    $ touch sqrt.go 
    $ gvim sqrt.go 
    $ git add sqrt.go 
    $ git commit -a -m 'Inital commit' 
    $ git push 
    

    现在,人们可以做

    $ go get github.com/username/newmath 
    

    import "github.com/username/newmath"

    现在应该在他们的来源工作。该包将自动安装在 需求上。

  2. 我会假设hello命令和newmath封装 没有关系,还是不够密切相关的属于一个 库。

    $ mkdir $GOPATH/src/github.com/username/hello 
    $ cd $GOPATH/src/github.com/username/hello 
    $ git init 
    $ ... more git setup 
    $ touch hello.go 
    $ gvim hello.go 
    $ git add hello.go 
    $ git commit -a -m 'Inital commit' 
    $ git push 
    

    现在,人们可以做

    $ go get github.com/username/hello 
    $ go install github.com/username/hello 
    

    安装您的命令hello

    • 这使得几乎没有任何意义公布的$GOPATH/pkg内容在 托管服务。
    • 它使一些意识到在主机服务发布$GOPATH/bin的内容。但我不鼓励这种做法,因为明显的原因是 。此外,如果您发布源代码 - 二进制文件不是必需的,并且每个人都可以构建自己的(可信) 。

你看起来也许还是有点用的术语“工作区”混淆。工作区通常只在开发人员的机器上存在一次,但它通常包含多个存储库。一些由开发人员撰写,其他人从互联网上“获取”。在这种情况下发布整个wokspace毫无意义。

但是,有些人为每个项目或每个存储库或甚至每个软件包使用单独的工作空间。我不知道有什么好处。或者更好的说,我认为没有一个单一的工作空间可以与export GOPATH=$HOME所定义的单一工作空间相比较(我的情况是几年来没有任何问题)。

2

检查这个环节出了更多的细节:

github go wiki on github code layout

下面

是一个永久的部分:

的应用程序和库都住在Github上,都以自己的仓库。 $ GOPATH是该项目的根源 - 您的每个Github回购将在 中检出$ GOPATH下的多个文件夹。

您的代码布局是这样的:

$GOPATH/ 
src/ 
    github.com/ 
     jmcvetta/ 
      useless/ 
       .git/ 
       useless.go 
       useless_test.go 
       README.md 
      uselessd/ 
       .git/ 
       uselessd.go 
       uselessd_test.go 
       README.md 

每个文件夹下的src/github.com/jmcvetta /是一个单独的git结帐的根源。

0

如果你不是git cli的粉丝,那么你真正需要做的就是通过web界面上传到github repo。只要确保您的软件包名称与回购(小写字母)名称相同,并且您应该可以继续使用。我为我的REST API库做了与github.com/Digitalblueeye/enroute相同的工作。

相关问题