Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 当GOPATH强制您将代码放入/go文件夹时,如何将所有相关项目保持在一起_Git_Go - Fatal编程技术网

Git 当GOPATH强制您将代码放入/go文件夹时,如何将所有相关项目保持在一起

Git 当GOPATH强制您将代码放入/go文件夹时,如何将所有相关项目保持在一起,git,go,Git,Go,我想从以下路径开始开发go web服务: /dev/git/proj1/mygoservice/ /dev/git/proj1/railsapp/ 如果我的路径位于: ~/go 这将如何工作?我应该创建一个指向git回购的符号链接吗 我想把我所有的子项目都集中在/dev/git/proj1路径下。如果你必须将你的源代码保存在/dev/git/proj1中,那么你确实需要一个从源代码到官方GOPATH的符号链接~/go/src(关于a)。 而不是相反,从~/go/src到源代码 这是因为go工

我想从以下路径开始开发go web服务:

/dev/git/proj1/mygoservice/
/dev/git/proj1/railsapp/
如果我的路径位于:

~/go
这将如何工作?我应该创建一个指向git回购的符号链接吗

我想把我所有的子项目都集中在/dev/git/proj1路径下。

如果你必须将你的源代码保存在
/dev/git/proj1
中,那么你确实需要一个从源代码到官方GOPATH的符号链接
~/go/src
(关于a)。
而不是相反,从
~/go/src
到源代码

这是因为go工具不遵循符号链接,正如
(,)

因此:

但是,如果您需要将git repo推送到GitHub项目,那么最好使用正确的文件夹结构,以使您的Go项目能够Go-gettable,如“”所示:

mkdir-p~/go/src/github.com/
cd/dev/git/proj1
mv mygoservice~/goo/src/github.com/
ln-s~/go/src/github.com//proj1/mygoservice/dev/git/proj1/mygoservice

这样,您将在go源代码中使用正确的导入路径,该路径基于“
github.com//mygoservice

您需要将代码放入GOPATH。这只是使用
go
工具的基本要求。@JimB所以符号链接不起作用?go工具故意排除符号链接,以防止多次链接相同的包。如果您必须通过多个路径访问它,请链接到GOPATH中的源。一个是您的GOROOT,另一个是您的GOPATH。GOPATH应该用于您的项目,我建议您在GOPATH()中也遵循此结构。符号链接会起作用,但a.-不是推荐的方式,b.-(根据我自己的经验)你会反对这种语言。这是一个公共项目(使用github repo)还是一个私人项目?go工具省略符号链接以防止从多个路径导入同一代码。这将导致难以追踪构建失败。@JimB奇怪,我多年来一直在使用symlink,没有任何问题(在GOPATH中编辑代码时)。。。虽然。。。我明白你的意思了:是的。例如,它被多次拒绝,@JimB:You可以改为symlink~/myproject->your GOPATH。好啊是的,在这些情况下我一直都是这样做的,这就是我在上面的评论中提到的。无论如何,您仍然需要按照官方文档设置您的GOPATH,所以这里没有太多要添加的内容。
cd /dev/git/proj1
mv mygoservice ~/go/mygoservice
ln -s ~/go/mygoservice
mkdir -p ~/go/src/github.com/<auser>
cd /dev/git/proj1
mv mygoservice~/goo/src/github.com/<auser>
ln -s ~/go/src/github.com/<auser>/proj1/mygoservice /dev/git/proj1/mygoservice