CN113590186A - 一种根据权限控制客户端下载代码提交历史的方法及系统 - Google Patents
一种根据权限控制客户端下载代码提交历史的方法及系统 Download PDFInfo
- Publication number
- CN113590186A CN113590186A CN202111147031.6A CN202111147031A CN113590186A CN 113590186 A CN113590186 A CN 113590186A CN 202111147031 A CN202111147031 A CN 202111147031A CN 113590186 A CN113590186 A CN 113590186A
- Authority
- CN
- China
- Prior art keywords
- code
- submission
- user
- deadline
- download
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Automation & Control Theory (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种根据权限控制客户端下载代码提交历史的方法及系统,该方法包括:在代码仓库的服务端为每一个用户设置权限,所述权限由截止时间和提交深度界定;其中,截止时间用于限制用户只能下载在截止时间前的代码提交对象;提交深度用于限制用户可以下载的代码提交对象的数量;从代码仓库的客户端向服务端发起拉取代码提交对象的请求;服务端从所述请求中解析获得用户信息和代码仓库信息,并根据用户权限将相应的代码提交对象打包传输给客户端。本发明,在代码仓库的服务端上为不同的用户设置权限,根据用户权限限制其只能拉取到与其权限对应的代码提交对象历史,提高了代码的安全性。
Description
技术领域
本发明涉及分布式代码版本控制技术领域,具体涉及一种根据权限控制客户端下载代码提交历史的方法及系统,用于限制用户利用客户端从远程代码仓库下载代码全部提交历史版本。
背景技术
Git目前是全球使用最广泛的分布式代码版本控制工具,目前主流的代码仓库都使用Git进行版本控制,实现代码的历史管理。
Git要求每个代码仓库都保留一份完整的副本,每次向远程代码仓库同步时,都会拉取所有的代码提交历史。例如:用户可以使用gitclone下载Git服务端的最新版本以及所有的提交历史,或使用gitpull、gitfetch命令增量同步Git服务端上新的提交历史。这样就产生了以下问题:
有些企业的软件代码是由企业内部开发者和企业外部开发者共同协作完成的,因此,希望外部开发者只能看到指定版本前的代码,而看不到正在开发的新代码,以避免新功能泄露,保证代码安全。但是,由于现有的代码仓库在客户端拉取代码时,都会向客户端增量推送所有的提交历史,以保证客户端本地拥有完整的提交历史。因而导致了,每个开发者都能够获取到最新的代码,企业不能在代码仓库里根据权限控制客户端下载代码提交历史以限制开发者获得代码的全部提交历史。
虽然,GitClone命令提供了浅克隆功能,例如,--shallow-since:从指定时间开始克隆提交历史;--depth:从shallow-since指定的时间往前(不指定则为当前时间)克隆指定深度数量的提交历史。但这是用户在客户端上的自己实施的行为,并不能限制用户使用完整克隆方式从代码仓库下载全部提交历史,仍然面临代码安全的问题。
有鉴于此,需要对现有的客户端多代码仓库拉取提交历史的方法进行改进,对代码的提交历史进行权限控制,提高代码的安全性。
发明内容
针对上述缺陷,本发明所要解决的技术问题在于提供一种根据权限控制客户端下载代码提交历史的方法及系统,以解决现有技术每个开发者都能够获取到代码所有提交历史,包括最新代码,进而存在代码安全性的问题。
为此,本发明提供了一种根据权限控制客户端下载代码提交历史的方法,包括以下步骤:
在代码仓库的服务端为每一个用户设置权限,所述权限由截止时间和提交深度界定;其中,截止时间用于限制用户只能下载在截止时间前的代码提交对象;提交深度用于限制用户可以下载的代码提交对象的数量;
从客户端向服务端发起拉取代码提交对象的请求;
服务端从所述请求中解析获得用户信息和代码仓库信息,并根据用户权限从相应的代码仓库获取相应的代码提交对象,打包传输给客户端。
在上述方法中,优选地,所述截止时间不指定,则使用当前时间作为所述截止时间;所述提交深度不指定,则所述权限为可下载截止时间前的所有代码提交对象。
在上述方法中,优选地,客户端使用Http或SSH发起拉取代码提交对象的请求。
在上述方法中,优选地,所述提交深度为N,所述权限为从所述截止时间开始往前下载N个代码提交对象。
在上述方法中,优选地,如果一个代码提交对象存在多个上次代码提交对象时,优先选择提交时间较新的代码提交对象。
本发明还提供了一种根据权限控制客户端下载代码提交历史的系统,包括:
用户管理模块,设置在代码仓库的服务端上,用于为每一个用户设置权限,所述权限由截止时间和提交深度界定;其中,截止时间用于限制用户只能下载在截止时间前的代码提交对象;提交深度用于限制用户可以下载的代码提交对象的数量;
请求模块,设置在客户端上,用于向服务端发起拉取代码提交对象的请求;
处理模块,设置在服务端上,用于从所述请求中解析获得用户信息和代码仓库信息,并根据用户权限将相应的代码提交对象打包传输给客户端。
在上述系统中,优选地,所述客户端使用Http或SSH发起拉取代码提交对象的请求。
在上述系统中,优选地,所述截止时间不指定,则使用当前时间作为所述截止时间;所述提交深度不指定,则所述权限为可下载截止时间前的所有代码提交对象。
在上述系统中,优选地,所述提交深度为N,所述权限为从所述截止时间开始往前下载N个代码提交对象。
在上述系统中,优选地,所述处理模块判断,如果一个代码提交对象存在多个上次代码提交对象时,优先选择提交时间较新的代码提交对象。
由上述技术方案可知,本发明提供的一种根据权限控制客户端下载代码提交历史的方法及系统,解决了现有技术不能在代码仓库里限制开发者获得代码的全部提交历史的问题。与现有技术相比,本发明具有以下有益效果:
在代码仓库的服务端上为不同的用户设置权限,根据用户权限限制其只能拉取到与其权限对应的代码提交对象历史,提高了代码的安全性。
附图说明
为了更清楚地说明本发明的实施例或现有技术中的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图做出简单地介绍和说明。显而易见地,下面描述中的附图仅仅是本发明的部分实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种根据权限控制客户端下载代码提交历史的方法流程图;
图2为本发明提供的一种根据权限控制客户端下载代码提交历史的系统示意图。
具体实施方式
下面将结合本发明实施例附图,对本发明实施例的技术方案进行清楚、完整地描述,显然,以下所描述的实施例,仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下,所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实现原理是:
在代码仓库的服务端为每一个用户设置权限,所述权限由截止时间和提交深度界定;其中,截止时间用于限制用户只能下载在截止时间前的代码提交对象;提交深度用于限制用户可以下载的代码提交对象的数量;
根据用户权限从代码仓库获取相应的代码提交对象,打包传输给客户端。
本发明提供的方案,在代码仓库里限制开发者获得代码的全部提交历史,提高了代码安全性。
为了对本发明的技术方案和实现方式做出更清楚地解释和说明,以下介绍实现本发明技术方案的几个优选的具体实施例。
需要说明的是,本文中“内、外”、“前、后”及“左、右”等方位词是以产品使用状态为基准对象进行的表述,显然,相应方位词的使用对本方案的保护范围并非构成限制。
具体实施例1。
如图1所示,本具体实施例1提供一种根据权限控制客户端下载代码提交历史的方法,包括以下步骤:
步骤110,为每一个用户设置可以从代码仓库下载代码历史的权限,并保存在代码仓库的服务端上,可以保存在用户列表中或者用户数据库中,该权限由截止时间和提交深度两个参数界定。
在Git中提交代码时,会保存一个代码提交对象(commit),每次提交代码都会新建一个代码提交对象,并且代码提交对象会包含一个指向上次代码提交对象(parent)的指针,parent指针指向上次提交的结点。
其中,截止时间用于限制用户只能下载在截止时间前提交的代码提交;提交深度用于限制用户可以下载的代码提交对象的数量,例如提交深度为N,则用户的权限为从截止时间开始往前下载N个代码提交对象,N为正整数。
截止时间不指定,则使用当前时间作为截止时间;
提交深度不指定,则用户的权限为可下载截止时间前的所有代码提交对象。
步骤120,用户利用客户端向代码仓库的服务端发起拉取代码提交对象的请求。
可以使用Http或SSH发起拉取代码提交对象的请求。
步骤130,服务端收到请求后,从该请求中解析获得用户信息和代码仓库信息,并查询获得该用户的权限,再根据该用户的权限从相应的代码仓库获取相应的代码提交对象,打包传输给客户端。
具体地,服务端收到从客户端发出的拉取代码提交对象的请求后,从该请求中解析获得用户信息和代码仓库信息后,查询该用户在代码仓库的权限。
根据权限获得该用户对应的截止时间和提交深度。
在代码仓库中寻找截止时间前最新的一次commit。
服务端利用每一个代码提交对象中的上次代码提交对象的parent指针,往前递归查询从该截止时间开始与提交深度数量对应的代码提交对象,如果一个代码提交对象存在多个parent指针,则优先选择提交时间较新的代码提交对象。
服务端将查询到的所有代码提交对象打包发送给客户端,实现客户端只能下载与其权限相匹配的代码提交对象,即只能下载有权限的代码提交历史。
如图2所示,基于上述方法,本发明还提供了一种根据权限控制客户端下载代码提交历史的系统,包括:
用户管理模块11,设置在代码仓库30的服务端10上,用于为每一个用户设置权限,并保存在服务端10上,用户的权限由对应每个代码项目的截止时间和提交深度界定。
其中,截止时间用于限制用户只能下载在截止时间前的代码提交对象;提交深度用于限制用户可以下载的代码提交对象的数量。
请求模块21,设置在客户端20上,用于向服务端10发起从代码仓库30拉取代码提交对象的请求。
处理模块12,设置在服务端10上,用于从收到的请求中解析获得用户信息和代码仓库信息,并根据用户权限从相应的代码仓库中获取相应的代码提交对象,并打包传输给客户端20。
综合以上具体实施例的描述,本发明提供的一种根据权限控制客户端下载代码提交历史的方法及系统,与现有技术相比,具有如下优点:
第一,在代码仓库的服务端为每一个用户设置权限,用户利用客户端从代码仓库拉取代码时,服务端根据用户权限将相应的代码提交对象打包传输给客户端。不同的用户,由于权限不同只能获取到不同的代码历史,解决了例如外部开发者只能看到指定版本前的代码,而看不到正在开发的新代码,以避免新功能泄露,实现了代码的安全管控。
第二,利用Git本身的截止时间和提交深度实现,代码仓库的构架不变,开发设计简单,实现方便。
最后,还需要说明的是,在本文中使用的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明并不局限于上述最佳实施方式,任何人应该得知在本发明的启示下做出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
Claims (10)
1.一种根据权限控制客户端下载代码提交历史的方法,其特征在于,包括以下步骤:
在代码仓库的服务端为每一个用户设置权限,所述权限由截止时间和提交深度界定;其中,截止时间用于限制用户只能下载在截止时间前的代码提交对象;提交深度用于限制用户可以下载的代码提交对象的数量;
从客户端向服务端发起拉取代码提交对象的请求;
服务端从所述请求中解析获得用户信息和代码仓库信息,并根据用户权限从相应的代码仓库获取相应的代码提交对象,打包传输给客户端。
2.根据权利要求1所述的方法,其特征在于,
所述截止时间不指定,则使用当前时间作为所述截止时间;
所述提交深度不指定,则所述权限为可下载截止时间前的所有代码提交对象。
3.根据权利要求1所述的方法,其特征在于,客户端使用Http或SSH发起拉取代码提交对象的请求。
4.根据权利要求1所述的方法,其特征在于,所述提交深度为N,所述权限为从所述截止时间开始往前下载N个代码提交对象,N为正整数。
5.根据权利要求1所述的方法,其特征在于,如果一个代码提交对象存在多个上次代码提交对象时,优先选择提交时间较新的代码提交对象。
6.一种根据权限控制客户端下载代码提交历史的系统,其特征在于,包括:
用户管理模块,设置在代码仓库的服务端上,用于为每一个用户设置权限,所述权限由截止时间和提交深度界定;其中,截止时间用于限制用户只能下载在截止时间前的代码提交对象;提交深度用于限制用户可以下载的代码提交对象的数量;
请求模块,设置在客户端上,用于向服务端发起拉取代码提交对象的请求;
处理模块,设置在服务端上,用于从所述请求中解析获得用户信息和代码仓库信息,并根据用户权限从代码仓库获取相应的代码提交对象,打包传输给客户端。
7.根据权利要求6所述的系统,其特征在于,所述客户端使用Http或SSH发起拉取代码提交对象的请求。
8.根据权利要求6所述的系统,其特征在于,
所述截止时间不指定,则使用当前时间作为所述截止时间;
所述提交深度不指定,则所述权限为可下载截止时间前的所有代码提交对象。
9.根据权利要求6所述的系统,其特征在于,所述提交深度为N,所述权限为从所述截止时间开始往前下载N个代码提交对象。
10.根据权利要求6所述的系统,其特征在于,所述处理模块判断,如果一个代码提交对象存在多个上次代码提交对象时,优先选择提交时间较新的代码提交对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111147031.6A CN113590186A (zh) | 2021-09-29 | 2021-09-29 | 一种根据权限控制客户端下载代码提交历史的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111147031.6A CN113590186A (zh) | 2021-09-29 | 2021-09-29 | 一种根据权限控制客户端下载代码提交历史的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113590186A true CN113590186A (zh) | 2021-11-02 |
Family
ID=78242459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111147031.6A Pending CN113590186A (zh) | 2021-09-29 | 2021-09-29 | 一种根据权限控制客户端下载代码提交历史的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590186A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756553A (zh) * | 2023-01-09 | 2023-03-07 | 傲网信息科技(厦门)有限公司 | 一种软件服务器更新方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3061044A1 (en) * | 2013-10-24 | 2016-08-31 | Siemens AG Österreich | Method for the generation of conjoint domain models for system-of-systems |
CN109032592A (zh) * | 2018-08-23 | 2018-12-18 | 常熟市盛铭信息技术有限公司 | 一种软件代码互相共享的方法 |
CN110231945A (zh) * | 2019-05-20 | 2019-09-13 | 深圳壹账通智能科技有限公司 | 代码下载的方法、装置、电子设备及计算机存储介质 |
CN111045725A (zh) * | 2019-12-16 | 2020-04-21 | 广州唯品会信息科技有限公司 | 代码管理系统的控制方法、装置及存储介质 |
CN113138794A (zh) * | 2021-04-28 | 2021-07-20 | 河南中烟工业有限责任公司 | 一种代码版本的管理方法和管理系统 |
-
2021
- 2021-09-29 CN CN202111147031.6A patent/CN113590186A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3061044A1 (en) * | 2013-10-24 | 2016-08-31 | Siemens AG Österreich | Method for the generation of conjoint domain models for system-of-systems |
CN109032592A (zh) * | 2018-08-23 | 2018-12-18 | 常熟市盛铭信息技术有限公司 | 一种软件代码互相共享的方法 |
CN110231945A (zh) * | 2019-05-20 | 2019-09-13 | 深圳壹账通智能科技有限公司 | 代码下载的方法、装置、电子设备及计算机存储介质 |
CN111045725A (zh) * | 2019-12-16 | 2020-04-21 | 广州唯品会信息科技有限公司 | 代码管理系统的控制方法、装置及存储介质 |
CN113138794A (zh) * | 2021-04-28 | 2021-07-20 | 河南中烟工业有限责任公司 | 一种代码版本的管理方法和管理系统 |
Non-Patent Citations (1)
Title |
---|
范智鹏主编: "《计算机应用技术》", 31 July 2018, 哈尔滨工程大学出版社 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756553A (zh) * | 2023-01-09 | 2023-03-07 | 傲网信息科技(厦门)有限公司 | 一种软件服务器更新方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647083B (zh) | 任务执行方法、装置、系统、电子设备及计算机可读介质 | |
CN108874680B (zh) | 一种自动化的软件测试方法及系统 | |
US6993748B2 (en) | Systems and methods for table driven automation testing of software programs | |
US8996465B2 (en) | Replicating data to a database | |
US20030233376A1 (en) | Method and apparatus for exchanging communications between heterogeneous applications | |
CN110888721A (zh) | 一种任务调度的方法及相关装置 | |
US20190121882A1 (en) | Systems, devices, and methods for content indexing and querying in a search system | |
US10282690B1 (en) | Mainframe workflow manager system and method | |
CN111176858A (zh) | 一种数据请求处理方法及装置 | |
WO2013171481A2 (en) | Mechanism for synchronising devices, system and method | |
US20120131062A1 (en) | Systems and Methods for Generating Customizing Documentation | |
CN113590186A (zh) | 一种根据权限控制客户端下载代码提交历史的方法及系统 | |
CN112965785A (zh) | 基于容器的微服务应用开发方法及开发平台 | |
CN109683905A (zh) | 一种系统自动发布方法 | |
US20160088014A1 (en) | Methods, systems, and apparatus for mitigating network-based attacks | |
WO2021091495A1 (en) | Method for inquiring weather data, and electronic device and storage medium thereof | |
CN114691779A (zh) | 数据同步方法和系统、计算机可读存储介质 | |
US20130212147A1 (en) | Apparatus and method for creating mashup web application | |
CN107657002A (zh) | 文件同步方法及装置 | |
US10122803B2 (en) | Network data transmission method, device and system | |
EP1973039A2 (en) | Error handling for intermittently connected mobile applications | |
US20050289539A1 (en) | Central installation, deployment, and configuration of remote systems | |
US20090075643A1 (en) | System and method of object simulation in an intermittently connected mobile application | |
CN117149270A (zh) | 跨硬件平台的模型文件的生成方法、系统及相关设备 | |
CN110321462A (zh) | 信息动态更新方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20211102 |
|
RJ01 | Rejection of invention patent application after publication |