GIT 工作流开发(所有文件)与生产(部分文件)
GIT workflow development (all files) vs production (partial files)
设置:
1 GIT 包含 client/server/shared 代码的存储库,目前在 1 个分支上。
构建过程:
- 客户端是一个基于网络的应用程序,需要
minimized/bundled/etc,生成一个文件
- 服务器
目前保持不变,尽管稍后可能会捆绑
问题:
我不希望所有文件都在我的生产服务器上,只是客户端和服务器文件夹的捆绑版本。如果我将主分支拉入,我将获得所有文件,而不仅仅是捆绑版本。
解法:
??? - 我该如何处理?创建额外的存储库,创建多个分支?这通常是如何完成的?
通常您希望将源代码管理、构建过程和可部署工件分开。 Git 主要用于源代码控制,公认的做法是只包含源代码。
然后你会用一些构建工具(Jenkins、bamboo 等)来构建它。
然后,您可以使用构建工具的构建结果,或者如果您更喜欢对 Nexus 或 artifactory 等工件使用版本控制。
这听起来可能很复杂,但确实可以避免以后出现很多问题。
您可以使用 .gitattributes (5)
export-ignore
directive 到 select 版本控制中的文件,但在生产环境中不需要。
如果您使用像 Capistrano 3 这样的部署系统,它实际上会使用 git-archive (1)
。此命令将创建一个要部署在发布文件夹中的存档,它将遵守 .gitattributes
文件中的 export-ignore
规则。
对于您的客户端文件,您可以将文件捆绑在本地或您部署的机器上,然后 rsync
或以任何其他方式将其上传到生产机器上的发布文件夹,然后再激活新版本.
我还可以建议您实际将客户端文件部署到 CDN,服务器将只提供一个 HTML 页面,其中包含来自您的 CDN 的版本化客户端。
设置:
1 GIT 包含 client/server/shared 代码的存储库,目前在 1 个分支上。
构建过程:
- 客户端是一个基于网络的应用程序,需要 minimized/bundled/etc,生成一个文件
- 服务器 目前保持不变,尽管稍后可能会捆绑
问题:
我不希望所有文件都在我的生产服务器上,只是客户端和服务器文件夹的捆绑版本。如果我将主分支拉入,我将获得所有文件,而不仅仅是捆绑版本。
解法:
??? - 我该如何处理?创建额外的存储库,创建多个分支?这通常是如何完成的?
通常您希望将源代码管理、构建过程和可部署工件分开。 Git 主要用于源代码控制,公认的做法是只包含源代码。
然后你会用一些构建工具(Jenkins、bamboo 等)来构建它。 然后,您可以使用构建工具的构建结果,或者如果您更喜欢对 Nexus 或 artifactory 等工件使用版本控制。
这听起来可能很复杂,但确实可以避免以后出现很多问题。
您可以使用 .gitattributes (5)
export-ignore
directive 到 select 版本控制中的文件,但在生产环境中不需要。
如果您使用像 Capistrano 3 这样的部署系统,它实际上会使用 git-archive (1)
。此命令将创建一个要部署在发布文件夹中的存档,它将遵守 .gitattributes
文件中的 export-ignore
规则。
对于您的客户端文件,您可以将文件捆绑在本地或您部署的机器上,然后 rsync
或以任何其他方式将其上传到生产机器上的发布文件夹,然后再激活新版本.
我还可以建议您实际将客户端文件部署到 CDN,服务器将只提供一个 HTML 页面,其中包含来自您的 CDN 的版本化客户端。