2012-04-07 52 views
1

我在阅读“如何写代码”教程,我不禁想知道如何建立一个稳定的工作流程。 Git说,当然,我的代码会处于源代码控制之下。现在我想要能够做到以下几点:重复发布与去依赖包

  • 构建我的项目的可执行文件 - 并确保对于给定的Git版本,可执行文件将构建相同。
  • 为我的项目运行连续构建以在每次提交时激活。我需要确定,无论连续构建在我的工作站上都​​可以重现。
  • 创建我的项目的版本。我需要知道,如果我从我的代码的同一个git版本再次执行,可以重新创建发行版。

Go为它提供了“go get”工具 - 但这里是我感到困惑的地方。应该支持这个的工具,“去获取”,设置依赖包的源代码控制回购。这给我以下问题:

  1. 我不能把依赖包放在我自己的源代码管理下。这意味着如果我和我的合作者,或者我和我的持续构建系统之间有任何环境差异,我们将很难找出这些差异。
  2. 如果网络关闭,我将无法从头开始构建我的代码。或者,换一种说法,我的持续构建系统在每次构建发行版时都必须打开所有这些外部服务器。这可能是脆弱的,甚至不是我愿意让外界知道的东西。
  3. Go定义了一个将包的版本与基本语言的包进行同步的约定,但不能保证包作者会遵循该约定。如果他们不这样做,一个干净的工作空间将会选择一个可能被破坏的任意释放。
  4. 如果我依赖的项目被放弃,我可能会失去构建程序的能力。

我可以通过手动导入依赖项目的代码并且根本不使用“go get”来解决这些问题 - 但是,我避免使用专门为该用途设计和推广的语言的工具。

有什么建议吗?我错过了什么吗?

回答

1

去得到正好使用分布式版本控制系统的源码库。它将使用回购的本地副本。我会尽力在这里解决你的每一个问题。

  1. 你一定能够做出修改,在当地回购,如果你提交他们那里 想。
  2. go get使用它首先构建的本地存储库,除非您告诉它明确更新。
  3. go get不会吹走存储库,它仍然存在。而且由于go获知的所有源代码都是分布式源代码管理系统,所以没有这个原因,因为你无法保持项目的一个分支。