GIT 工作流开发(所有文件)与生产(部分文件)

GIT workflow development (all files) vs production (partial files)

设置:

1 GIT 包含 client/server/shared 代码的存储库,目前在 1 个分支上。

构建过程:

问题:

我不希望所有文件都在我的生产服务器上,只是客户端和服务器文件夹的捆绑版本。如果我将主分支拉入,我将获得所有文件,而不仅仅是捆绑版本。

解法:

??? - 我该如何处理?创建额外的存储库,创建多个分支?这通常是如何完成的?

通常您希望将源代码管理、构建过程和可部署工件分开。 Git 主要用于源代码控制,公认的做法是只包含源代码。

然后你会用一些构建工具(Jenkins、bamboo 等)来构建它。 然后,您可以使用构建工具的构建结果,或者如果您更喜欢对 Nexus 或 artifactory 等工件使用版本控制。

这听起来可能很复杂,但确实可以避免以后出现很多问题。

您可以使用 .gitattributes (5) export-ignore directive 到 select 版本控制中的文件,但在生产环境中不需要。

如果您使用像 Capistrano 3 这样的部署系统,它实际上会使用 git-archive (1)。此命令将创建一个要部署在发布文件夹中的存档,它将遵守 .gitattributes 文件中的 export-ignore 规则。


对于您的客户端文件,您可以将文件捆绑在本地或您部署的机器上,然后 rsync 或以任何其他方式将其上传到生产机器上的发布文件夹,然后再激活新版本.

我还可以建议您实际将客户端文件部署到 CDN,服务器将只提供一个 HTML 页面,其中包含来自您的 CDN 的版本化客户端。