基于Git的代码库控制方法、装置、电子设备与流程
未命名
07-23
阅读:108
评论:0
基于git的代码库控制方法、装置、电子设备
技术领域
1.本公开涉及计算机技术领域,尤其涉及一种基于git的代码库控制方法、装置、电子设备。
背景技术:
2.相关技术中,通常通过git(the stupid content tracker,傻瓜内容跟踪器)实现代码数据版本控制,且git不支持代码库目录级的权限控制。但是,对于一些大型项目或者从svn(subversion)迁移至git的项目,其代码库拥有的目录文件通常较多,如何在git的基础上实现代码库目录级的权限控制,已成为亟需解决的问题。
技术实现要素:
3.本公开提供一种基于git的代码库控制方法、装置、电子设备,以至少解决相关技术中不能在git的基础上实现代码库目录级的权限控制的问题。本公开的技术方案如下:
4.根据本公开实施例的第一方面,提供一种基于git的代码库控制方法,包括:
5.在检测到用户的推送操作的情况下,通过服务端的钩子函数获取所述推送操作;其中,所述推送操作包括针对目标分支的变更操作,所述目标分支包括至少一个目录;
6.在所述目标分支中的所述目录满足预设目录保护条件的情况下,拦截所述推送操作;其中,所述预设目标保护目录条件用于指示所述用户不能变更的目录。
7.在一种可能的实施方式中,所述预设目录保护条件包括保护目录,所述保护目录为一个或多个。
8.在一种可能的实施方式中,所述在所述目标分支中的所述目录满足预设目录保护条件的情况下,拦截所述推送操作,包括:
9.确定所述目标分支中的所述目录是否包括至少一个所述保护目录;
10.在所述目标分支中的所述目录包括至少一个所述保护目录的情况下,拦截所述推送操作。
11.在一种可能的实施方式中,所述在所述目标分支中的所述目录包括至少一个所述保护目录的情况下,拦截所述推送操作,包括:
12.在所述目标分支中的所述目录包括至少一个所述保护目录的情况下,获取所述推送操作的变更目录信息;其中,所述变更目录信息包括至少一个进行变更操作的变更目录;
13.确定所述变更目录是否包括至少一个所述保护目录;
14.在所述变更目录包括至少一个所述保护目录的情况下,拦截所述推送操作。
15.在一种可能的实施方式中,所述确定所述变更目录是否包括至少一个所述保护目录,包括:
16.将所述变更目录信息放置于临时目录;其中,所述临时目录是一个与所述变更目录信息隔离的目录;
17.在所述临时目录中确定所述变更目录是否包括至少一个所述保护目录。
18.在一种可能的实施方式中,所述在所述临时目录中确定所述变更目录是否包括至少一个所述保护目录,包括:
19.在所述临时目录中调用gitlab确定所述变更目录是否包括至少一个所述保护目录。
20.在一种可能的实施方式中,所述在所述变更目录包括至少一个所述保护目录的情况下,拦截所述推送操作之后,所述方法还包括:
21.删除所述临时目录。
22.根据本公开实施例的第二方面,提供一种基于git的代码库控制装置,包括:
23.操作获取模块,被配置为在检测到用户的推送操作的情况下,通过服务端的钩子函数获取所述推送操作;其中,所述推送操作包括针对目标分支的变更操作,所述目标分支包括至少一个目录;
24.操作拦截模块,被配置为在所述目标分支中的所述目录满足预设目录保护条件的情况下,拦截所述推送操作;其中,所述预设目标保护目录条件用于指示所述用户不能变更的目录。
25.在一种可能的实施方式中,所述预设目录保护条件包括保护目录,所述保护目录为一个或多个。
26.在一种可能的实施方式中,所述操作拦截模块,包括:
27.保护目录确定单元,被配置为确定所述目标分支中的所述目录是否包括至少一个所述保护目录;
28.操作拦截单元,被配置为在所述目标分支中的所述目录包括至少一个所述保护目录的情况下,拦截所述推送操作。
29.在一种可能的实施方式中,所述操作拦截单元,包括:
30.信息获取子单元,被配置为在所述目标分支中的所述目录包括至少一个所述保护目录的情况下,获取所述推送操作的变更目录信息;其中,所述变更目录信息包括至少一个进行变更操作的变更目录;
31.保护目录确定子单元,被配置为确定所述变更目录是否包括至少一个所述保护目录;
32.操作拦截子单元,被配置为在所述变更目录包括至少一个所述保护目录的情况下,拦截所述推送操作。
33.在一种可能的实施方式中,所述保护目录确定子单元,具体被配置为:
34.将所述变更目录信息放置于临时目录;其中,所述临时目录是一个与所述变更目录信息隔离的目录;
35.在所述临时目录中确定所述变更目录是否包括至少一个所述保护目录。
36.在一种可能的实施方式中,所述保护目录确定子单元,具体还被配置为:
37.在所述临时目录中调用gitlab确定所述变更目录是否包括至少一个所述保护目录。
38.在一种可能的实施方式中,所述装置还包括:
39.目录删除模块,被配置为删除所述临时目录。
40.根据本公开实施例的第三方面,提供一种电子设备,包括:
41.处理器;
42.用于存储所述处理器可执行指令的存储器;
43.其中,所述处理器被配置为执行所述指令,以实现如第一方面中任一项所述的基于git的代码库控制方法。
44.根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面中任一项所述的基于git的代码库控制方法。
45.根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第一方面中任一项所述的基于git的代码库控制方法。
46.本公开的实施例提供的技术方案至少带来以下有益效果:
47.在本公开的实施例中,通过在检测到用户的推送操作的情况下,通过服务端的钩子函数获取推送操作,其中,推送操作包括针对目标分支的变更操作,目标分支包括至少一个目录;然后,在目标分支中的目录满足预设目录保护条件的情况下,拦截推送操作,其中,预设目标保护目录条件用于指示用户不能变更的目录。这样,可以利用服务端钩子函数的特性,定义保护目录条件,将用户对目标分支的目录进行了变更操作但用户不具有前述目录的变更权限的推送操作,进行拦截。如此,可以在git的基础上实现代码库的目录级的权限精细化控制,解决了相关技术中的局限性;同时,还可以提高代码库中代码的安全性。
48.而且,本公开实施例提供的方法具有普适性,只需要简单的配置就可以使用,成本较低。
49.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
50.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
51.图1是根据一示例性实施例示出的一种基于git的代码库控制方法的流程图。
52.图2是根据一示例性实施例示出的一种目录和用户间的权限关系示意图。
53.图3是根据一示例性实施例示出的另一种基于git的代码库控制方法的流程图。
54.图4是根据一示例性实施例示出的一种基于git的代码库控制装置的框图。
55.图5是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
56.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
57.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面
相一致的装置和方法的例子。
58.下面结合附图对本公开实施例提供的基于git的代码库控制方法、装置、电子设备进行详细说明。
59.图1是根据一示例性实施例示出的一种基于git的代码库控制方法的流程图。如图1所示,基于git的代码库控制方法可以包括以下步骤。
60.在步骤s101中,在检测到用户的推送操作的情况下,通过服务端的钩子函数获取推送操作。
61.其中,推送操作包括针对目标分支的变更操作,目标分支包括至少一个目录。
62.在本公开实施例中,用户在对代码库的某个分支(即目标分支)进行变更操作之后,可以将对该分支的变更操作通过推送操作的方式推送至服务端。服务端可以周期性或者实时检测是否接收到推送操作,如果检测到用户的推送操作,则可以在接收用户的推送操作之前,通过钩子获取该推送操作。可以理解的,通过服务端的钩子函数获取推送操作也可以理解为临时拦截该推送操作。
63.在步骤s102中,在目标分支中的目录满足预设目录保护条件的情况下,拦截推送操作。
64.其中,预设目标保护目录条件用于指示用户不能变更的目录。可以理解的,前述用户可以仅是上述步骤101中的用户,或者也可以包括其他用户。
65.在本公开的实施例中,在检测到用户的推送操作的情况下,通过服务端的钩子函数获取推送操作之后,可以获取推送操作中目标分支下的目录,示例性的,可以获取目标分支下的所有目录。然后,可以将目标分支下的目录与预设目录保护条件进行比对,以确定目标分支下的目录是否满足预设保护目录条件,即确定目标分支下的目录中是否包括推送该推送操作的用户不能执行变更操作的目录,也即确定前述用户是否具有变更该目标分支下的目录的权限。如果目标分支中的目录满足预设目标保护条件,例如,目标分支下的目录至少有一个是满足预设目录保护条件的目录,则可以认为目标分支下的目录中包括推送该推送操作的用户不能执行变更操作的目录,也即前述用户不具有变更该目标分支下的目录的权限,此时,则可以拦截该推送操作。反之,则可以将该推送操作正常推送至服务端。可以理解的,通过钩子函数确定目标分支中的目录是否满足预设目录保护条件之后,如果满足预设目录保护条件,则可以以非零值输出,反之可以以零值输出。如此,可以利用服务端钩子函数的特性,定义保护目录条件,在变更操作被应用之前进行检测和拦截,在检测到保护目录发生变更的情况下,进行推送操作拦截。
66.在本公开的实施例中,通过在检测到用户的推送操作的情况下,通过服务端的钩子函数获取推送操作,其中,推送操作包括针对目标分支的变更操作,目标分支包括至少一个目录;然后,在目标分支中的目录满足预设目录保护条件的情况下,拦截推送操作,其中,预设目标保护目录条件用于指示用户不能变更的目录。这样,可以利用服务端钩子函数的特性,定义保护目录条件,将用户对目标分支的目录进行了变更操作但用户不具有前述目录的变更权限的推送操作,进行拦截。如此,可以在git的基础上实现代码库的目录级的权限精细化控制,解决了相关技术中的局限性;同时,还可以提高代码库中代码的安全性。
67.而且,本公开实施例提供的方法具有普适性,只需要简单的配置就可以使用,成本较低。
68.在一种可能的实施方式中,预设目录保护条件可以包括保护目录,保护目录为一个或多个。示例性的,保护目录可以是所有用户都不能进行变更操作;或者,还可以对保护目录添加具有变更权限的用户标识,以限定仅有部分用户能够对保护目录进行变更操作;再或者,还可以对保护目录添加不具有变更权限的用户标识,以限定仅有部分用户不能对保护目录进行变更操作。以图2为例,图2示出了一种目录和用户间的权限关系,如图2所示,图2中代码仓库p表示代码库,图2中每个团队可以包括一个或多个用户,可以为团队a设置目录x作为保护目录,也即只有团队a的用户具有对目录x进行变更操作的权限;同样的,可以为团队b设置目录y作为保护目录,也即只有团队b的用户具有对目录y进行变更操作的权限;对于目录z,属于公共内容,可能作用范围较小,需要修改的频率较高且重要程度不高,如果每次都需要提交合并请求申请,然后再需要代码评审核准,整个流程和效率就会降低,不对文件z做额外的权限控制,团队a、b可直接推送提交修改,提高部分场景下研发交付效率,或者可以设置仅有团队b具有对目录z进行变更操作的权限,或者也可以设置除团队a外其他团队(包括团队b)具有对目录z进行变更操作的权限;对于自己不具有变更权限的目录则仅是只读,不可写;且团队a、团队b等所有的团队均可以正常读取下载项目代码仓库p,所有的目录和文件读操作不受限制,可获取不同目录内容之间的关联关系,便于团队协作;。这样,可以更好更精确的确定用户是否由变更目标分支中目录的权限,以提高拦截推送操作的准确性,防止代码被篡改、错改等风险操作,保证了代码安全性和代码质量。
69.需要说明的是,如果用户想要修改自己不具有变更操作权限的目录,则可以发起代码合并请求,由具有权限的用户进行审批,如果审批通过,则可以进行变更操作,其具体实现方式与相关技术类似。例如,仍参见图2,团队a如果想修改目录y,则可以发起代码合并请求,由团队b对该代码合并请求进行代码审查核准,如果核准通过,团队a则可以修改目录y。
70.在一种可能的实施方式中,上述步骤中在目标分支中的目录满足预设目录保护条件的情况下,拦截推送操作的具体实现方式可以为:
71.确定目标分支中的目录是否包括至少一个保护目录;
72.在目标分支中的目录包括至少一个保护目录的情况下,拦截推送操作。
73.在本公开的实施例中,在目标分支中的目录满足预设目录保护条件的情况下,拦截推送操作时,可以先获取目标分支下的目录,该目录可能是一个也可能是多个,还可以获取预设目录保护条件包括的保护目录。然后,可以将目标分支下的目录与与保护目录进行比对,以确定目标分支的目录是否包括一个或多个保护目录。如果目标分支中的目录包括至少一个保护目录,则可以认为用户可能变更了不具有变更权限的目录,此时,可以拦截该推送操作。以目标分支下的目录包括目录1、目录2、目录3、目录4、目录5、目录6、目录7、目录8、目录9,保护目录包括目录3、目标6、目标10、目标15为例,则可以确定目标分支下的目录包括两个保护目录分别为目录3和目录6,可以拦截推送操作。如此,通过目标分支中的目录和保护目录的依次比对,可以提高拦截推送操作的准确性,进一步提高代码库代码的安全性。
74.在进一步可能的实施方式中,上述步骤中在目标分支中的目录包括至少一个保护目录的情况下,拦截推送操作,包括:
75.在目标分支中的所述目录包括至少一个保护目录的情况下,获取推送操作的变更
目录信息;
76.确定变更目录是否包括至少一个保护目录;
77.在变更目录包括至少一个保护目录的情况下,拦截推送操作。
78.其中,变更目录信息包括至少一个进行变更操作的变更目录,变更目录信息可以是列表形式。
79.在本公开的实施例中,考虑到目标分支中可能包括多个目录,用户可能不会对目标分支下的全部目录进行变更操作,目标分支下的目录中属于保护目录的目录可能未被用户变更过。故而,在目标分支中的目录包括至少一个保护目录的情况下,可以先获取推送操作的变更目标信息,也即获取用户对目标分支的目录中进行变更操作的目录信息,即变更目录信息,变更目录信息可以是变更目录列表,该变更目录列表中可以包括一个或多个变更目录。然后,可以将变更目录与保护目录进行比对,以确定变更目录中是否包括保护目录。如果变更目录中包括一个或多个保护目录,则可以认为用户变更了自己不具有变更权限的目录,拦截推送操作。这样,可以进一步确保仅在用户变更了自己不具有变更权限的目录的情况下,才拦截用户的推送操作,从而提高代码库操作的准确性,避免出现误拦截推送操作的情况发生。
80.在进一步可能的实施方式中,上述步骤中确定变更目录是否包括至少一个保护目录的具体实现方式可以如下:
81.将变更目录信息放置于临时目录;其中,临时目录是一个与变更目录信息隔离的目录;
82.在临时目录中确定变更目录是否包括至少一个保护目录。
83.在本公开的实施例中,可以在一个单独的临时目录中,确定变更目录是否包括至少一个保护目录。其中,临时目录可以是一个与变更目录信息隔离的临时目录,即可以在隔离的临时目录中进行推送操作中变更目录的检测。如果变更目录命中保护目录,则可以拦截推送操作。反之,则可以将推送操作正常推送到git服务端,完成推送。如此,可以在隔离的临时目录中完成对推送操作的变更操作信息检测。
84.在进一步可能的实施方式中,在临时目录中确定变更目录是否包括至少一个保护目录的具体实现方式可以如下:
85.在临时目录中调用gitlab确定变更目录是否包括至少一个保护目录。
86.在本公开的实施例中,在临时目录中确定变更目录是否包括至少一个保护目录时,可以在临时目录中调用gitlab确定变更目录是否包括至少一个保护目录。其中,gitlab是基于git的代码托管工具平台。这样,可以通过回调gitlab进行变更目录的权限检测,也即可以在隔离的临时目录中回调gitlab确定变更目录是否命中保护目录。如此,可以在gitlab实现对代码库的指定目录进行保护目录规则设置,然后在git服务端对推送操作的变更操作信息检测,利用git服务端钩子函数回调gitlab进行变更文件的保护目录权限验证,进而实现git推送内容的目录级权限控制。
87.在进一步可能的实施方式中,在变更目录包括至少一个保护目录的情况下,拦截推送操作之后,本公开实施例提供的方法还可以包括如下处理:
88.删除临时目录。
89.在本公开的实施例中,在变更目录包括至少一个保护目录的情况下,拦截推送操
作之后,则可以删除前述临时目录。这样,能够避免重复的失败推送(即拦截推送操作)带来的大量垃圾对象,造成存储仓库的无效膨胀。
90.为使本公开实施例提供的方法更清楚,下面结合附图3对本公开实施例提供的基于git的代码库控制方法进行说明。如图3所示,包括如下步骤:
91.在步骤s301中,在检测到用户的推送操作的情况下,通过服务端的钩子函数获取推送操作。
92.在步骤s302中,确定目标分支中的目录是否包括至少一个保护目录。
93.如果目标分支中的目录包括至少一个保护目录,则执行步骤s303、s304,反之,执行步骤s305。
94.在步骤s303中,确定变更目录是否包括至少一个保护目录。
95.在步骤s304中,拦截推送操作。
96.在步骤s305中,推送推送操作。
97.本实施例的具体实现方式和技术效果与上述方法实施例类似,在此不再赘述。
98.基于相同的发明构思,本公开的实施例还提供了一种基于git的代码库控制装置,如图4所示,图4是根据一示例性实施例示出的一种基于git的代码库控制装置的框图。参照图4,该基于git的代码库控制装置400可以包括:
99.操作获取模块410,被配置为在检测到用户的推送操作的情况下,通过服务端的钩子函数获取所述推送操作;其中,所述推送操作包括针对目标分支的变更操作,所述目标分支包括至少一个目录;
100.操作拦截模块420,被配置为在所述目标分支中的所述目录满足预设目录保护条件的情况下,拦截所述推送操作;其中,所述预设目标保护目录条件用于指示所述用户不能变更的目录。
101.在一种可能的实施方式中,所述预设目录保护条件包括保护目录,所述保护目录为一个或多个。
102.在一种可能的实施方式中,所述操作拦截模块420,包括:
103.保护目录确定单元,被配置为确定所述目标分支中的所述目录是否包括至少一个所述保护目录;
104.操作拦截单元,被配置为在所述目标分支中的所述目录包括至少一个所述保护目录的情况下,拦截所述推送操作。
105.在一种可能的实施方式中,所述操作拦截单元,包括:
106.信息获取子单元,被配置为在所述目标分支中的所述目录包括至少一个所述保护目录的情况下,获取所述推送操作的变更目录信息;其中,所述变更目录信息包括至少一个进行变更操作的变更目录;
107.保护目录确定子单元,被配置为确定所述变更目录是否包括至少一个所述保护目录;
108.操作拦截子单元,被配置为在所述变更目录包括至少一个所述保护目录的情况下,拦截所述推送操作。
109.在一种可能的实施方式中,所述保护目录确定子单元,具体被配置为:
110.将所述变更目录信息放置于临时目录;其中,所述临时目录是一个与所述变更目
录信息隔离的目录;
111.在所述临时目录中确定所述变更目录是否包括至少一个所述保护目录。
112.在一种可能的实施方式中,所述装置400还包括:
113.目录删除模块,被配置为删除所述临时目录。
114.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
115.根据本公开的实施例,本公开还提供了一种电子设备、一种计算机可读存储介质和一种计算机程序产品。
116.图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。电子设备500旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
117.如图5所示,电子设备500包括计算单元501,其可以根据存储在只读存储器(rom)502中的计算机程序或者从存储单元508加载到随机访问存储器(ram)503中的计算机程序,来执行各种适当的动作和处理。在ram503中,还可存储设备500操作所需的各种程序和数据。计算单元501、rom502以及ram 503通过总线504彼此相连。输入/输出(i/o)接口505也连接至总线504。
118.电子设备500中的多个部件连接至i/o接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许电子设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
119.计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如基于git的代码库控制方法。例如,在一些实施例中,基于git的代码库控制方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由rom 502和/或通信单元509而被载入和/或安装到电子设备500上。当计算机程序加载到ram 503并由计算单元501执行时,可以执行上文描述的基于git的代码库控制方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行基于git的代码库控制方法。
120.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器
可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
121.用于实施本公开的方法的计算机程序产品的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
122.在本公开的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。计算机可读存储介质可以是机器可读信号介质或机器可读储存介质。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。计算机可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
123.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
124.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、互联网和区块链网络。
125.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务("virtual private server",或简称"vps")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
126.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
127.上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
技术特征:
1.一种基于git的代码库控制方法,其特征在于,包括:在检测到用户的推送操作的情况下,通过服务端的钩子函数获取所述推送操作;其中,所述推送操作包括针对目标分支的变更操作,所述目标分支包括至少一个目录;在所述目标分支中的所述目录满足预设目录保护条件的情况下,拦截所述推送操作;其中,所述预设目标保护目录条件用于指示所述用户不能变更的目录。2.根据权利要求1所述的基于git的代码库控制方法,其特征在于,所述预设目录保护条件包括保护目录,所述保护目录为一个或多个。3.根据权利要求2所述的基于git的代码库控制方法,其特征在于,所述在所述目标分支中的所述目录满足预设目录保护条件的情况下,拦截所述推送操作,包括:确定所述目标分支中的所述目录是否包括至少一个所述保护目录;在所述目标分支中的所述目录包括至少一个所述保护目录的情况下,拦截所述推送操作。4.根据权利要求2所述的基于git的代码库控制方法,其特征在于,所述在所述目标分支中的所述目录包括至少一个所述保护目录的情况下,拦截所述推送操作,包括:在所述目标分支中的所述目录包括至少一个所述保护目录的情况下,获取所述推送操作的变更目录信息;其中,所述变更目录信息包括至少一个进行变更操作的变更目录;确定所述变更目录是否包括至少一个所述保护目录;在所述变更目录包括至少一个所述保护目录的情况下,拦截所述推送操作。5.根据权利要求4所述的基于git的代码库控制方法,其特征在于,所述确定所述变更目录是否包括至少一个所述保护目录,包括:将所述变更目录信息放置于临时目录;其中,所述临时目录是一个与所述变更目录信息隔离的目录;在所述临时目录中确定所述变更目录是否包括至少一个所述保护目录。6.根据权利要求5所述的基于git的代码库控制方法,其特征在于,所述在所述临时目录中确定所述变更目录是否包括至少一个所述保护目录,包括:在所述临时目录中调用gitlab确定所述变更目录是否包括至少一个所述保护目录。7.根据权利要求5所述的基于git的代码库控制方法,其特征在于,所述在所述变更目录包括至少一个所述保护目录的情况下,拦截所述推送操作之后,所述方法还包括:删除所述临时目录。8.一种基于git的代码库控制装置,其特征在于,包括:操作获取模块,被配置为在检测到用户的推送操作的情况下,通过服务端的钩子函数获取所述推送操作;其中,所述推送操作包括针对目标分支的变更操作,所述目标分支包括至少一个目录;操作拦截模块,被配置为在所述目标分支中的所述目录满足预设目录保护条件的情况下,拦截所述推送操作;其中,所述预设目标保护目录条件用于指示所述用户不能变更的目录。9.一种电子设备,其特征在于,包括:处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6中任一项所述的基于git的代码库控制方法。10.一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如权利要求1至6中任一项所述的基于git的代码库控制方法。
技术总结
本公开关于一种基于Git的代码库控制方法、装置、电子设备。其中,所述方法,包括:在检测到用户的推送操作的情况下,通过服务端的钩子函数获取所述推送操作;其中,所述推送操作包括针对目标分支的变更操作,所述目标分支包括至少一个目录;在所述目标分支中的所述目录满足预设目录保护条件的情况下,拦截所述推送操作;其中,所述预设目标保护目录条件用于指示所述用户不能变更的目录。采用本公开实施例提供的基于Git的代码库控制方法,可以在Git的基础上实现代码库的目录级的权限精细化控制。基础上实现代码库的目录级的权限精细化控制。基础上实现代码库的目录级的权限精细化控制。
技术研发人员:谢晓浩 徐宁
受保护的技术使用者:北京达佳互联信息技术有限公司
技术研发日:2023.04.10
技术公布日:2023/7/21
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
