2017-02-18 97 views
1

用GO开发一两年后我看了一下我的$ GOPATH目录大小,惊讶地发现它增长到了4GB。

据我所知,磁盘空间应该是便宜的(而且这对128GB笔记本电脑固态硬盘来说并不算多),但仍然很便宜。

所以我的问题是,是否有一些好的做法来管理大小$ GOPATH目录?

重新开始将是一个好主意? (虽然可能非常耗时)

+0

您的GOPATH不仅包含包的来源,还包含对象文件,有时甚至包含不同的体系结构(如果您进行了交叉编译)和/或启用了竞争检测。由于这些基本上只是缓存版本,您可以删除它们(它们位于GOPATH/pkg中)。 – Volker

+0

当你得到一个git克隆的依赖关系,你也可以运行一个git gc -ggressive来释放一些空间 –

+0

当你调试应用程序或测试时,某些编辑器(例如Atom)在源文件旁边创建特殊的可执行文件(例如'调试“),您可以自由删除。 – icza

回答

2

您的声明,即删除GOPATH会很费时,听起来像您正在用简单的go get ...来管理Go项目的依赖关系。在我的环境中,我做了两件事使GOPATH短暂。

  1. 不要使用普通的go get进行依赖管理。 Go 1.6引入了/vendor目录。与一个依赖项管理工具(如Glide)一起,某个项目的每个依赖关系都与项目目录有关。

    1. 这意味着,如果不需要依赖关系了,你可以擦拭vendor目录中的项目并重新下载的依赖关系。因此,您只需要依赖于您的磁盘,这实际上就是您需要的。

    2. 此外,如果您停止使用某个项目并将其从磁盘中删除,则依赖项也会被删除。

  2. 您可以在GOPATH中指定多个路径。像环境变量PATH一样,你可以用冒号分隔它们。有趣的是,Go使用第一个路径下载项目。在我的机器上,GOPATH看起来像$HOME/.gopath:$HOME/projects。所以,如果你把所有的实际项目放到第二个目录中,你的项目和依赖关系就会明确分开。因此,您可以不时擦除第一个目录,但不必担心必须再次克隆每个项目。

这两件事情没有帮助减少你的围棋项目及其相关的磁盘使用情况,但你得到一个更好地了解什么实际需要,使你能够删除,只要你喜欢的依赖目录。