This invention discloses a Git warehouse similarity detection method based on the history of code submission. First, we need to build the Git environment, then get the project, pull the items that need detection and analysis through URL from the Git warehouse on the remote server and store it to the local Git warehouse; through the version of Git's version history function, get it The file content of all historical versions of the project, then the similarity between each adjacent version of the project by the file similarity analysis algorithm, determines the workload of the project submissions; it can also detect the similarity between the same requirements in different warehouses, by comparing the MD5 values of each file in the project and The similarity analysis of the project documents is used to judge the credibility of the project submissions. Finally, the source of the project is judged according to the calculation formula of the project authenticity. The invention can detect the authenticity of items in Git repository simply, quickly and effectively, so as to determine whether the project is original, reference or plagiarism. One
【技术实现步骤摘要】
一种基于代码提交历史的Git仓库相似性检测方法
本专利技术属于互联网和软件工程领域,具体涉及一种基于代码提交历史的Git仓库相似性检测方法。
技术介绍
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。每一个Git克隆都是一个完整的文件库,含有全部历史记录和修订追踪能力。其最大特色就是“分支”及“合并”操作快速、简便;支持离线工作,Git是整个项目范围的原子提交,而且Git中的每个工作树都包含一个具有完整项目历史的仓库。Git是一种非常流行的分布式版本控制系统,和其他版本控制系统相比,主要是和SVN相比较,Git的主要优势在于以下几个方面:1)版本库本地化,支持离线提交,相对独立不影响协同开发。每个开发者都拥有自己的版本控制库,在自己的版本库上可以任意的执行提交代码、创建分支等行为。例如,开发者认为自己提交的代码有问题,因为版本库是自己的,回滚历史、反复提交、归并分支并不会影响到其他开发者。2)更少的“仓库污染”。Git对于每个工程只会产生一个.git目录,这个工程所有的版本控制信息都在这个目录中,不会像SVN那样在每个目录下都产生.svn目录。3)把内容按元数据方式存储,完整克隆版本库。所有版本信息位于.git目录中,它是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签、分支、版本记录等。4)支持快速切换分支方便合并,比较合并性能好。在同一目录下即可切换不同的分支,方便合并,且合并文件速度比S ...
【技术保护点】
1.一种基于代码提交历史的Git仓库相似性检测方法,其特征在于,包含以下步骤:
【技术特征摘要】
1.一种基于代码提交历史的Git仓库相似性检测方法,其特征在于,包含以下步骤:步骤1:搭建和配置Git环境,下载Git软件并安装,配置环境变量,确认安装成功;步骤2:获取项目历史版本提交记录编号;步骤3:进行同一仓库项目历史版本之间的相似性分析;步骤4:进行不同仓库同一需求项目之间的相似性分析;步骤5:分析项目是原创、借鉴或者抄袭。2.根据权利要求1所述的基于代码提交历史的Git仓库相似性检测方法,其特征在于步骤2具体包括以下步骤:21)通过url从远程服务器上的Git仓库中克隆整个项目到本地仓库并初始化该仓库;22)与本地仓库建立连接并打开该连接;23)通过Git的log历史记录命令获取所有的历史提交记录集合;24)遍历步骤23中获取的集合,获取所有版本的历史提交记录编号。3.根据权利要求1所述的基于代码提交历史的Git仓库相似性检测方法,其特征在于步骤3具体包括以下步骤:31)通过较新版本的历史提交记录编号获取本次所有提交的修改文件;32)通过历史版本的历史提交记录编号获取步骤31获取的修改文件对应的原始文件;33)对步骤31和步骤32获取的两个文件进行diff操作,使用文件相似性分析算法分析比较文件,标记文件内容是相等标记、插入标记或者是删除标记,获取分析结果diff标记集合;34)遍历步骤33中获取的diff标记集合,分别统计删除标记、相等标记和插入标记行数,如果遇到删除标记,则记录删除标记的行数并与历史删除记录行数相加;如果遇到相等标记,则记录相等标记行数并与历史相等记录行数相加;如果遇到插入标记,则记录插入标记行数并与历史插入记录行数相加;最后将删除标记行数和相等标记行数相加,作为总行数;35)通过步骤31计算文件修改数量,视为工作量;将步骤34统计的插入行数视为工作量。4.根据权利要求1所述的基于代码提交历史的Git仓库相似性检测方法,其特征在于步骤4具体包括以下步骤:41)首先计算项目中每个文件的MD5值,然后逐一比对文件的MD5值,如果有MD5值相等,则可初步得出判定,该项目为非自主完成;然后逐一检测每一个文件的相似性;42)对两个文件进行diff标记操作,使用文件相似性分析算法分析比较文件,标记文件内容是相等标记...
【专利技术属性】
技术研发人员:张卫丰,申玉江,诸葛文杜,
申请(专利权)人:南京邮电大学,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。