MCPcopy Create free account
hub / github.com/Tencent/CodeAnalysis / ScmRevisionCheck

Class ScmRevisionCheck

client/node/localtask/scmrevision.py:23–184  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21
22
23class ScmRevisionCheck(object):
24 def __init__(self, dog_server, source_dir, total_scan, scm_info,
25 scm_client, report_file, server_url, scan_history_url,
26 job_web_url, repo_id, proj_id, org_sid, team_name):
27 self._total_scan = total_scan
28 self._source_dir = source_dir
29 self._scm_info = scm_info
30 self._scm_client = scm_client
31 self._report_file = report_file
32 self._dog_server = dog_server
33 self._server_url = server_url
34 self._repo_id = repo_id
35 self._proj_id = proj_id
36 self._org_sid = org_sid
37 self._team_name = team_name
38 self._scan_history_url = scan_history_url
39 self._job_web_url = job_web_url
40
41 def _local_rev_is_newer(self, compare_revision):
42 """
43 判断本地代码版本是否更新(大于对比版本)
44 :param compare_revision:
45 :return: True | False | "Error"(判断异常)
46 """
47 # 判空
48 if not compare_revision:
49 logger.error("compare_revision is empty(%s)" % compare_revision)
50 return "Error"
51 # 如果版本号相同,本地revision肯定不比last_revision更新,直接返回False
52 if str(compare_revision) == str(self._scm_info.scm_revision):
53 return False
54
55 # 没有指定本地代码目录时, self._scm_client还未被初始化,为None
56 # 此时扫描的scm_revision为远端代码库的最新版本,由于此时已经排除相等的情况,那么revision肯定是比对比版本更新的
57 if not self._scm_client:
58 return True
59 else:
60 try:
61 is_newer = self._scm_client.revision_lt(compare_revision, self._scm_info.scm_revision)
62 return is_newer
63 except Exception as err:
64 # 以下情况会异常:
65 # 1. 本地代码版本 < scm_last_revision,git本地没有scm_last_revision的信息,无法比较
66 # 2. scm_last_revision的git记录被删除,导致找不到该版本,无法比较
67 logger.error("scm_client.revision_lt() warning: %s", err)
68 return "Error"
69
70 def is_revision_unchanged(self):
71 """
72 判断扫描后本地代码revision是否与扫描前一致
73 :return: True(版本相同)|False(版本不同), error_msg
74 """
75 # 不使用本地代码(新拉取的代码),不需要判断
76 if not self._source_dir:
77 return True, ""
78 # 获取扫描完成后的本地代码版本号
79 try:
80 after_scan_revision = self._scm_client.info().commit_revision

Callers 2

generate_requestMethod · 0.90
scan_projectMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected