将单体应用程序转变为基于微服务的架构并保留 GIT 历史记录
Turing a monolithic application into a Microservice based architecture and keeping the GIT history
我打算将单体应用程序拆分为基于微服务的架构,但我想保留 GIT 历史记录。
monolit 应该拆分成三个微服务。
我的第一个方法是,将 GIT 存储库复制三次,并从新的微服务中删除所有非域特定部分,这应该会保留 git 历史记录的大部分内容。但我不确定这是否是保留版本控制历史记录的最佳方式。
您可以使用 git filter-branch
和 --subdirectory-filter
选项来过滤存储库的子目录,从而使存储库包含子文件夹作为根目录。这在第 5 步中描述 here, documentation here 可能也有帮助。您将不得不克隆您的存储库三次,并且在每个项目的不同部分中 运行 filter-branch
。
因为(说 --subdirectory-filter
)只有子目录可以这样处理,您可能必须先重新安排您的存储库。然而,相对于直接删除其他部分的优势在于,通过使用 filter-branch
您将仅保留与存储库实际内容相关的历史记录,而不会过滤掉任何部分的历史记录。
我打算将单体应用程序拆分为基于微服务的架构,但我想保留 GIT 历史记录。
monolit 应该拆分成三个微服务。
我的第一个方法是,将 GIT 存储库复制三次,并从新的微服务中删除所有非域特定部分,这应该会保留 git 历史记录的大部分内容。但我不确定这是否是保留版本控制历史记录的最佳方式。
您可以使用 git filter-branch
和 --subdirectory-filter
选项来过滤存储库的子目录,从而使存储库包含子文件夹作为根目录。这在第 5 步中描述 here, documentation here 可能也有帮助。您将不得不克隆您的存储库三次,并且在每个项目的不同部分中 运行 filter-branch
。
因为(说 --subdirectory-filter
)只有子目录可以这样处理,您可能必须先重新安排您的存储库。然而,相对于直接删除其他部分的优势在于,通过使用 filter-branch
您将仅保留与存储库实际内容相关的历史记录,而不会过滤掉任何部分的历史记录。