CN110045983B - 版本库管理方法、装置及服务器 - Google Patents
版本库管理方法、装置及服务器 Download PDFInfo
- Publication number
- CN110045983B CN110045983B CN201910316832.7A CN201910316832A CN110045983B CN 110045983 B CN110045983 B CN 110045983B CN 201910316832 A CN201910316832 A CN 201910316832A CN 110045983 B CN110045983 B CN 110045983B
- Authority
- CN
- China
- Prior art keywords
- item
- target
- file
- project
- reference relationship
- 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.)
- Active
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供了一种版本库管理方法、装置及服务器,属于软件开发技术领域。所述方法包括:当创建第一项目的版本库时,在版本库中指定第一命名空间,版本库中存储第一项目的项目文件;将第一项目的第一项目标识,添加到第一项目的第一引用关系中,得到第二引用关系;将第二引用关系存储在第一命名空间中;当接收到终端的复制指令时,复制第一项目,得到第二项目;从第一命名空间中获取第一项目的第二引用关系;在版本库中指定第二命名空间,将第三引用关系添加到第二项目的第二命名空间中。在复制第一项目得到第二项目时,可以仅复制该引用关系,而不复制该第一项目的版本库,从而节省了存储资源,提高了资源利用率。
Description
技术领域
本公开涉及软件开发技术领域,特别涉及一种版本库管理方法、装置及服务器。
背景技术
在分布式版本控制系统中,多个开发人员可以对同一项目进行开发。在项目开发的过程中,一个开发人员开发出一个项目时,为了便于描述,将该项目称为源项目,其他开发人员可以对该项目进行修改。其他开发人员对该项目进行修改时,可以对该源项目复制得到新项目,在该新项目中进行修改。并且,开发人员在开发出该源项目时,同时建立该源项目的版本库,该版本库中存储实现该源项目的多个项目文件和该多个项目文件之间的引用关系,该多个项目文件之间的引用关系可以由多个项目文件的文件标识和多个项目文件的存储路径组成。
目前,当其他开发人员在复制该源项目时,服务器复制该源项目的版本库中的多个项目文件和该多个项目文件之间的引用关系,得到该新项目对应的版本库,从而其他开发人员可以对该新项目对应的版本库中的项目文件进行修改。
目前服务器复制该源项目的过程中,需要同时复制该源项目的版本库的内容,再将该源项目的版本库中的内容存储到新版本库中,当复制该源项目时,需要复制多次源项目的版本库,得到多个版本库进行存储,浪费存储资源,导致存储资源利用率低。
发明内容
本公开实施例提供了一种版本库管理方法、装置及服务器,用于解决目前多次引用该源项目时,需要复制多次源项目的版本库,得到多个版本库进行存储,浪费存储资源,导致存储资源利用率低的问题。所述技术方案如下:
一方面,提供了一种版本库管理方法,所述方法包括:
当创建第一项目的版本库时,在所述版本库中指定第一命名空间,所述版本库中存储所述第一项目的项目文件;
将所述第一项目的第一项目标识,添加到所述第一项目的第一引用关系中,得到第二引用关系,所述第一引用关系用于存储所述项目文件的文件标识和存储路径;
将所述第二引用关系存储在所述第一命名空间中;
当接收到终端的复制指令时,根据所述复制指令,复制所述第一项目,得到第二项目,所述复制指令中携带所述第一项目的第一项目标识;
根据所述第一项目标识,从所述第一命名空间中获取所述第一项目的第二引用关系;
在所述版本库中指定第二命名空间,将所述第二项目的第二项目标识添加到所述第二引用关系中,得到第三引用关系;
将所述第三引用关系添加到所述第二项目的所述第二命名空间中。
在一种可能的实现方式中,所述将所述第二引用关系存储在所述第一命名空间中,包括:
删除所述版本库中的第一属性文件,所述第一属性文件中存储所述第一引用关系;
在所述第一命名空间中生成所述第一项目的第二属性文件,将所述第二引用关系存储在所述第二属性文件中。
在另一种可能的实现方式中,所述将所述第三引用关系添加到所述第二项目的所述第二命名空间中,包括:
在所述第二命名空间中生成所述第二项目的第三属性文件;
将所述第三引用关系存储在所述第三属性文件中。
在另一种可能的实现方式中,所述将所述第三引用关系添加到所述第二项目的所述第二命名空间中之后,所述方法还包括:
当对所述第二项目中对应的项目文件进行修改后,将修改后的项目文件存储在所述版本库中;
将所述修改后的项目文件的文件标识和存储路径更新到所述第三引用关系中,得到第四引用关系。
在另一种可能的实现方式中,所述方法还包括:
接收所述终端的第一获取请求,所述第一获取请求中携带目标项目的目标项目标识;
根据所述目标项目标识,从目标命名空间中获取包括所述目标项目标识的第一目标引用关系;
删除所述第一目标引用关系中的所述目标项目标识,得到第二目标引用关系;
向所述终端发送所述第二目标引用关系。
在另一种可能的实现方式中,所述向所述终端发送所述第二目标引用关系之后,所述方法还包括:
接收所述终端的第二获取请求,所述第二获取请求中携带所述第二目标引用关系中的第一目标项目文件的第一存储路径;
根据所述第一目标项目文件的第一存储路径,从所述版本库中获取所述第一目标项目文件;
向所述终端发送所述第一目标项目文件。
在另一种可能的实现方式中,所述方法还包括:
接收所述终端的推送请求,所述推送请求中携带待存储的第二目标项目文件和所述第二目标引用关系中的第二存储路径;
根据所述第二存储路径,将所述第二目标项目文件存储到所述版本库中;
获取所述第二目标引用关系对应的所述第一目标引用关系;
将所述第二存储路径更新到所述第一目标引用关系中,得到第三目标引用关系。
在另一种可能的实现方式中,所述将所述修改后的项目文件的文件标识和存储路径更新到所述第三引用关系中,得到第四引用关系之后,所述方法还包括:
接收所述终端的合并指令,所述合并指令中包括需要合并的第二项目的第二项目标识;
根据所述第二项目标识,确定所述第二项目标识对应的第二命名空间;
从所述第二命名空间中获取所述第二命名空间的第四引用关系;
将所述第四引用关系和所述第二引用关系进行对比,确定所述第四引用关系和所述第二引用关系的差异引用关系;
将所述差异引用关系更新到所述第二引用关系中,得到第五引用关系。
另一方面,提供了一种版本库管理装置,所述装置包括:
创建模块,用于当创建第一项目的版本库时,在所述版本库中指定第一命名空间,所述版本库中存储所述第一项目的项目文件;
第一添加模块,用于将所述第一项目的第一项目标识,添加到所述第一项目的第一引用关系中,得到第二引用关系,所述第一引用关系用于存储所述项目文件的文件标识和存储路径;
第一存储模块,用于将所述第二引用关系存储在所述第一命名空间中;
复制模块,用于当接收到终端的复制指令时,根据所述复制指令,复制所述第一项目,得到第二项目,所述复制指令中携带所述第一项目的第一项目标识;
第一获取模块,用于根据所述第一项目标识,从所述第一命名空间中获取所述第一项目的第二引用关系;
第二添加模块,用于在所述版本库中指定第二命名空间,将所述第二项目的第二项目标识添加到所述第二引用关系中,得到第三引用关系;
第三添加模块,用于将所述第三引用关系添加到所述第二项目的所述第二命名空间中。
在另一种可能的实现方式中,所述第一存储模块,还用于删除所述版本库中的第一属性文件,所述第一属性文件中存储所述第一引用关系;在所述第一命名空间中生成所述第一项目的第二属性文件,将所述第二引用关系存储在所述第二属性文件中。
在另一种可能的实现方式中,所述第三添加模块,还用于在所述第二命名空间中生成所述第二项目的第三属性文件;将所述第三引用关系存储在所述第三属性文件中。
在另一种可能的实现方式中,所述装置还包括:
第二存储模块,用于当对所述第二项目中对应的项目文件进行修改后,将修改后的项目文件存储在所述版本库中;
第一更新模块,用于将所述修改后的项目文件的文件标识和存储路径更新到所述第三引用关系中,得到第四引用关系。
在另一种可能的实现方式中,所述装置还包括:
第一接收模块,用于接收所述终端的第一获取请求,所述第一获取请求中携带目标项目的目标项目标识;
第二获取模块,用于根据所述目标项目标识,从目标命名空间中获取包括所述目标项目标识的第一目标引用关系;
删除模块,用于删除所述第一目标引用关系中的所述目标项目标识,得到第二目标引用关系;
第一发送模块,用于向所述终端发送所述第二目标引用关系。
在另一种可能的实现方式中,所述装置还包括:
第二接收模块,用于接收所述终端的第二获取请求,所述第二获取请求中携带所述第二目标引用关系中的第一目标项目文件的第一存储路径;
第三获取模块,用于根据所述第一目标项目文件的第一存储路径,从所述版本库中获取所述第一目标项目文件;
第二发送模块,用于向所述终端发送所述第一目标项目文件。
在另一种可能的实现方式中,所述装置还包括:
第三接收模块,用于接收所述终端的推送请求,所述推送请求中携带待存储的第二目标项目文件和所述第二目标引用关系中的第二存储路径;
第三存储模块,用于根据所述第二存储路径,将所述第二目标项目文件存储到所述版本库中;
第四获取模块,用于获取所述第二目标引用关系对应的所述第一目标引用关系;
第二更新模块,用于将所述第二存储路径更新到所述第一目标引用关系中,得到第三目标引用关系。
在另一种可能的实现方式中,所述装置还包括:
第四接收模块,用于接收所述终端的合并指令,所述合并指令中包括需要合并的第二项目的第二项目标识;
确定模块,用于根据所述第二项目标识,确定所述第二项目标识对应的第二命名空间;
第五获取模块,用于从所述第二命名空间中获取所述第二命名空间的第四引用关系;
第六获取模块,用于将所述第四引用关系和所述第二引用关系进行对比,确定所述第四引用关系和所述第二引用关系的差异引用关系;
第三更新模块,用于将所述差异引用关系更新到所述第二引用关系中,得到第五引用关系。
另一方面,提供了一种服务器,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现本公开实施例中版本库管理方法中所执行的操作。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现如本公开实施例中版本库管理方法中所执行的操作。
本公开实施例提供的技术方案带来的有益效果是:
在本公开实施例中,通过在创建第一项目的版本库时,在第一项目的版本库中添加第一命名空间,将包括有该第一项目的第一项目标识的第二引用关系存储在该第一命名空间中,当复制该第一项目,得到第二项目时,在该版本库中指定第二项目对应的第二命名空间,在该第二命名空间中存储第二项目的第三引用关系,由于该第二引用关系和第三引用关系都存储有版本库中项目文件的文件标识和存储路径,因此,在复制第一项目得到第二项目时,可以仅复制该引用关系,而不复制该第一项目的版本库,从而节省了存储资源,提高了资源利用率。
附图说明
为了更清楚地说明本公开实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本公开实施例提供的一种版本库管理方法的实施环境;
图2是根据一示例性实施例提供的一种版本库管理方法应用界面;
图3是根据一示例性实施例提供的一种版本库管理方法应用界面;
图4是根据一示例性实施例提供的一种版本库管理方法流程图;
图5是根据一示例性实施例提供的一种版本库的示意图;
图6是根据一示例性实施例提供的一种版本库的示意图;
图7是根据一示例性实施例提供的一种版本库管理方法流程图;
图8是根据一示例性实施例提供的一种版本库管理方法流程图;
图9是根据一示例性实施例提供的一种版本库管理方法流程图;
图10是根据一示例性实施例提供的一种版本库管理方法流程图;
图11是根据一示例性实施例提供的一种版本库管理方法应用界面;
图12是根据一示例性实施例提供的一种版本库管理方法应用界面;
图13是根据一示例性实施例提供的一种版本库管理装置的框图;
图14是根据一示例性实施例提供的一种服务器的结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开实施例提供了一种版本库管理方法,该版本库管理方法可以应用于分布式版本控制系统,例如,Git(开源的分布式版本控制系统),该Git的框架可以为JGit(用Java实现的开源的分布式版本控制系统)或Git shell(基于希尔排序的开源的分布式版本控制系统)。在该分布式版本控制系统中,多个开发人员可以同时对同一项目进行操作。例如,第一开发人员开发出第一项目时,第二开发人员可以对第一项目进行复制,得到第二项目,然后对第二项目进行操作。相应的,本公开实施例提供了一种版本库管理的实施环境,参见图1,该实施环境中包括第一终端101、第二终端102和服务器103;第一终端101为第一开发人员使用的终端,第二终端102为第二开发人员使用的终端。并且,第一终端101和第二终端102上都安装软件开发应用,通过该软件开发应用与服务器103之间进行信息交互。相应的,服务器103为该软件开发应用对应的后台服务器。
当第一终端101在服务器103中开发第一项目时,第一终端101通过服务器103创建第一项目的版本库,在版本库中指定第一命名空间,将第一项目的第一项目标识,添加到第一项目的第一引用关系中,得到第二引用关系,将第二引用关系存储在第一命名空间中。第一引用关系用于存储版本库中项目文件的文件标识和存储路径。根据在Git环境下,版本库对引用(ref)无限制的原理,在版本库中添加第一命名空间,将该第二引用关系添加到该第一命名空间中。
由于通过第一终端101对该第一服务器103创建第一项目后,第一终端101不希望第二终端102对该第一项目进行修改,但是,又希望将可以与第二终端102同时对该第一项目进行调整,再通过审核,将第二终端102对第一项目的调整合并到第一项目中,因此可以通过复制(fork)该第一项目,得到第二项目,并将该第二项目与第一项目之间建立fork关系,从而对该第二项目进行操作,且不对该第一项目产生影响。
当第二终端102在服务器103中复制第一项目时,服务器103复制第一项目,得到第二项目;根据第一项目标识,从第一命名空间中获取第一项目的第二引用关系;在版本库中指定第二命名空间,将第二项目标识添加到第二引用关系中,得到第三引用关系;将第三引用关系添加到第二项目的第二命名空间中,使得具有复制关系的项目可以共享同一版本库,从而实现快速复制第一项目,由于版本库为共享版本库,复制第一项目得到第二项目时,无需再复制该第一项目的版本库,提高了存储利用率。
在本公开实施例中,通过在版本库中添加命名空间,使得该服务器103在复制第一项目时,可以不复制该第一项目的版本库,而直接通过项目标识引用该版本库中的项目文件,减少了复制项目时,版本库所占用的空间,提高了资源利用率。
该软件开发应用的操作界面如图2所示。参见图2,第一终端101通过服务器创建该第一项目后,在该第一终端101上的软件应用中的操作界面,如图2所示,该软件开发应用的操作界面上显示该第一项目的项目名称,以及该第一项目的各个项目文件的文件名称、最近更新时间和最后提交等信息。第二终端102可以通过该软件开发应用向服务器103发送复制指令,通过服务器复制得到第二项目,进而对该第二项目进行操作。第二终端102可以通过如图3所示的操作界面,对该第二项目进行操作,相似的,该第二项目的操作界面中显示该第二项目的项目名称,以及该第二项目的各个项目文件的文件名称、最近更新时间和最后提交等信息。
在一种可能的实现方式中,第二终端102可以从服务器103中克隆版本库,其中,当第二终端102需要从服务器103中克隆版本库时,可以先向终端103发送第一获取请求,该第一获取请求用于在服务器103中获取需要克隆的版本库的目标引用关系;服务器103接收到该第一获取请求后,根据该第一获取请求,将该版本库中的目标引用关系发送给第二终端102;第二终端102再根据该目标引用关系,向服务器103发送第二获取请求,该第二获取请求,用于请求从服务器103中克隆版本库;服务器103根据该第二获取请求将版本库中的目标项目文件克隆给第二终端102。
在另一种可能的实现方式中,第二终端102还可以向服务器103推送目标项目文件,其中,当第二终端102需要向服务器103推送目标项目文件时,也可以先向服务器103发送第一获取请求,该第一获取请求用于在服务器103中获取需要克隆的版本库的目标引用关系;服务器103接收到该第一获取请求后,根据该第一获取请求,将该版本库中的目标引用关系发送给第二终端102;第二终端102再根据该目标引用关系,向该服务器103发送推送请求,该推送请求中携带待存储的目标项目文件和公式目标文件的目标存储路径;服务器103接收到该推送请求后,根据该推送请求将该目标项目文件按照目标存储路径进行存储,服务器103将该目标项目文件存储成功后,根据该存储路径对该目标项目文件对应的目标引用关系进行更新。
需要说明的一点是,第二终端102在服务器103中复制第一项目之前,第一终端101先对第二终端102进行认证,在认证通过时,才允许第二终端102从服务器103中复制第一项目。另外,第二终端102从服务器103中克隆数据空或向服务器推送目标文件之前,第一终端101也可以先对第二终端102进行认证,在认证通过时,才允许第二终端102从服务器103中克隆数据库或推送目标项目文件。
图4为根据一示例性实施例提供的一种版本库管理方法流程图,如图4所示,在本公开实施例中以服务器fork第一项目得到一个第二项目为例进行说明。该版本库管理方法包括以下步骤:
步骤401:当创建第一项目的版本库时,服务器在该版本库中指定第一命名空间,该版本库中存储该第一项目的项目文件。
该第一项目为服务器中的任一项目。第一终端在开发第一项目时,第一终端向服务器发送创建请求,该创建请求用于指示该服务器为该第一终端创建第一项目;该服务器根据该创建请求创建该第一项目和第一项目对应的版本库,将该第一项目的项目文件添加到该版本库中。相应的,服务器在创建该第一项目的版本库时,可以根据该第一项目的项目文件的文件标识和存储位置,生成第一引用关系,该第一引用关系用于存储该版本库中项目文件的文件标识和存储路径,并且,服务器在创建该版本库时,可以根据该第一项目生成该第一项目的第一属性文件,该第一属性文件用于存储该第一引用关系。服务器在该版本库中指定该第一项目的第一命名空间,在该第一命名空间中存储第一项目的项目文件的文件标识和第一项目的项目文件的存储路径。其中,该项目文件的文件标识可以为该项目文件的名称、创建者或创建时间等,在本公开实施例中,对该文件标识的种类不作具体限定。该项目文件的存储路径指该项目文件在该版本库中的存储目录,服务器可以通过该存储路径确定该版本库中的项目文件。
需要说明的一点是,在本公开实施例中,对该存储路径的表示形式不作具体限定,例如,项目文件A1的存储路径可以表示为A/A1,则该项目文件A1存储在文件夹A下;该项目文件A1的存储路径还可以通过该项目文件的文件标识表示,相应的,服务器可以通过该项目文件的文件标识确定该项目文件。
步骤402:服务器将该第一项目的第一项目标识,添加到该第一项目的第一引用关系中,得到第二引用关系。
其中,第一项目的第一项目标识用于标识该第一项目,该第一项目标识可以为该第一项目的名称、创建者或创建时间等,在本公开实施例中,对该第一项目标识不作具体限定。例如,该第一项目的第一项目标识可以为该第一项目的名称,则该第一项目标识可以为“项目1”。
在一种可能的实现方式中,该过程可以为:服务器向该第一引用关系中的项目文件的文件标识中,添加第一项目的项目标识,通过该添加了项目标识的文件标识,组成第二引用关系。在另一种可能的实现方式中,该过程可以为:服务器在该第一引用关系中添加该第一项目的第一项目标识,将该添加有第一项目标识的第一引用关系作为第二引用关系。
步骤403:服务器将该第二引用关系存储在该第一命名空间中。
服务器根据该第一项目的项目标识生成第二引用关系后,将该第二引用关系存储在该第一命名空间中,如图5所示,服务器穿件该第一项目后,生成与该第一项目对应的版本库,将该第一项目对应的项目文件存储在该版本库中,并在该第一项目对应的版本库中指定第一命名空间,将该第二引用关系存储在该第一命名空间下。
在一种可能的实现方式中,服务器在创建该版本库后,直接将生成的第一引用关系存储在该第一命名空间中,在该第一命名空间中修改该第一引用关系,得到第二引用关系,进而将该第二引用关系存储在该第一命名空间中。在另一种可能的实现方式中,服务器在创建该版本库后,在该版本库中生成该版本库的第一属性文件,该第一属性文件中存储该第一引用关系,服务器在指定第一命名空间后,将该第一引用关系和第一项目的第一项目标识添加到该第一项目的第二属性文件中,得到第二引用关系,将该第二引用关系存储在该第二属性文件中,根据该第二属性文件替换该版本库的第一属性文件。该过程可以通过以下步骤4031-4032实现,包括:
4031:服务器删除该版本库中的第一属性文件,该第一属性文件中存储该第一引用关系。
其中,该第一属性文件,用于表示该版本库的属性,该版本库的属性可以包括该版本库对应的项目标识等。服务器根据该第一引用关系生成第二引用关系后,可以将该第一引用关系所对应的第一属性文件删除。其中,该第一属性文件可以为该版本库的head文件。
4032:服务器在该第一命名空间中生成该第一项目的第二属性文件,将该第二引用关系存储在该第二属性文件中。
在第一命名空间中生成该第二命名空间的第二属性文件,该第二属性文件,用于表示该第一命名空间为第一项目的命名空间。服务器将生成的第二引用关系存储在第二属性文件中。其中,该第二属性文件和第一属性文件的类型可以相同也可以不同,在发明实施例中,对此不作具体限定。例如,该第一属性文件和第二属性文件可以都为该版本库的head文件。
需要说明的一点是,在本公开实施例中,服务器还可以将该获取到的第一引用关系存储在第二属性文件中,并在第二属性文件中添加该第一项目的第一项目标识,通过该第一项目标识,将该第二属性文件中的第一引用关系作为第二引用关系。
步骤404:第二终端向服务器发送复制指令,该复制指令中携带该第一项目的第一项目标识,用于指示服务器对该第一项目进行复制。
第二开发人员可以通过第二终端向该服务器发送复制指令,该复制指令用于指示服务器复制一个项目。
步骤405:当接收到第二终端的复制指令时,服务器根据该复制指令,复制该第一项目,得到第二项目。
当服务器接收到该第二终端发送的复制指令时,服务器获取该复制指令中的第一项目标识,根据该第一项目标识,确定需要被复制的第一项目,对该第一项目进行复制,得到第二项目。服务器复制得到第二项目之后,还可以在第二项目与第一项目之间建立复制(fork)关系。
需要说明的一点是,在本公开实施例中,可以多次复制该第一项目得到多个第二项目,相应的,可以在该版本库中添加多个第二项目对应的第二命名空间,如图6所示,通过两次复制第一项目得到两个第二项目,其中,该第一项目为项目1,该第一项目对应的第一命名空间和第二引用关系分别为命名空间1和引用关系1。项目2和项目3为复制该第一项目得到的第二项目,该项目2对应的第二命名空间和第三引用关系分别为命名空间2和引用关系2;该项目3对应的第二命名空间和第三引用关系分别为命名空间3和引用关系3。
复制第一项目的过程中,并不对该第一项目的版本库进行复制,而是,第一项目和复制得到的第二项目共享该第一项目的版本库,因此,当服务器复制第一项目得到第二项目时,可以通过步骤406,在版本库中指定第二命名空间。
步骤406:服务器根据该第一项目标识,从该第一命名空间中获取该第一项目的第二引用关系。
服务器获取该第一项目的第一项目标识,根据该第一项目标识确定该第一项目对应的第一命名空间,从该第一命名空间中获取该第一项目的第二引用关系。第一命名空间中存储有该第一项目的第二引用关系,在本步骤中,服务器根据该第一项目的项目标识,确定该第一项目的第一命名空间,在该第一命名空间中获取该第一项目的第二引用关系,由于该第二引用关系中存储有该第一项目的项目文件的文件标识和项目文件的存储路径,通过该第二引用关系,确定出该第一项目的项目文件的文件标识。例如,该第二引用关系中的文件标识可以为该文件的tag name(节点名称),相应的,该获取第二引用关系中的文件标识的过程可以为:服务器获取该第二引用关系可以为获取该第一项目的ref:Branch列表,通过解析该ref:Branch列表,获取该第一项目的项目文件的文件标识,即该项目文件的tagname;对于该第一项目的项目文件的存储路径,服务器根据该第二引用关系获取该第一项目的ref:Tag列表,通过解析该ref:Tag列表,获取该第一项目文件的存储路径,即branchname(分支名称)。根据该获取到的存储路径和文件标识生成第二引用关系。
由于步骤403中,将该第二引用关系存储至服务器中时,在第二属性文件中存储了该携带该第一项目的项目标识的第二引用关系,或者,将该第一引用关系和第一项目标识存储在该第二属性文件中,相应的,在本步骤中,可以通过第一项目标识获取包括有该第一项目标识的第二引用关系,还可以通过该第二引用标识,确定该第二引用标识对应的第二属性文件,从该第二属性文件中,获取该第二引用关系。
步骤407:服务器在该版本库中指定第二命名空间,将该第二项目标识添加到该第二引用关系中,得到第三引用关系。
服务器在获取到的第二引用关系中,添加该第二项目的第二项目标识,得到第三引用关系,该第三引用关系为第二项目对应的引用关系。
通过步骤406可知,服务器获取的第二引用关系可以为携带第一项目标识的第二引用关系,也可以为不携带第一项目标识的第二引用关系。相应的,在一种可能的实现方式中,当该第二引用关系为携带第一项目标识的第二引用关系时,将该第二引用关系中的第一项目标识删除,将该第二项目标识添加到该第二引用关系中,得到携带第二项目标识的第三引用关系。在另一种可能的实现方式中,当该第二引用关系为不携带第一项目标识的第二引用关系时,服务器可以将该第二项目的第二项目标识添加到该第二引用关系中,得到第三引用关系。
在一种可能的实现方式中,服务器向该第二引用关系中添加该第二项目标识时,直接将该第二引用关系中的第一项目的第一项目标识修改为第二项目标识得到第三引用关系。在另一种可能的实现方式,服务器向该第二引用关系中添加该第二项目标识时,可以从该第一项目的第一命名空间中,获取该第一项目的项目文件列表,根据该列表解析出该第一项目的项目文件的文件标识,将该文件标识中的第一项目标识修改为第二项目标识,得到第二项目的项目文件的文件标识,根据该第二项目的项目文件的文件标识生成第三引用关系。
需要说明的一点是,服务器接收到复制指令后,可以先根据该复制指令指定第二命名空间,再根据该复制指令获取第二引用关系;也可以先根据该复制指令获取第二引用关系,再根据该复制指令指定第二命名空间;还可以同时根据该复制指令指定第二命名空间和获取第二引用关系。在本公开实施例中,对服务器指定第二命名空间和获取第二引用关系的顺序不作具体限定。
步骤408:服务器将该第三引用关系添加到该第二项目的该第二命名空间中。
服务器确定该第三引用关系后,可以将该第三引用关系添加到该第二项目的第二命名空间中。在一种可能的实现方式中,服务器可以直接将该第三引用关系存储到第二命名空间中。
在另一种可能的实现方式中,服务器还可以在该第二命名空间中添加第三属性文件,将该第三引用关系存储在该第二命名空间的第三属性文件中,相应的,本步骤可以通过以下步骤4081和4082实现,包括:
4081:服务器在该第二命名空间中生成该第二项目的第三属性文件。
4082:服务器将该第三引用关系存储在该第三属性文件中。
需要说明的一点是,第二终端在服务器中复制第一项目之前,第一终端先对第二终端进行认证,在认证通过时,才允许第二终端从服务器中复制第一项目。
在本公开实施例中,由于在复制第一项目时,并不需要复制该第一项目的版本库,而是将该第一项目的第二引用关系复制到第二项目的第二命名空间中,因此,可以节省服务器中存储版本库所占用的空间,提高存储资源利用率,并且,当多次复制时,该存储利用率更高。例如,一个第一项目的版本库所占空间为100M,当对该第一项目复制10次时,现有技术中需要对该版本库也复制10次,则复制10次后,得到11个项目和该11个项目对应的版本库,因此,占用的资源为1100M。而通过本公开提供的方法对该第一项目复制10次后,并不对该第一项目的版本库进行复制,因此,占用的资源仍为100M。由此可见,通过本公开提供的方法对第一项目进行10次复制后,得到的项目所占用的空间为现有技术的1/11,可以节省服务器中存储版本库所占用的空间,提高存储资源利用率。
在本公开实施例中,通过在创建第一项目的版本库时,在第一项目的版本库中添加第一命名空间,将携带有该第一项目的第一项目标识的第二引用关系存储在该第一命名空间中,当复制该第一项目,得到第二项目时,在该版本库中指定第二项目对应的第二命名空间,在该第二命名空间中存储第二项目的第三引用关系,由于该第二引用关系和第三引用关系都存储有版本库中项目文件的文件标识和存储路径,因此,在复制第一项目得到第二项目时,可以仅复制该引用关系,而不复制该第一项目的版本库,从而节省了存储资源,提高了资源利用率。
当服务器接收到用于获取任一项目的项目文件的获取请求时,可以根据该获取请求获取目标项目标识,根据该目标项目标识确定与该目标项目标识对应的目标命名空间,从该目标命名空间中获取该目标引用关系,根据该目标引用关系从版本库中获取该目标项目文件。服务器还可以根据终端的获取请求,为该终端提供clone版本库的服务,
图7为根据一示例性实施例提供的一种版本库管理方法流程图,如图7所示,在本公开实施例中以服务器克隆(clone)任一项目的版本库,并将该版本库发送给终端为例进行说明。该版本库管理方法包括以下步骤:
步骤701:第二终端向服务器发送第一获取请求,该第一获取请求中携带目标项目的目标项目标识,用于指示服务器向该第二终端发送目标引用关系。
当开发人员需要获取任一项目的版本库时,可以通过第二终端向该服务器发送获取请求。
需要说明的一点是,该第二终端向服务器发送第一获取请求时,可以直接向该服务器发送该第一获取请求。如图8所示,第二终端还可以向第一终端发送该第一获取请求,由第一终端对该第二终端进行认证,当第一终端对该第二终端成功认证时,才向该服务器发送该第一获取请求,并且,在一种可能的实现方式中,第一服务器对该第二服务器认证成功后,可以由该第一终端向服务器转发该第一获取请求。在另一种可能的实现方式中,第一服务器对该第二服务器认证成功后,第一终端可以向该第二终端发送认证成功消息,相应的,该第二终端直接向服务器发送该第一获取请求。
步骤702:服务器接收该第二终端的第一获取请求。
服务器通过该获取请求,确定需要获取目标项目的版本库。其中,该目标项目可以为该版本库对应的任一项目,该目标项目可以为第一项目或第二项目,在本公开实施例中,对该目标项目不作具体限定。通过该目标项目标识,确定与该目标项目标识相同的项目标识,将该项目标识对应的项目确定为目标项目。
步骤703:服务器根据该目标项目标识,从目标命名空间中获取包括该目标项目标识的第一目标引用关系。
在一种可能的实现方式中,服务器根据该目标项目的项目标识,确定该项目对应的第一目标引用关系,本步骤与步骤406相似,在此不再赘述。
在另一种可能的实现方式中,服务器通过挂钩(hook)机制,实现AdvertiseRefsHook(引用关系通知挂钩)接口,通过该AdvertiseRefsHook接口获取该版本库中的所有引用关系,根据该目标项目标识,从该版本库中的所有引用关系中,获取该第一目标引用关系。
并且,由步骤405可知,服务器获取该第一目标引用关系中可能不携带该目标项目标识,此时,也可以不执行步骤704,直接执行步骤705,将该第一目标引用关系作为第二目标引用关系发送给第二终端。
步骤704:服务器删除该第一目标引用关系中的该目标项目标识,得到第二目标引用关系。
在一种可能的实现方式中,该第一目标引用关系的目标项目标识,直接指向该目标项目文件,此时,服务器获取到第一目标引用关系后,直接将该目标引用关系中的目标项目标识删除,得到第二目标引用关系。在另一种可能的实现方式中,服务器获取该第一目标引用关系的目标属性文件,该目标属性文件可以为一个SymbolicRef(符号标识),该SymbolicRef为该属性文件的文件标识,通过解析该SymbolicRef获取该项目的objectIdRef(项目标识),同时删除该目标项目的项目标识和属性文件的文件标识。
步骤705:服务器向该第二终端发送该第二目标引用关系。
由于步骤701中,第二终端向该服务器发送第一获取请求时,可以直接将该第一获取请求发送给服务器,也可以通过第一终端进行认证。相应的,在服务器向第二终端发送该第一获取请求时,可以将该第二目标引用关系直接发送给第二终端,也可以将该第二目标引用关系发送给第一终端,由第一终端将该第二目标引用关系发送给第二终端。在本公开实施例中,对此不作具体限定。
步骤706:第二终端接收该服务器发送的第二目标引用关系。
在本步骤中,第二终端可以直接接收服务器发送的第二目标引用关系,还可以接收服务器通过第一终端转发的第一目标引用关系。
步骤707:第二终端向服务器发送第二获取请求,该第二获取请求中携带该第二目标引用关系中的第一目标项目文件的第一存储路径。
第二终端接收到服务器发送的第二目标引用关系后,可以根据该第一目标项目文件的目标项目文件标识,从该第二目标引用关系中确定该目标项目文件标识对应的第一存储路径,并将该第一存储路径发送该服务器。其中,该第二服务器获取该第一存储路径的方法与步骤406中,服务器获取存储路径的方法相似,在此不再赘述。
需要说明的一点是,第二终端向服务器发送第二获取请求时,也可以直接将该第二获取请求发送给服务器,也可以在第一服务器认证后,再向该服务器发送该第二获取请求,该过程与步骤701中,第二终端向服务器发送第一获取请求的过程相似,在此不再赘述。
步骤708:服务器接收该终端的第二获取请求。
服务器可以通过直接接收该终端发送的第二获取请求,也可以接收该第一终端发送的第二获取请求。
步骤709:服务器根据该第一目标项目文件的第一存储路径,从该版本库中获取该第一目标项目文件。
服务器获取到该第一目标项目文件的第一存储路径后,从该版本库中获取与该第一存储路径对应的第一目标项目文件。
步骤710:服务器向该第二终端发送该第一目标项目文件。
在本公开实施例中,通过在创建第一项目的版本库时,在第一项目的版本库中添加第一命名空间,将携带有该第一项目的第一项目标识的第二引用关系存储在该第一命名空间中,当复制该第一项目,得到第二项目时,在该版本库中指定第二项目对应的第二命名空间,在该第二命名空间中存储第二项目的第三引用关系,由于该第二引用关系和第三引用关系都存储有版本库中项目文件的文件标识和存储路径,因此,在复制第一项目得到第二项目时,可以仅复制该引用关系,而不复制该第一项目的版本库,从而节省了存储资源,提高了资源利用率。
当服务器接收到用于获取任一项目的项目文件的获取请求时,可以根据该获取请求获取目标项目标识,根据该目标项目标识确定与该目标项目标识对应的目标命名空间,从该目标命名空间中获取该目标引用关系,根据该目标引用关系向版本库中推送目标项目文件。服务器还可以根据终端的推送请求,为该第二终端提供推送(push)目标项目文件的服务。
图9为根据一示例性实施例提供的一种版本库管理方法流程图,如图9所示,在本公开实施例中以终端向服务器推送(push)目标项目文件为例进行说明。该版本库管理方法包括以下步骤:
步骤901:第二终端向服务器发送第一获取请求,该第一获取请求中携带目标项目的目标项目标识,用于指示服务器向该第二终端发送目标引用关系。
本步骤与步骤701相同,在此不再赘述。
步骤902:服务器接收该终端的第一获取请求。
本步骤与步骤702相同,在此不再赘述。
步骤903:服务器根据该目标项目标识,从目标命名空间中获取包括该目标项目标识的第一目标引用关系。
本步骤与步骤703相同,在此不再赘述。
步骤904:服务器删除该第一目标引用关系中的该目标项目标识,得到第二目标引用关系。
本步骤与步骤704相同,在此不再赘述。
步骤905:服务器向该终端发送该第二目标引用关系。
本步骤与步骤705相同,在此不再赘述。
步骤906:第二终端接收该服务器发送的第二目标引用关系。
需要说明的一点是,如图10所示,该第二终端向服务器发送第二目标引用关系时,可以将该第二目标引用关系直接发送给第一终端,由第一终端认证后,再将该第二目标引用关系发送给服务器,本步骤与步骤706相似,在此不再赘述。
步骤907:第二终端向服务器发送推送请求,该推送请求中携带待存储的第二目标项目文件和该第二目标引用关系中的第二存储路径。
本步骤与步骤707相似,在此不再赘述。
步骤908:服务器接收该终端的推送请求。
第二终端接收到服务器发送的第二目标引用关系后,第二终端可以引用该第二目标引用关系中的第二存储路径。该第二存储路径可以为该第二目标存储路径中的任一存储路径,该第二存储路径可以为用户在第二目标引用关系中选择的存储路径。当获取到该第二目标项目文件和第二存储路径后,将该第二存储路径和第二目标项目文件发送给服务器。
需要说明的一点是,第二终端向服务器发送第一获取请求和推送请求时,在一种可能的实现方式中,第二终端可以直接将该第一获取请求或推送请求发送给服务器,相应的,服务器可以直接接收该第二终端发送的第一获取请求或推送请求。在另一种可能的实现方式中,如图10所示,第二终端在向该项目的开发者发送第一获取请求或推送请求,取得该项目的开发者的授权后,第二终端才能通过该第一获取请求或推送请求访问该服务器。
步骤909:服务器根据该第二存储路径,将该第二目标项目文件存储到该版本库中。
服务器接收发到该第二存储路径和第二目标项目文件后,根据该第二存储路径将该第二目标项目文件存储到版本库中。由于终端发送的第二存储路径中不携带该第二目标项目文件对应的目标项目的目标项目标识,因此,在根据该目标项目的项目标识和第二存储路径中的。
步骤910:服务器获取该第二目标引用关系对应的该第一目标引用关系。
服务器将该第二目标引用关系时,通过继承ReceiveCommand(命令接收者)接口,通过该ReceiveCommand接口,获取该第二目标引用关系的目标项目标识,根据该目标项目标识,确定该第一目标引用关系。
步骤911:服务器将该第二存储路径更新到该第一目标引用关系中。
当终端将目标项目修改后,可以将该目标项目存储到该目标项目对应的目标命名空间中,
通过该推送请求,终端可以将修改后的第二项目的修改内容推送给服务器,相应的,服务器可以将修改的项目文件存储在版本库中,并生成新的第四引用关系,该过程可以通过以下步骤9111-9112实现,包括:
步骤92111:当对该第二项目中对应的项目文件进行修改后,服务器将修改后的项目文件存储在该版本库中。
步骤9112:服务器将该修改后的项目文件的文件标识和存储路径更新到该第三引用关系中,得到第四引用关系。
在本步骤中,当将第二项目的修改内容推送给服务器时,可以直接将该修改内容存储在版本库中,也可以将该推送内容存储在该第二项目的第二命名空间中,当接收到合并指令时,服务器将该推送内容合并到版本库中。如图11所示,图11为,合并项目时的显示页面,该页面中包括,用户提交的项目,即第二项目和合并的目标项目,即第一项目,合并完成后,得到更新后的第一项目,用户可以通过如图12所示的操作界面,继续对该第一项目进行操作。需要说明的一点是,服务器可以将用户手动选择的内容合并,也可以直接筛选出更新的内容进行合并,在本公开实施例中,对此不作具体限定。该过程可以通过以下步骤实现,包括:
(1)服务器接收该终端的合并指令,该合并指令中包括需要合并的第二项目的第二项目标识。
(2)服务器根据该第二项目标识,确定该第二项目标识对应的第二命名空间。
(3)服务器从该第二命名空间中获取该第二命名空间的第四引用关系。
(4)服务器将该第四引用关系和该第二引用关系进行对比,确定该第四引用关系和该第二引用关系的差异引用关系。
(5)服务器将该差异引用关系更新到该第二引用关系中,得到第五引用关系。
需要说明的一点是,在本步骤中,还可以对多个第二项目进行合并,该过程与上述步骤对第一项目和第二项目进行合并的过程相似,在此不再赘述。
在本步骤中,服务器可以将修改后的项目文件的文件标识和存储路径更新到该第二项目第二命名空间中,得到第四引用关系,当接收到合并指令时,再将该第四引用关系,更新到第二引用关系中,得到第五引用关系。
在本公开实施例中,通过在创建第一项目的版本库时,在第一项目的版本库中添加第一命名空间,将携带有该第一项目的第一项目标识的第二引用关系存储在该第一命名空间中,当复制该第一项目,得到第二项目时,在该版本库中指定第二项目对应的第二命名空间,在该第二命名空间中存储第二项目的第三引用关系,由于该第二引用关系和第三引用关系都存储有版本库中项目文件的文件标识和存储路径,因此,在复制第一项目得到第二项目时,可以仅复制该引用关系,而不复制该第一项目的版本库,从而节省了存储资源,提高了资源利用率。
并且,在本公开实施例中,由于终端推送的项目文件和第一项目的项目文件在同一版本库中,因此,在合并过程中,无需再将项目文件拉取到同一版本库中,提高了合并速度,提高了服务器的性能,改善了用户体验。
并且,由于只在一个版本库中进行操作,具有fork关系的项目都在版本库中,使得具有fork关系的项目并不分散,因此,方便后续对该服务器进行维护,提高了运维效率。
图13是据一示例性实施例提供的一种版本库管理装置的框图。该装置用于执行上述版本库管理方法执行时的步骤,参见图13,装置包括:
创建模块1301,用于当创建第一项目的版本库时,在该版本库中指定第一命名空间,该版本库中存储该第一项目的项目文件;
第一添加模块1302,用于将该第一项目的第一项目标识,添加到该第一项目的第一引用关系中,得到第二引用关系,该第一引用关系用于存储该项目文件的文件标识和存储路径;
第一存储模块1303,用于将该第二引用关系存储在该第一命名空间中;
复制模块1304,用于当接收到终端的复制指令时,根据该复制指令,复制该第一项目,得到第二项目,该复制指令中携带该第一项目的第一项目标识;
第一获取模块1305,用于根据该第一项目标识,从该第一命名空间中获取该第一项目的第二引用关系;
第二添加模块1306,用于在该版本库中指定第二命名空间,将该第二项目的第二项目标识添加到该第二引用关系中,得到第三引用关系;
第三添加模块1307,用于将该第三引用关系添加到该第二项目的该第二命名空间中。
在一种可能的实现方式中,第一存储模块1303,还用于删除版本库中的第一属性文件,第一属性文件中存储第一引用关系;在第一命名空间中生成第一项目的第二属性文件,将第二引用关系存储在第二属性文件中。
在另一种可能的实现方式中,第三添加模块1307,还用于在第二命名空间中生成第二项目的第三属性文件;将第三引用关系存储在第三属性文件中。
在另一种可能的实现方式中,装置还包括:
第二存储模块,用于当对第二项目中对应的项目文件进行修改后,将修改后的项目文件存储在版本库中;
第一更新模块,用于将修改后的项目文件的文件标识和存储路径更新到第三引用关系中,得到第四引用关系。
在另一种可能的实现方式中,装置还包括:
第一接收模块,用于接收终端的第一获取请求,第一获取请求中携带目标项目的目标项目标识;
第二获取模块,用于根据目标项目标识,从目标命名空间中获取包括目标项目标识的第一目标引用关系;
删除模块,用于删除第一目标引用关系中的目标项目标识,得到第二目标引用关系;
第一发送模块,用于向终端发送第二目标引用关系。
在另一种可能的实现方式中,装置还包括:
第二接收模块,用于接收终端的第二获取请求,第二获取请求中携带第二目标引用关系中的第一目标项目文件的第一存储路径;
第三获取模块,用于根据第一目标项目文件的第一存储路径,从版本库中获取第一目标项目文件;
第二发送模块,用于向终端发送第一目标项目文件。
在另一种可能的实现方式中,装置还包括:
第三接收模块,用于接收终端的推送请求,推送请求中携带待存储的第二目标项目文件和第二目标引用关系中的第二存储路径;
第三存储模块,用于根据第二存储路径,将第二目标项目文件存储到版本库中;
第四获取模块,用于获取第二目标引用关系对应的第一目标引用关系;
第二更新模块,用于将第二存储路径更新到第一目标引用关系中,得到第三目标引用关系。
在另一种可能的实现方式中,装置还包括:
第四接收模块,用于接收终端的合并指令,合并指令中包括需要合并的第二项目的第二项目标识;
确定模块,用于根据第二项目标识,确定第二项目标识对应的第二命名空间;
第五获取模块,用于从第二命名空间中获取第二命名空间的第四引用关系;
第六获取模块,用于将第四引用关系和第二引用关系进行对比,确定第四引用关系和第二引用关系的差异引用关系;
第三更新模块,用于将差异引用关系更新到第二引用关系中,得到第五引用关系。
在本公开实施例中,通过在创建第一项目的版本库时,在第一项目的版本库中添加第一命名空间,将携带有该第一项目的第一项目标识的第二引用关系存储在该第一命名空间中,当复制该第一项目,得到第二项目时,在该版本库中指定第二项目对应的第二命名空间,在该第二命名空间中存储第二项目的第三引用关系,由于该第二引用关系和第三引用关系都存储有版本库中项目文件的文件标识和存储路径,因此,在复制第一项目得到第二项目时,可以仅复制该引用关系,而不复制该第一项目的版本库,从而节省了存储资源,提高了资源利用率。
需要说明的是:上述实施例提供的版本库管理装置在版本库管理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的版本库管理装置与版本库管理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图14是本公开实施例提供的一种服务器1400的结构示意图,该服务器1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)1401和一个或一个以上的存储器1402,其中,该存储器1402中存储有至少一条指令,该至少一条指令由该处理器1401加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
服务器1400可以用于执行上述版本库管理方法中服务器所执行的步骤。
本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质应用于终端,该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,该指令、该程序、该代码集或该指令集由处理器加载并执行以实现上述实施例的版本库管理方法中服务器所执行的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (16)
1.一种版本库管理方法,其特征在于,所述方法包括:
当创建第一项目的版本库时,在所述版本库中指定第一命名空间,所述版本库中存储所述第一项目的项目文件;
将所述第一项目的第一项目标识,添加到所述第一项目的第一引用关系中,得到第二引用关系,所述第一引用关系用于存储所述项目文件的文件标识和存储路径;
删除所述版本库中的第一属性文件,所述第一属性文件中存储所述第一引用关系;
在所述第一命名空间中生成所述第一项目的第二属性文件,将所述第二引用关系存储在所述第二属性文件中;
当接收到终端的复制指令时,根据所述复制指令,复制所述第一项目,得到第二项目,所述复制指令中携带所述第一项目的第一项目标识;
根据所述第一项目标识,从所述第一命名空间中获取所述第一项目的第二引用关系;
在所述版本库中指定第二命名空间,将所述第二项目的第二项目标识添加到所述第二引用关系中,得到第三引用关系;
将所述第三引用关系添加到所述第二项目的所述第二命名空间中。
2.根据权利要求1所述的方法,其特征在于,所述将所述第三引用关系添加到所述第二项目的所述第二命名空间中,包括:
在所述第二命名空间中生成所述第二项目的第三属性文件;
将所述第三引用关系存储在所述第三属性文件中。
3.根据权利要求1所述的方法,其特征在于,所述将所述第三引用关系添加到所述第二项目的所述第二命名空间中之后,所述方法还包括:
当对所述第二项目中对应的项目文件进行修改后,将修改后的项目文件存储在所述版本库中;
将所述修改后的项目文件的文件标识和存储路径更新到所述第三引用关系中,得到第四引用关系。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述终端的第一获取请求,所述第一获取请求中携带目标项目的目标项目标识;
根据所述目标项目标识,从目标命名空间中获取包括所述目标项目标识的第一目标引用关系;
删除所述第一目标引用关系中的所述目标项目标识,得到第二目标引用关系;
向所述终端发送所述第二目标引用关系。
5.根据权利要求4对所述的方法,其特征在于,所述向所述终端发送所述第二目标引用关系之后,所述方法还包括:
接收所述终端的第二获取请求,所述第二获取请求中携带所述第二目标引用关系中的第一目标项目文件的第一存储路径;
根据所述第一目标项目文件的第一存储路径,从所述版本库中获取所述第一目标项目文件;
向所述终端发送所述第一目标项目文件。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
接收所述终端的推送请求,所述推送请求中携带待存储的第二目标项目文件和所述第二目标引用关系中的第二存储路径;
根据所述第二存储路径,将所述第二目标项目文件存储到所述版本库中;
获取所述第二目标引用关系对应的所述第一目标引用关系;
将所述第二存储路径更新到所述第一目标引用关系中,得到第三目标引用关系。
7.根据权利要求3所述的方法,其特征在于,所述将所述修改后的项目文件的文件标识和存储路径更新到所述第三引用关系中,得到第四引用关系之后,所述方法还包括:
接收所述终端的合并指令,所述合并指令中包括需要合并的第二项目的第二项目标识;
根据所述第二项目标识,确定所述第二项目标识对应的第二命名空间;
从所述第二命名空间中获取所述第二命名空间的第四引用关系;
将所述第四引用关系和所述第二引用关系进行对比,确定所述第四引用关系和所述第二引用关系的差异引用关系;
将所述差异引用关系更新到所述第二引用关系中,得到第五引用关系。
8.一种版本库管理装置,其特征在于,所述装置包括:
创建模块,用于当创建第一项目的版本库时,在所述版本库中指定第一命名空间,所述版本库中存储所述第一项目的项目文件;
第一添加模块,用于将所述第一项目的第一项目标识,添加到所述第一项目的第一引用关系中,得到第二引用关系,所述第一引用关系用于存储所述版本库中项目文件的文件标识和存储路径;
第一存储模块,用于删除所述版本库中的第一属性文件,所述第一属性文件中存储所述第一引用关系;在所述第一命名空间中生成所述第一项目的第二属性文件,将所述第二引用关系存储在所述第二属性文件中;
复制模块,用于当接收到终端的复制指令时,根据所述复制指令,复制所述第一项目,得到第二项目,所述复制指令中携带所述第一项目的第一项目标识;
第一获取模块,用于根据所述第一项目标识,从所述第一命名空间中获取所述第一项目的第二引用关系;
第二添加模块,用于在所述版本库中指定第二命名空间,将所述第二项目标识添加到所述第二引用关系中,得到第三引用关系;
第三添加模块,用于将所述第三引用关系添加到所述第二项目的所述第二命名空间中。
9.根据权利要求8所述的装置,其特征在于,所述第一存储模块,还用于删除所述版本库中的第一属性文件,所述第一属性文件中存储所述第一引用关系;在所述第一命名空间中生成所述第一项目的第二属性文件,将所述第二引用关系存储在所述第二属性文件中;
在另一种可能的实现方式中,所述第三添加模块,还用于在所述第二命名空间中生成所述第二项目的第三属性文件;将所述第三引用关系存储在所述第三属性文件中。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二存储模块,用于当对所述第二项目中对应的项目文件进行修改后,将修改后的项目文件存储在所述版本库中;
第一更新模块,用于将所述修改后的项目文件的文件标识和存储路径更新到所述第三引用关系中,得到第四引用关系。
11.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第一接收模块,用于接收所述终端的第一获取请求,所述第一获取请求中携带目标项目的目标项目标识;
第二获取模块,用于根据所述目标项目标识,从目标命名空间中获取包括所述目标项目标识的第一目标引用关系;
删除模块,用于删除所述第一目标引用关系中的所述目标项目标识,得到第二目标引用关系;
第一发送模块,用于向所述终端发送所述第二目标引用关系。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第二接收模块,用于接收所述终端的第二获取请求,所述第二获取请求中携带所述第二目标引用关系中的第一目标项目文件的第一存储路径;
第三获取模块,用于根据所述第一目标项目文件的第一存储路径,从所述版本库中获取所述第一目标项目文件;
第二发送模块,用于向所述终端发送所述第一目标项目文件。
13.根据权利要求11所述的装置,其特征在于,所述装置还包括:
第三接收模块,用于接收所述终端的推送请求,所述推送请求中携带待存储的第二目标项目文件和所述第二目标引用关系中的第二存储路径;
第三存储模块,用于根据所述第二存储路径,将所述第二目标项目文件存储到所述版本库中;
第四获取模块,用于获取所述第二目标引用关系对应的所述第一目标引用关系;
第二更新模块,用于将所述第二存储路径更新到所述第一目标引用关系中,得到第三目标引用关系。
14.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第四接收模块,用于接收所述终端的合并指令,所述合并指令中包括需要合并的第二项目的第二项目标识;
确定模块,用于根据所述第二项目标识,确定所述第二项目标识对应的第二命名空间;
第五获取模块,用于从所述第二命名空间中获取所述第二命名空间的第四引用关系;
第六获取模块,用于将所述第四引用关系和所述第二引用关系进行对比,确定所述第四引用关系和所述第二引用关系的差异引用关系;
第三更新模块,用于将所述差异引用关系更新到所述第二引用关系中,得到第五引用关系。
15.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求1至7任一权利要求所述的版本库管理方法中所执行的操作。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1至7任一权利要求所述的版本库管理方法中所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910316832.7A CN110045983B (zh) | 2019-04-19 | 2019-04-19 | 版本库管理方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910316832.7A CN110045983B (zh) | 2019-04-19 | 2019-04-19 | 版本库管理方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110045983A CN110045983A (zh) | 2019-07-23 |
CN110045983B true CN110045983B (zh) | 2021-06-01 |
Family
ID=67277990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910316832.7A Active CN110045983B (zh) | 2019-04-19 | 2019-04-19 | 版本库管理方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110045983B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522615B (zh) * | 2020-04-23 | 2023-08-15 | 深圳赛安特技术服务有限公司 | 命令行界面的更新方法、装置、设备及存储介质 |
CN111930411B (zh) * | 2020-09-30 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 代码升级方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030144A (zh) * | 2006-02-28 | 2007-09-05 | 国际商业机器公司 | 用于打包软件的方法与系统 |
CN101251808A (zh) * | 2006-12-13 | 2008-08-27 | 国际商业机器公司 | 用于在软件配置管理系统中引用文件的计算机方法和设备 |
CN104156278A (zh) * | 2014-08-01 | 2014-11-19 | 江苏大学 | 一种文件版本控制系统及其方法 |
CN106155724A (zh) * | 2015-04-14 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种升级方法及装置 |
US9747291B1 (en) * | 2015-12-29 | 2017-08-29 | EMC IP Holding Company LLC | Non-disruptive upgrade configuration translator |
-
2019
- 2019-04-19 CN CN201910316832.7A patent/CN110045983B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101030144A (zh) * | 2006-02-28 | 2007-09-05 | 国际商业机器公司 | 用于打包软件的方法与系统 |
CN101251808A (zh) * | 2006-12-13 | 2008-08-27 | 国际商业机器公司 | 用于在软件配置管理系统中引用文件的计算机方法和设备 |
CN104156278A (zh) * | 2014-08-01 | 2014-11-19 | 江苏大学 | 一种文件版本控制系统及其方法 |
CN106155724A (zh) * | 2015-04-14 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种升级方法及装置 |
US9747291B1 (en) * | 2015-12-29 | 2017-08-29 | EMC IP Holding Company LLC | Non-disruptive upgrade configuration translator |
Non-Patent Citations (1)
Title |
---|
一种基于版本库的SCM系统的设计与实现;梁智斌;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110315;I138-786 * |
Also Published As
Publication number | Publication date |
---|---|
CN110045983A (zh) | 2019-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7212040B2 (ja) | コンテンツ管理クライアント同期サービス | |
CN110045983B (zh) | 版本库管理方法、装置及服务器 | |
CN112685091A (zh) | 基于大数据的业务请求处理方法、装置、设备和介质 | |
US20220321640A1 (en) | Intent tracking for asynchronous operations | |
CN113448493B (zh) | 用于备份数据的方法、电子设备和计算机可读介质 | |
CN114546410A (zh) | 一种基于设计模式的代码优化方法及相关设备 | |
CN113495723A (zh) | 一种调用功能组件的方法、装置及存储介质 | |
CN111078669B (zh) | 基于名字解析树的处理方法、装置、设备及存储介质 | |
CN116126338A (zh) | 一种低代码开发方法、存储介质和电子设备 | |
CN113760349A (zh) | 镜像升级方法和装置 | |
CN116679956A (zh) | 智能汽车操作系统的界面开发升级方法、设备及存储介质 | |
CN114780274A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |