# 代码库分支比对工具 **Repository Path**: sinnliu/GitRepoBranchCompare ## Basic Information - **Project Name**: 代码库分支比对工具 - **Description**: 代码库分支比对工具,支持原分支、发布分支、灰度分支三级分支程序比对 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-03 - **Last Updated**: 2025-02-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 代码库分支比对工具 #### 介绍 代码库分支比对工具,支持原分支、发布分支、灰度分支三级分支程序比对 #### 软件架构 软件架构说明 #### 安装教程 1. 拉取工程后,使用````mvn clean package````命令生成jar包; 2. 拷贝工程``resources``目录下的`git-repo-scan-config.properties`配置文件和jar保持一致;根据要扫描的代码库进行调整配置文件内容。 3. 在``GitRepoBranchCompare-0.0.1-SNAPSHOT.jar``目录执行以下命令:``java -jar -DprocessType=all/compare/showhtml GitRepoBranchCompare-0.0.1-SNAPSHOT.jar`` 3.1. processType=all,比对代码库不同分支的程序差异并生成html文件报告。 3.2. processType=compare,仅比对代码库不同分支的程序,并生成差异文件。 3.3. processType=showhtml,仅针对compare步骤生成的差异文件自动生成html文件报告并自动展示。 #### 使用说明 1. `git-repo-scan-config.properties`示例文件说明: ```` # application config 应用名称,无特殊含义和作用,仅用作区分 app_name=GitRepo # compare method: online, local,目前仅支持 online 在线拉取代码库后进行比对 compare_method=online # git repo dir config # online 模式,下载代码本地目录,local 模式直接读取代码库目录, git_process_local_dir=D:/GitRepoDownload # 处理过程临时文件,程序结果后可删除。 git_process_temp_dir=D:/GitRepoTemp # 处理结果文件所在目录,处理结果不建议删除。 git_process_result_dir=D:/GitRepoResult # git repo link # type: GitHub, Gitee # 目前仅支持Gitee,如果要支持其他代码仓库,需要调整程序:GitOperation.java 的 pull() 方法。 git_repo_type=Gitee git_repo_online_link=https://gitee.com/ # git repo list, seperated by ',' # 待比对代码库清单,支持按照 , 分割依次比对多个代码库不同分支的配置。 git_scan_repo_list=sinnliu/mogu_blog_v2 # 支持按照 source/target/grey 三级分支比对;其中 source 分支作为原分支,依次比对 source->target, source->grey, grey->target 不同分支的程序变动情况。 compare_branch_source=master compare_branch_target=feature compare_branch_grey=dev ```` 2. 程序处理链路说明: (1) 全量拉取代码库 逐个拉取,存在效率问题,待优化。 (2) 全量迁移与拷贝 .git 文件夹 将 local 目录下的 .git 文件全量迁移到 temp 目录下; 将 temp 目录下的 .git 文件依次按照这个次序 source->target, source->grey, grey->target 拷贝到对应的local目录下。 通过迁移 .git 文件的方式快速实现文件差异的识别,而不是直接比对两个分支。 缺点:需要拉取所有要比对的程序分支,会占用过大的本地硬盘空间。后续可删除 source 分支对应的程序减少1/3的硬盘空间占用,待优化。 (3) 执行 git *** 命令,输出程序变动结果 - git clone $repourl $localdir --branch $branch --single-branch, 按照指定分支、代码库、目录拉取代码库 - git status -s, 统计程序分支变动概要 - git diff --stat $filename, 统计文件变动情况 - git diff $filename, 统计文件变动明细 - git log --pretty=format:"%an<%ae> %ad %s" --date=format:"%Y-%m-%d %H:%M:%S" filename, 获取文件修改人员提交记录 (4) 根据第3步生成的结果文件,生成html报告并支持在线查看。 ![代码库变动记录概览](./img/image.png) ![代码库分支变动记录明细](./img/image-html-detail.png) ![代码库分支变动记录文件修改内容明细](./img/image-html-detail-show.png)