本发明涉及信息技术领域,具体而言,涉及一种源码版本控制方法、配置服务器、介质及电子设备。
背景技术:
在软件开发中,源码的管理是一个很重要的环节,源码管理一般借助专门用于管理源码版本的版本控制软件。版本控制软件的功能一般具有如下功能:
(1)源码共享。不同的人员,可以获取最新源码,在本机修改源码,然后把源码提交到版本控制服务器,合并别人的源码。
(2)权限控制。不同的人员,获取源码的范围有所区别。例如:开发投保功能的人员,只能应该看到投保功能的源码,不应该能看到服务功能的源码。对源码的权限也不相同,开发组长可以合并源码,提交源码到“主干”,但是普通开发人员不能提交源码到“主干”。
因此,现有技术中的技术方案中对于源码版本管理在共享和权项控制的管理方面比较繁琐,还存在有待改进之处。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:
本发明实施例的目的在于提供一种源码版本控制方法、配置服务器、源码版本控制管理端、介质及电子设备,进而至少在一定程度上克服现有的访问机制安全性差的缺点。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明实施例的第一方面,提供了一种源码版本控制方法,包括:
接收svn配置文件和用户配置文件;
对所述svn配置文件进行解析,并将解析的配置信息存储到指定目录下;
对所述用户配置文件通过执行预设命令生成代理服务器可识别的配置文件格式。
在本发明的示例性实施例中,其中所述svn配置文件为基于前端界面获取的用户信息进行配置得到的文件;所述用户配置文件为基于前端界面获取的权限信息进行配置得到的文件。
在本发明的示例性实施例中,所述对所述用户配置文件进行解析包括:
对所述用户配置文件中获取用户信息的参数,经过转码转化为utf-8无bom的格式的配置信息,其中所述用户信息的参数至少包括:用户名、密码、当前状态和角色。
在本发明的示例性实施例中,所述预设命令为java的runtime.getruntime().exec和apache中的htpasswd命令。
在本发明的示例性实施例中,所述可识别的配置文件格式为加密文件。
在本发明的示例性实施例中,所述基于前端界面获取的用户信息进行配置之前,还包括:通过前端界面进行用户管理配置,得到所述用户信息,具体包括:
在所述前端界面向管理员展示用户信息表,其中所述用户信息表的字段至少包括用户名、密码、当前状态和角色;
获取所述管理员在所述用户信息表中针对所述字段输入对应的值,其中所述用户信息表的格式为excel表;
根据所述用户信息表的字段和字段对应的值得到所述用户信息。
在本发明的示例性实施例中,所述基于前端界面获取的权限信息进行配置之前,还包括:
通过所述前端界面对用户访问的目录进行权限配置,得到所述权限信息,具体包括:
在所述前端界面向管理员展示应用列表,其中所述应用列表的字段至少包括svn路径、项目管理人、项目参与人以及所述项目管理人和所述项目参与人的权限;
获取所述管理员在所述应用列表中针对所述字段输入对应的值,其中所述应用列表的格式为excel表;
根据所述应用列表的字段和字段对应的值得到所述权限信息。
在本发明的示例性实施例中,还包括:
根据所述用户名和密码生成代理服务器可识别的配置文件。
根据本发明实施例的第二方面,提供了一种源码版本控制方法,包括:
通过前端界面进行用户管理配置,得到用户信息;
通过所述前端界面对用户访问的目录进行权限配置,得到权限信息;
根据所述用户信息和所述权限信息生成svn配置文件和用户配置文件;
将所述svn配置文件和所述用户配置文件发送给配置服务器,所述svn配置文件和所述用户配置文件用于由所述配置服务器接收并处理生成代理服务器可识别的配置文件格式。
在本发明的示例性实施例中,所述通过前端界面进行用户管理配置,得到用户信息包括:
在所述前端界面向管理员展示用户信息表,其中所述用户信息表的字段至少包括用户名、密码、当前状态和角色;
获取所述管理员在所述用户信息表中针对所述字段输入对应的值,其中所述用户信息表的格式为excel表;
根据所述用户信息表的字段和字段对应的值得到所述用户信息。
在本发明的示例性实施例中,通过所述前端界面对用户访问的目录进行权限配置,得到权限信息包括:
在所述前端界面向管理员展示应用列表,其中所述应用列表的字段至少包括svn路径、项目管理人、项目参与人以及所述项目管理人和所述项目参与人的权限;
获取所述管理员在所述应用列表中针对所述字段输入对应的值,其中所述应用列表的格式为excel表;
根据所述应用列表的字段和字段对应的值得到所述权限信息。
在本发明的示例性实施例中,所述权限信息包括根目录权限信息和项目权限信息,其中在所述权限信息中所述项目权限信息位于所述根目录权限信息的下一级。
在本发明的示例性实施例中,根据所述用户信息和所述权限信息生成svn配置文件和用户配置文件包括:
利用用户的角色在所述用户信息表中进行遍历,过滤当前状态为无效的用户,得到当前状态为有效的用户,将所述当前状态为有效的用户对应的用户名与对应角色的svn路径进行拼接,得到第一文件;
从所述当前状态为有效的用户筛选出对根目录有只读权限的用户;
对所述对根目录有只读权限的用户在所述应用列表中进行遍历,将用户名和用户名对应的读写权限拼接在所述第一文件中,得到所述svn配置文件。
在本发明的示例性实施例中,根据所述用户信息和所述权限信息生成svn配置文件和用户配置文件还包括:
根据所述用户名和密码生成生成代理服务器可识别的配置文件。
在本发明的示例性实施例中,所述配置服务器为tomcat配置服务器。
根据本发明实施例的第三方面,提供一种配置服务器,包括:
接收模块,用于接收svn配置文件和用户配置文件;
解析模块,用于对所述svn配置文件进行解析,并将解析的配置信息存储到指定目录下;
执行模块,用于对所述用户配置文件通过执行预设命令生成代理服务器可识别的配置文件格式。
根据本发明实施例的第四方面,提供一种源码版本控制管理端,包括:
用户信息配置模块,用于通过前端界面进行用户管理配置,得到用户信息;
权限信息配置模块,用于通过所述前端界面对用户访问的目录进行权限配置,得到权限信息;
配置文件生成模块,用于根据所述用户信息和所述权限信息生成svn配置文件和用户配置文件;
配置文件发送模块,用于将所述svn配置文件和所述用户配置文件发送给配置服务器,所述svn配置文件和所述用户配置文件用于由所述配置服务器接收并处理生成代理服务器可识别的配置文件格式。
根据本发明实施例的第五方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现以上所述的源码版本控制方法的步骤。
根据本发明实施例的第六方面,提供一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现以上所述的源码版本控制方法。
本发明实施例提供的技术方案可以包括以下有益效果:
在本发明的一些实施例所提供的技术方案中,一方面,通过增加配置服务器,根据接收的svn配置文件和用户配置文件完成配置信息的存储和用户信息自动进行格式的转换,管理员在前端界面仅需要可视化操作即可进行用户和权限的配置,版本管理和权限控制的方式简单灵活。另一方面,通过本方案可以有效快捷地对源码进行管理,避免源码泄露造成损失,同时大大降低维护成本。
本发明应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开相关实施例中基本的svn应用的架构图;
图2示出根据本发明的实施例的一种源码版本控制方法的流程示意图;
图3示出根据本发明的实施例的步骤s210中获取用户信息的前端界面示意图;
图4示出根据本发明的实施例的步骤s220中获取权限信息的前端界面示意图;
图5示出根据本发明的实施例的另一种源码版本控制方法的流程示意图;
图6示出根据本发明的实施例实现上述源码版本控制方法的整体流程图;
图7示出根据本发明的实施例用于实现上述源码版本控制方法的架构图;
图8示出根据本发明的实施例的源码版本控制管理端的结构示意图;
图9示出根据本发明的实施例的配置服务器的结构示意图;
图10示出本示例性实施例中一种用于实现上述方法的电子设备;
图11示出本示例性实施例中一种用于实现上述方法的计算机可读存储介质。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在本公开相关实施例中,图1示出本公开相关实施例中基本的svn(subversion的简称)应用的架构图,如图1所示,图1示出对于源码共享和权项控制的管理,服务器10侧包括apache代理服务器11、svn服务器12和配置文件13,通过apache代理服务器11对用户的权限进行控制。基于图1所示架构,版本控制软件svn可以使用如下方法实现,并且存在如下问题;
(1)通过apache代理服务器(开放源码的网页服务器)的用户,进行访问权限的控制。
新增用户具体指令如下:
htpasswd文件名用户名密码
删除用户具体指令如下:
htpasswd–d文件名用户名
使用该方法,虽然能够新增和删除用户,但是需要远程登录apache代理服务器的主机,使用以上命令行操作,需要管理人员记住命令及其对应的含义,对管理人员的技能比较高。
(2)通过svn权限文件(即具体的权限设置代码),控制用户访问权限,使用起来非常繁琐,而且还存在以下问题:
(1)新增一个用户访问一个项目,需要修改很多源码。
(2)屏蔽新增一个项目,只能用户a访问,则配置文件必须用排除法设置,将所有其他用户设置为“不可访问”。
(3)必须远程登录到svn服务器上才能设置。
针对以上svn版本管理过程中,程序源码需要手工赋权,很难实现每人一个子系统的权限,管理过程繁琐,增加复杂性,且存在代码泄露的风险,缺乏对用户和权限的可视化管理,不方便管理人员操作,本公开。
为此,本公开提供一种源码版本控制方法、配置服务器、源码版本控制管理端、介质及电子设备,通过提供一套集用户管理、权限管理于一体的工具,有效地解决版本管理繁琐和源码泄露的问题。以解决上述问题,下面对本公开的技术方案做具体介绍。
图2示出根据本发明的实施例的一种源码版本控制方法的流程示意图,参考图2,该源码版本控制方法用于svn管理端,具体包括:
步骤s210,通过前端界面进行用户管理配置,得到用户信息。
步骤s220,通过所述前端界面对用户访问的目录进行权限配置,得到权限信息。
步骤s230,根据所述用户信息和所述权限信息生成svn配置文件和用户配置文件。
步骤s240,将所述svn配置文件和所述用户配置文件发送给配置服务器,所述svn配置文件和所述用户配置文件用于由所述配置服务器接收并处理生成代理服务器可识别的配置文件格式。
在图2所示实施例所提供的技术方案中,一方面,通过对前端界面获取用户信息和配置信息后生成svn配置文件和用户配置文件,并将其发送给配置服务器,管理员在前端界面通过可视化操作即可进行用户和权限的配置,版本管理和权限控制的方式简单灵活。另一方面,通过本方案可以有效快捷地对源码进行管理,避免源码泄露造成损失,同时大大降低维护成本。
以下对图2所示实施例的各个步骤的具体实现进行详细阐述:
在步骤s210中,通过前端界面进行用户管理配置,得到用户信息。
在本发明的示例性实施例中,步骤s210中可以通过前端界面获取用户信息,该步骤具体包括:
首先,在所述前端界面向管理员展示用户信息表,其中所述用户信息表的字段至少包括用户名、密码、当前状态和角色;
其次,获取所述管理员在所述用户信息表中针对所述字段输入对应的值,其中所述用户信息表的格式为excel表;
然后,根据所述用户信息表的字段和字段对应的值得到所述用户信息。
图3示出根据本发明的实施例的步骤s210中获取用户信息的前端界面示意图,如图3所示,在获取用户信息的前端界面展示的用户信息表中的字段除了用户名、密码、当前状态和角色这些关键信息之外,还包括:姓名、电话、创建时间、注销时间等信息,以下对图3所示前端界面中各字段的功能做详细说明:
①姓名。输入svn用户真实的姓名,由于代码管理非常重要,因此实名也是必不可少的。但是因svn对中文姓名支持性不高,在图3所示界面中还可以登记姓名与svn用户名之间的关系。
②电话,作为管理用途,用于记录的用户联系方式。
③用户名,svn登录的用户名,在表格中输入用户名,可以通过自动创建代替复杂的人工创建过程。
④创建时间,作为管理用途,用于记录用户什么时候创建的。
⑤注销时间,作为管理用途,用于记录用户什么时候注销的。
⑥当前状态,分为有效和失效两个状态,作用很重要。凡是失效的用户,在后面介绍的svn的权限信息列表中不再赋权。
⑦角色,分为管理员、主管、开发人员三个角色,作用也很重要。管理员具有svn所有目录的权限;主管具有所有项目的只读权限,用于查阅代码;开发人员仅具有指定项目的权限。
⑧密码,用于配合用户名使用,可以实现用户自动创建。
另外,在图3所示的excel表中③和④之间还有一栏为“密码”,用于……,⑦和⑧之间还有一栏为“ip”,用于记录用户登录时的ip地址。
在步骤s220中,通过所述前端界面对用户访问的目录进行权限配置,得到权限信息。
在本发明的示例性实施例中,步骤s220中可以通过前端界面获取权限信息,该步骤具体包括:
首先,在所述前端界面向管理员展示应用列表,其中所述应用列表的字段至少包括svn路径、项目管理人、项目参与人以及所述项目管理人和所述项目参与人的权限;
其次,获取所述管理员在所述应用列表中针对所述字段输入对应的值,其中所述应用列表的格式为excel表;
然后,根据所述应用列表的字段和字段对应的值得到所述权限信息。其中所述权限信息包括根目录权限信息和项目权限信息,其中在所述权限信息中所述项目权限信息位于所述根目录权限信息的下一级。
图4示出根据本发明的实施例的步骤s220中获取权限信息的前端界面示意图,如图3所示,在获取用户信息的前端界面展示的用户信息表中的字段除了svn路径、项目管理人、项目参与人以及所述项目管理人和所述项目参与人的权限这些关键信息之外,还包括:应用程序的类别、中文名称等信息,以下对图4所示前端界面中各字段的功能做详细说明:
①应用程序类别,用于标识应用程序的一级类别。
②应用程序名称,用于标识应用程序的二级类别。
③应用程序中文名称,由于应用程序的目录,多用英文名称,中文名称用于简明的标识应用程序的功能。
④源码地址,即svn路径,根据应用程序的一级类别和二级类别,确定源码访问的地址。
⑤管理人(即项目管理人),该栏目输入管理人用户名,凡是管理人,具有该程序trunk/branches/tags三个目录的读写权限。同时,管理人权限会和用户权限对比,如果用户失效,权限同样也会失效。
⑥参与人(即项目参与人),该栏目输入能访问该程序的用户名。
⑦权限,分为只读和读写两个权限,分别用于对每个参与人的权项进行设置。
⑧锁定trunk,y表示锁定trunk,应用程序下面的trunk目录不能修改。参与人、权限、锁定trunk,三栏表示一个用户对该应用程序目录的访问权限。如果是只读,那么整个目录包括trunk都不能更改;如果是读写,在锁定trunk时,则只能修改tags和branches目录;在不锁定trunk时,则trunk,tags,branches三个目录都可以读写。
需要说明的是,trunk,branches,tags等三个目录,trunk是主分支,是日常开发进行的地方;branches是分支,一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中。又比如为不同用户客制化的版本,也可以放在分支中进行开发;tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个中间阶段的版本进行存档。
在本发明的示例性实施例中,所述权限信息包括根目录权限信息和项目权限信息,其中在所述权限信息中所述项目权限信息位于所述根目录权限信息的下一级。
在步骤s230中,根据所述用户信息和所述权限信息生成svn配置文件和用户配置文件。
在本发明的示例性实施例中,步骤s230中可以根据上述步骤获取的信息生成配置文件,该步骤具体包括:
首先,利用用户的角色在所述用户信息表中进行遍历,过滤当前状态为无效的用户,得到当前状态为有效的用户,将所述当前状态为有效的用户对应的用户名与对应角色的svn路径进行拼接,得到第一文件。
其次,从所述当前状态为有效的用户筛选出对根目录有只读权限的用户;
然后,对所述对根目录有只读权限的用户在所述应用列表中进行遍历,将用户名和用户名对应的读写权限拼接在所述第一文件中,得到所述svn配置文件。
需要说明的是,该步骤之前,还包括通过读取“用户信息表”配置信息,将用户名、密码、角色、是否有效这几项关键信息读取到内存中;以及通过读取“应用列表”配置信息,将svn路径、管理员、参与人、权限这几项关键信息读取到内存。
然后根据内存中的用户信息和配置信息生成svn配置文件,svn配置文件大致分为三部分:
1)用户信息,格式如下:
[groups]
administrator=admin
manager=
head=czz,huangjiankun
developer=xiaojun,test1,zhangsan
deployer=
这部分为固定格式,将excel中的管理员、主管、开发人员、发布人员,对应配置文件里面的manager,head,developer,deployer四个角色,遍历内存中“用户信息表”,排除失效用户,将对应的人名拼接到对应角色的位置文件中。
2)根目录权限信息,内容如下:
[/]
*=
@administrator=rw
@manager=r
@head=r
@developer=r
@deployer=r
这部分信息为固定的信息,也具有“技巧”。任何文件系统,都是树形结构,svn管理的文件也是树型结构。由于svn的目录权限具有“继承性”,如果需要拥有某个子目录权限,则必须具有根目录权限。所有用户组对于根目录,都赋权了读权限,例如:@developer=r,就是对于开发人员这一组,根目录都只读。一旦根目录只读,下面所有文件夹也就可以读取,只能对特定文件夹设置不可读。这种特性,造成了svn实现权限控制非常繁琐,但是采用本发明的方法后,用户只需要在前端界面的excel表中对应的输入信息,然后将后续繁琐的配置过程通过服务器自动实现。
3)项目权限信息。这部分要实现对每个项目的控制,例如某企业的项目有200多个,如果不区分权限,全部都开放给开发人员,在外包人员流动性很强的情况下,存在巨大的源码泄露隐患。采用本发明的方法后,通过项目的权限控制源码,都要按照如此规范进行实现:
[/sourcecode/项目名]
#不能访问该项目的人员,需要用程序实现筛选,以user1..usern为例
user1=
user2=
...
usern=
#这里trunk和branches的用户,不用列出,因为根目录已经可以读
[/sourcecode/项目名/trunk]
#trunk人员汇总,需要程序实现,以trunkuser1和trunkuser2为例
trunkuser1=r#只读
trunkuser2=rw#读写
[/sourcecode/项目名/branches]
#branches人员汇总,需要程序实现,以user1和user2为例
user1=r#只读
user2=rw#读写
程序遍历“应用列表”每个应用,按照上面的格式,先对比所有用户中的有效用户,哪些没有本应用程序的权限,逐个拼接“用户名=”到配置文件。锁定trunk,配置文件为trunk目录“用户名=r”。
按照以上格式,对数据量进行估计,假设300个开发人员,200个项目,每个项目5个人,1个trunk权限,4个branches权限,那么权限文件的条数为(200-5)*200+1*200+4*200+3*200=40600条。数据量非常大,如果人工维护配置文件,不可能做到。但是利用本发明的方法可以简单快速的实现对项目权限的配置。
基于上述步骤,得到svn配置文件,最后,再根据所述用户名和密码生成所述用户配置文件。
在步骤s240中,将所述svn配置文件和所述用户配置文件发送给配置服务器,所述svn配置文件和所述用户配置文件用于由所述配置服务器接收并处理生成代理服务器可识别的配置文件格式。
图3所示的excel表里面存储了用户名和密码,但是apache服务器需要的密码是加密的,excel无法生成加密的文件。这一步骤仅仅是组织好用户名和密码,然后通过发送请求到服务器将其传输到服务器。具体的,excel调用windowsapi,将上述步骤生成的配置文件和用户文件,通过post请求发送到配置服务器的接口地址上。
图5示出根据本发明的实施例的另一种源码版本控制方法的流程示意图,参考图5,该源码版本控制方法用于配置服务器,具体包括:
步骤s510,接收svn配置文件和用户配置文件;
步骤s520,对所述svn配置文件进行解析,并将解析的配置信息存储到指定目录下;
步骤s530,对所述用户配置文件通过执行预设命令生成代理服务器可识别的配置文件格式。
在图5所示实施例所提供的技术方案中,一方面,通过增加配置服务器,根据接收的svn配置文件和用户配置文件完成配置信息的存储和用户信息自动进行格式的转换,管理员在前端界面仅需要可视化操作即可进行用户和权限的配置,版本管理和权限控制的方式简单灵活。另一方面,通过本方案可以有效快捷地对源码进行管理,避免源码泄露造成损失,同时大大降低维护成本。
以下对图5所示实施例的各个步骤的具体实现进行详细阐述:
在本发明的示例性实施例中,所述配置服务器可以为tomcat配置服务器。
在本发明的示例性实施例中,其中所述svn配置文件为基于前端界面获取的用户信息进行配置得到的文件;所述用户配置文件为基于前端界面获取的权限信息进行配置得到的文件。
在本发明的示例性实施例中,通过servlet接口接收svn配置文件和用户配置文件,所述svn配置文件和所述用户配置文件为svn管理端以post请求发送而来。tomcat配置服务器为javaweb应用程序,对外提供一个servlet接口,用于接收excel通过post请求发过来的配置文件和用户文件。
在本发明的示例性实施例中,所述基于前端界面获取的用户信息进行配置之前,还包括:
通过前端界面进行用户管理配置,得到所述用户信息,具体包括:
在所述前端界面向管理员展示用户信息表,其中所述用户信息表的字段至少包括用户名、密码、当前状态和角色;
获取所述管理员在所述用户信息表中针对所述字段输入对应的值,其中所述用户信息表的格式为excel表;
根据所述用户信息表的字段和字段对应的值得到所述用户信息。
在本发明的示例性实施例中,所述基于前端界面获取的权限信息进行配置之前,还包括:
通过所述前端界面对用户访问的目录进行权限配置,得到所述权限信息,具体包括:
在所述前端界面向管理员展示应用列表,其中所述应用列表的字段至少包括svn路径、项目管理人、项目参与人以及所述项目管理人和所述项目参与人的权限;
获取所述管理员在所述应用列表中针对所述字段输入对应的值,其中所述应用列表的格式为excel表;
根据所述应用列表的字段和字段对应的值得到所述权限信息。在本发明的示例性实施例中,所述对所述用户配置文件进行解析包括:
对所述用户配置文件中获取用户信息的参数,经过转码转化为utf-8无bom的格式的配置信息,其中所述用户信息的参数至少包括:用户名、密码、当前状态和角色。
在tomcat配置服务器中,对于配置文件处理过程比较简单,从post请求获得参数后,经过转码,转化为utf-8无bom的格式,存储到svn指定的目录下,文件名为svnaccess,同时存储一份svnaccess+日期,用于备份。
在本发明的示例性实施例中,还包括:
根据所述用户名和密码生成代理服务器可识别的配置文件。
在本发明的示例性实施例中,所述预设命令为java中调用服务器命令脚本的命令,即runtime.getruntime().exec;以及apache中密码生成工具,例如htpasswd命令,所述可识别的配置文件格式为加密文件。
基于上述,对于用户文件,需要利用java的runtime.getruntime().exec,执行apache服务器下的htpasswd命令,生成加密的,apache服务器可以识别的配置文件格式。
图6示出根据本发明的实施例实现上述源码版本控制方法的整体流程图,包括如下步骤:
步骤s601,通过svn管理端操作获取用户信息和权限信息,并生成svn配置文件和用户配置文件。首先,svn管理端提供界面(如上述图3和图4所示的界面),管理员通过在界面中操作输入相应的信息,形成用户信息表和应用列表两个excel表。
在svn管理端利用excel强大的界面功能和可以编写vba脚本的特点,设计了简单易用的操作界面。管理员通过在svn管理端的用户信息表输入用户名、密码、当前状态是有效还是无效等用户信息,在应用列表中输入项目管理人、项目参与人以及所述项目管理人和所述项目参与人的权限等权限信息。
步骤s602,svn管理端将svn配置文件和用户配置文件发送给tomcat配置服务器。
具体的,svn管理端在excel中调用windowsapi,通过post请求将上述配置文件发送到tomcat配置服务器的接口地址上。
步骤s603,tomcat配置服务器接收svn配置文件和用户配置文件,并执行操作系统命令,生成apache服务器可以识别的配置文件格式。
步骤s604,tomcat配置服务器将可识别的配置文件发送给apache服务器完成配置。
由于apache是web服务器,支持静态页,tomcat是应用(java)服务器,支持动态的页面,比如servlet(servlet的作用是接收请求数据、处理请求以及完成响应)。
基于上述,在该步骤中利用tomcat配置服务器,基于javaweb程序,既可以接收文件,又可以执行操作系统命令,同时完成配置文件存储和用户的建立。如果仅使用sftp,ftp等文件传输工具,没有服务器应用程序的配合,无法同时达到接收文件和执行操作系统命令。
综上所述,采用本发明实施例提供的源码版本控制方法,一方面,通过对前端界面获取用户信息和配置信息后生成svn配置文件和用户配置文件,并将其发送给配置服务器,管理员在前端界面通过可视化操作即可进行用户和权限的配置,版本管理和权限控制的方式简单灵活。另一方面,通过本方案可以有效快捷地对源码进行管理,避免源码泄露造成损失,同时大大降低维护成本。该方法在使用场景中有很强的实用性,对于系统功能复杂,子系统很多的企业而言,每个子系统均由不同的外包人员参与,在未出现本方法之前,程序源码需要手工赋权,很难实现每人一个子系统的权限,存在管理的复杂性和代码泄露风险。但是利用本发明基于excel的svn版本管理工具,通过excel表可以实现“一键操作”,解决了svn代码管理的难题。仅需要1个人进行权限管理,既满足了安全性,又简易方便,工作量小,降低维护成本。
以下介绍本发明的装置实施例,可以用于执行本发明上述的源码版本控制方法。
图7示出根据本发明的实施例用于实现上述源码版本控制方法的架构图,如图7所示,本公开在服务器10侧中除了包括apache代理服务器11、svn服务器12和配置文件13之外,还增加一个配置tomcat配置服务器14,以及svn管理端20,具体功能和组成模块介绍如下:
图8示出根据本发明的实施例的源码版本控制管理端的结构示意图,该管理端即为上述图7中的svn管理端20。具体的,参考图8,源码版本控制管理端800包括:用户信息配置模块801、权限信息配置模块802、配置文件生成模块803和配置文件发送模块804。
用户信息配置模块804用于通过前端界面进行用户管理配置,得到用户信息;权限信息配置模块802用于通过所述前端界面对用户访问的目录进行权限配置,得到权限信息;配置文件生成模块803用于根据所述用户信息和所述权限信息生成svn配置文件和用户配置文件;配置文件发送模块804用于将所述svn配置文件和所述用户配置文件发送给配置服务器,所述svn配置文件和所述用户配置文件用于由所述配置服务器接收并处理生成代理服务器可识别的配置文件格式。
在本发明的示例性实施例中,用户信息配置模块801包括:信息表模块、用户信息值获取模块和用户信息生成模块,信息表展示模块用于在所述前端界面向管理员展示用户信息表,其中所述用户信息表的字段至少包括用户名、密码、当前状态和角色;用户信息值获取模块用于获取所述管理员在所述用户信息表中针对所述字段输入对应的值,其中所述用户信息表的格式为excel表;用户信息生成模块用于根据所述用户信息表的字段和字段对应的值得到所述用户信息。
具体的,可以基于图3所示前端界面进行用户信息配置。
在本发明的示例性实施例中,权限信息配置模块802包括:应用列表模块、权限值获取模块和权限信息生成模块,应用列表模块用于在所述前端界面向管理员展示应用列表,其中所述应用列表的字段至少包括svn路径、项目管理人、项目参与人以及所述项目管理人和所述项目参与人的权限;权限值获取模块用于获取所述管理员在所述应用列表中针对所述字段输入对应的值,其中所述应用列表的格式为excel表;权限信息生成模块用于根据所述应用列表的字段和字段对应的值得到所述权限信息,其中所述权限信息包括根目录权限信息和项目权限信息,其中在所述权限信息中所述项目权限信息位于所述根目录权限信息的下一级。
具体的,可以基于图4所示前端界面进行权限信息配置。
在本发明的示例性实施例中,配置文件生成模块803用于利用用户的角色在所述用户信息表中进行遍历,过滤当前状态为无效的用户,得到当前状态为有效的用户,将所述当前状态为有效的用户对应的用户名与对应角色的svn路径进行拼接,得到第一文件;还用于从所述当前状态为有效的用户筛选出对根目录有只读权限的用户;还用于对所述对根目录有只读权限的用户在所述应用列表中进行遍历,将用户名和用户名对应的读写权限拼接在所述第一文件中,得到所述svn配置文件。
在本发明的示例性实施例中,该源码版本控制管理端可以对应上述图7架构图中的svn管理端,通过svn管理端向管理员提供可视化管理,另外,在服务器增加tomcat配置服务器,tomcat配置服务器能够接收excel管理端生成的权限信息和用户信息,直接操作svn配置文件。整体上达到“一键操作”。
上述源码版本控制管理端中各模块的具体细节已经在对应的定义规则流的方法中进行了详细的描述,因此此处不再赘述。
图9示出根据本发明的实施例的配置服务器的结构示意图,该管理端即为上述图7中的tomcat配置服务器14。具体的,参考图9,配置服务器900包括:接收模块901、解析模块902和执行模块903。
接收模块901用于接收svn配置文件和用户配置文件;解析模块902用于对所述svn配置文件进行解析,并将解析的配置信息存储到指定目录下;执行模块903用于对所述用户配置文件通过执行预设命令生成代理服务器可识别的配置文件格式。
在本发明的示例性实施例中,接收模块901通过servlet接口接收svn配置文件和用户配置文件,所述svn配置文件和所述用户配置文件为svn管理端以post请求发送而来。
在本发明的示例性实施例中,所述svn配置文件为基于前端界面获取的用户信息进行配置得到的文件;所述用户配置文件为基于前端界面获取的权限信息进行配置得到的文件。
在本发明的示例性实施例中,通过前端界面进行用户管理配置,得到所述用户信息,具体包括:
在所述前端界面向管理员展示用户信息表,其中所述用户信息表的字段至少包括用户名、密码、当前状态和角色;
获取所述管理员在所述用户信息表中针对所述字段输入对应的值,其中所述用户信息表的格式为excel表;
根据所述用户信息表的字段和字段对应的值得到所述用户信息。
在本发明的示例性实施例中,所述基于前端界面获取的权限信息进行配置之前,还包括:
通过所述前端界面对用户访问的目录进行权限配置,得到所述权限信息,具体包括:
在所述前端界面向管理员展示应用列表,其中所述应用列表的字段至少包括svn路径、项目管理人、项目参与人以及所述项目管理人和所述项目参与人的权限;
获取所述管理员在所述应用列表中针对所述字段输入对应的值,其中所述应用列表的格式为excel表;
根据所述应用列表的字段和字段对应的值得到所述权限信息。在本发明的示例性实施例中,所述对所述用户配置文件进行解析包括:
对所述用户配置文件中获取用户信息的参数,经过转码转化为utf-8无bom的格式的配置信息,其中所述用户信息的参数至少包括:用户名、密码、当前状态和角色。
在tomcat配置服务器中,对于配置文件处理过程比较简单,从post请求获得参数后,经过转码,转化为utf-8无bom的格式,存储到svn指定的目录下,文件名为svnaccess,同时存储一份svnaccess+日期,用于备份。
在本发明的示例性实施例中,还包括:
根据所述用户名和密码生成代理服务器可识别的配置文件。
在本发明的示例性实施例中,所述预设命令为java中调用服务器命令脚本的命令,即runtime.getruntime().exec;以及apache中密码生成工具,例如htpasswd命令,所述可识别的配置文件格式为加密文件。
基于上述,对于用户文件,需要利用java的runtime.getruntime().exec,执行apache服务器下的htpasswd命令,生成加密的,apache服务器可以识别的配置文件格式。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施方式的方法。
在本发明的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微源码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图10来描述根据本发明的这种实施方式的电子设备900。图10显示的电子设备900仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,电子设备900以通用计算设备的形式表现。电子设备900的组件可以包括但不限于:上述至少一个处理单元910、上述至少一个存储单元920、连接不同系统组件(包括存储单元920和处理单元910)的总线930。
其中,所述存储单元存储有程序源码,所述程序源码可以被所述处理单元910执行,使得所述处理单元910执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元910可以执行如图2中所示的步骤s210:通过前端界面进行用户管理配置,得到用户信息;步骤s220:通过所述前端界面对用户访问的目录进行权限配置,得到权限信息;步骤s230:根据所述用户信息和所述权限信息生成svn配置文件和用户配置文件;步骤s240:将所述svn配置文件和所述用户配置文件发送给配置服务器,所述svn配置文件和所述用户配置文件用于由所述配置服务器接收并处理生成代理服务器可识别的配置文件格式。或者述处理单元910可以执行如图5中所示的步骤s510:接收svn配置文件和用户配置文件;步骤s520,对所述svn配置文件进行解析,并将解析的配置信息存储到指定目录下;步骤s530,对所述用户配置文件通过执行预设命令生成代理服务器可识别的配置文件格式。
存储单元920可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)9201和/或高速缓存存储单元9202,还可以进一步包括只读存储单元(rom)9203。
存储单元920还可以包括具有一组(至少一个)程序模块9205的程序/实用工具9204,这样的程序模块9205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线930可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备900也可以与一个或多个外部设备1100(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备900交互的设备通信,和/或与使得该电子设备900能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口950进行。并且,电子设备900还可以通过网络适配器960与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器960通过总线930与电子设备900的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备900使用其它硬件和/或软件模块,包括但不限于:微源码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本发明实施方式的方法。
在本发明的示例性实施例中,还提供了一种计算机存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序源码,当所述程序产品在终端设备上运行时,所述程序源码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
参考图11所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品1000,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序源码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序源码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序源码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序源码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序源码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其他实施例。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由权利要求指出。