1.一种源代码自动合并方法,其特征在于,包括:
查找出两个不同版本的源代码中的疑似不兼容点;
根据预设的兼容性条件,判断两个所述源代码中的所述疑似不兼容点是否为实质上存在冲突的代码块;
若两个所述源代码中的所述疑似不兼容点为实质上存在冲突的代码块,则根据所述兼容性条件选择代码分支,以使用选择的所述代码分支中的代码块进行合并;以及
若两个所述源代码中的所述疑似不兼容点为实质上不存在冲突的代码块,则选择所述疑似不兼容点中的任一代码块进行合并。
2.根据权利要求1所述的源代码自动合并方法,其特征在于,所述查找出两个不同版本的源代码中的疑似不兼容点的步骤包括:
对比两个不同版本的所述源代码之间对应行的代码内容;
若所述对应行的代码内容不相同,则将所述对应行的代码内容作为所述疑似不兼容点。
3.根据权利要求1所述的源代码自动合并方法,其特征在于,
所述兼容性条件包括关键词、合并模式、所述疑似不兼容点的位置、代码修改时间、表达式的值中的一种或多种组合。
4.根据权利要求3所述的源代码自动合并方法,其特征在于,在所述兼容性条件包括关键词的情况下,所述判断两个所述源代码中的所述疑似不兼容点是否为实质上存在冲突的代码块的步骤,包括:
若所述疑似不兼容点满足关键词查询条件,则判定所述疑似不兼容点为实质上存在冲突的代码块;
若所述疑似不兼容点不满足关键词查询条件,则判定所述疑似不兼容点不是实质上存在冲突的代码块,
其中,所述关键词查询条件包括:在所述疑似不兼容点中的一个代码块中查找到第一类型关键词,且在所述疑似不兼容点中的另一个代码块中查找到第二类型关键词;或者在所述疑似不兼容点中的一个代码块中查找到所述第一类型关键词,且在所述疑似不兼容点中的另一个代码块中未查找到所述第二类型关键词;或者在所述疑似不兼容点中的一个代码块中查找到所述第二类型关键词,在所述疑似不兼容点中的另一个代码块中未查找到所述第一类型关键词。
5.根据权利要求3所述的源代码自动合并方法,其特征在于,在所述兼容性条件包括合并模式的情况下,所述判断两个所述源代码中的所述疑似不兼容点是否为实质上存在冲突的代码块的步骤,包括:
判断所述疑似不兼容点中是否仅有一个代码块的变量进行显示初始化;
若判定所述疑似不兼容点中仅有一个代码块的变量进行显示初始化,则判定所述疑似不兼容点是实质上存在冲突的代码块;
若判定所述疑似不兼容点中不是仅有一个代码块的变量进行显示初始化,则判断所述疑似不兼容点中是否仅有一个代码块的关键语句后有返回值检查;
若判定所述疑似不兼容点中仅有一个代码块的关键语句后有返回值检查,则判定所述疑似不兼容点是实质上存在冲突的代码块,若判定所述疑似不兼容点中不是仅有一个代码块的关键语句后有返回值检查,则判定所述疑似不兼容点不是实质上存在冲突的代码块。
6.根据权利要求1至5中任一项所述的源代码自动合并方法,其特征在于,所述源代码自动合并方法还包括:
检测所述兼容性条件是否正确;
若检测到所述兼容性条件不正确,则提示用户所述兼容性条件不正确和/或提示用户重新设置所述兼容性条件。
7.一种源代码自动合并装置,其特征在于,包括:
查找单元,用于查找出两个不同版本的源代码中的疑似不兼容点;
判断单元,用于根据预设的兼容性条件,判断两个所述源代码中的所述疑似不兼容点是否为实质上存在冲突的代码块;
合并单元,用于若所述判断单元判定两个所述源代码中的所述疑似不兼容点为实质上存在冲突的代码块,则根据所述兼容性条件选择代码分支,以使用选择的所述代码分支中的代码块进行合并;以及
所述合并单元还用于,若所述判断单元判定两个所述源代码中的所述疑似不兼容点为实质上不存在冲突的代码块,则选择所述疑似不兼容点中的任一代码块进行合并。
8.根据权利要求7所述的源代码自动合并装置,其特征在于,所述查找单元包括:
对比子单元,用于对比两个不同版本的所述源代码之间对应行的代码内容;
确定子单元,用于若所述对比子单元对比出所述对应行的代码内容不相同,则将所述对应行的代码内容作为所述疑似不兼容点。
9.根据权利要求7所述的源代码自动合并装置,其特征在于,
所述兼容性条件包括关键词、合并模式、所述疑似不兼容点的位置、代码修改时间、表达式的值中的一种或多种组合。
10.根据权利要求9所述的源代码自动合并装置,其特征在于,在所述兼容性条件包括关键词的情况下,所述判断单元具体用于,
若所述疑似不兼容点满足关键词查询条件,则判定所述疑似不兼容点为实质上存在冲突的代码块;
若所述疑似不兼容点不满足关键词查询条件,则判定所述疑似不兼容点不是实质上存在冲突的代码块,
其中,所述关键词查询条件包括:在所述疑似不兼容点中的一个代码块中查找到第一类型关键词,且在所述疑似不兼容点中的另一个代码块中查找到第二类型关键词;或者在所述疑似不兼容点中的一个代码块中查找到所述第一类型关键词,且在所述疑似不兼容点中的另一个代码块中未查找到所述第二类型关键词;或者在所述疑似不兼容点中的一个代码块中查找到所述第二类型关键词,且在所述疑似不兼容点中的另一个代码块中未查找到所述第一类型关键词。
11.根据权利要求9所述的源代码自动合并装置,其特征在于,在所述兼容性条件包括合并模式的情况下,所述判断单元具体用于,
判断所述疑似不兼容点中是否仅有一个代码块的变量进行显示初始化;
若判定所述疑似不兼容点中仅有一个代码块的变量进行显示初始化,则判定所述疑似不兼容点是实质上存在冲突的代码块;
若判定所述疑似不兼容点中不是仅有一个代码块的变量进行显示初始化,则判断所述疑似不兼容点中是否仅有一个代码块的关键语句后有返回值检查;
若判定所述疑似不兼容点中仅有一个代码块的关键语句后有返回值检查,则判定所述疑似不兼容点是实质上存在冲突的代码块,若判定所述疑似不兼容点中不是仅有一个代码块的关键语句后有返回值检查,则判定所述疑似不兼容点不是实质上存在冲突的代码块。
12.根据权利要求7至11中任一项所述的源代码自动合并装置,其特征在于,所述源代码自动合并装置还包括:
检测单元,用于检测所述兼容性条件是否正确;
提示单元,用于若所述检测单元检测到所述兼容性条件不正确,则提示用户所述兼容性条件不正确和/或提示用户重新设置所述兼容性条件。