这是一个基于Web的项目,我的服务器端应用程序代码和客户端JS / HJTML受版本控制。假设我发布了1.0版本,并在1.0版本的主干中创建了一个新的分支。我运行我的构建工具,它会吐出所有压缩和组合的文件。在我的目录结构中,它使用压缩/构建文件生成一个构建目录。
我是否应该提交构建目录,这样我就可以获得每个构建/发布的副本,而不需要重新构建它,如果我需要另一个副本(另一个服务器说...)?
答案 0 :(得分:3)
虽然这是一种主观的答案,但我认为,在您的版本控制系统中存储构建二进制文件并不常见。这真的是标签的目的。
在发布时,您应该创建完整代码状态的标记,包括使用当前版本号标记的构建脚本。在任何时候都需要早期版本的副本,只需检查标记版本并构建它即可。标记包含在该阶段完全复制构建所需的所有信息和代码状态。
如果您希望将构建内容保存在其他位置,那么这是另一回事,并且非常适合您。最常见的是它们不属于版本控制。
答案 1 :(得分:1)
在版本控制下保持构建输出通常是个好主意。它允许输出存储在镜像输入的结构中。这清楚地表明哪个输入产生了哪个输出。它还允许轻松访问任何版本的输出而无需重建。
将其视为一种选择的原因主要与存储库相关。原因包括存储库太小,访问速度太慢,或者只是不喜欢在存储库中输出文件。
但一般来说,做这件事本身并没什么坏处。在许多情况下它很有价值。
答案 2 :(得分:1)
我要说“不”,源代码控制不是编译输出的地方。源代码管理用于管理源代码 - 目的是为代码存储,版本和提供协作工具。
理想情况下,构建的正确位置是构建服务器。这通常意味着您不仅仅是捕获编译输出(假设您在构建后保存了人工制品),您还可以捕获重要信息,例如构建参数,这些内容只是通过对构建输出进行版本控制而不会隐式获得(除非您的构建脚本也在那里。)
看看The 10 commandments of good source control management中的数字8。当然这有点主观(正如一些评论所示),但就个人而言,我没有版本编译输出。也许你需要问的问题是“为什么”你要对它进行版本化以及你没有这样做的原因。