@comate/zulu 1.2.1-beta.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/comate-engine/assets/skills/auto-commit-comate/SKILL.md +260 -0
- package/comate-engine/assets/skills/auto-commit-comate/references/data_structures.md +189 -0
- package/comate-engine/assets/skills/auto-commit-comate/references/new_version_instruction.md +209 -0
- package/comate-engine/assets/skills/auto-commit-comate/references/old_version_instruction.md +208 -0
- package/comate-engine/assets/skills/auto-commit-comate/scripts/git_diff_cli.py +196 -0
- package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/git_utils.py +20 -10
- package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/client.py +69 -40
- package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/farseer.py +8 -9
- package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/matching.py +65 -9
- package/comate-engine/assets/skills/auto-commit-comate/scripts/match_card_cli.py +37 -0
- package/comate-engine/assets/skills/cnap-comate/SKILL.md +157 -0
- package/comate-engine/assets/skills/cnap-comate/references/cases.md +198 -0
- package/comate-engine/assets/skills/cnap-comate/references/deploy-troubleshoot.md +15 -0
- package/comate-engine/assets/skills/cnap-comate/references/install.md +43 -0
- package/comate-engine/assets/skills/cnap-comate/references/kubectl.md +55 -0
- package/comate-engine/assets/skills/cnap-comate/references/login.md +125 -0
- package/comate-engine/assets/skills/cnap-comate/references/oncall.md +24 -0
- package/comate-engine/assets/skills/cnap-comate/scripts/install_cnap_cli.sh +36 -0
- package/comate-engine/assets/skills/code-security/SKILL.md +176 -0
- package/comate-engine/assets/skills/code-security/references/credential_hosting.md +102 -0
- package/comate-engine/assets/skills/code-security/references/vul_repair_sensitive.md +219 -0
- package/comate-engine/assets/skills/code-security/scripts/build_repair_info.py +0 -0
- package/comate-engine/assets/skills/code-security/scripts/credential_hosting.py +99 -0
- package/comate-engine/assets/skills/code-security/scripts/credential_poll.py +350 -0
- package/comate-engine/assets/skills/code-security/scripts/http_client.py +173 -0
- package/comate-engine/assets/skills/code-security/scripts/parse_scan_result.py +301 -0
- package/comate-engine/assets/skills/code-security/scripts/repair_vulnerability.py +261 -0
- package/comate-engine/assets/skills/code-security/scripts/report_chat.py +198 -0
- package/comate-engine/assets/skills/code-security/scripts/scan_vulnerability.py +316 -0
- package/comate-engine/assets/skills/code-security-comate/SKILL.md +219 -0
- package/comate-engine/assets/skills/code-security-comate/references/credential_hosting.md +102 -0
- package/comate-engine/assets/skills/code-security-comate/references/vul_repair-go_sql_injection.md +399 -0
- package/comate-engine/assets/skills/code-security-comate/references/vul_repair-java_sql_injection.md +591 -0
- package/comate-engine/assets/skills/code-security-comate/references/vul_repair-php_sql_injection.md +318 -0
- package/comate-engine/assets/skills/code-security-comate/references/vul_repair-python_sql_injection.md +198 -0
- package/comate-engine/assets/skills/code-security-comate/references/vul_repair_sensitive.md +219 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/credential_hosting.py +87 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/credential_poll.py +345 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/http_client.py +173 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/parse_scan_result.py +392 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/repair_vulnerability.py +245 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/report_chat.py +145 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/scan_vulnerability.py +444 -0
- package/comate-engine/assets/skills/code-security-comate/scripts/utils.py +153 -0
- package/comate-engine/assets/skills/comate-docs-comate/SKILL.md +148 -0
- package/comate-engine/assets/skills/comate-docs-comate/references/doc-map-extended.md +78 -0
- package/comate-engine/assets/skills/comate-docs-comate/references/models-and-billing.md +51 -0
- package/comate-engine/assets/skills/comate-docs-comate/references/product-overview.md +73 -0
- package/comate-engine/assets/skills/comate-docs-comate/references/query_content.md +83 -0
- package/comate-engine/assets/skills/comate-docs-comate/references/query_repo.md +57 -0
- package/comate-engine/assets/skills/comate-docs-comate/scripts/ku_operator.py +1575 -0
- package/comate-engine/assets/skills/create-image-comate/SKILL.md +278 -0
- package/comate-engine/assets/skills/create-skill-comate/SKILL.md +308 -217
- package/comate-engine/assets/skills/create-skill-comate/agents/analyzer.md +274 -0
- package/comate-engine/assets/skills/create-skill-comate/agents/comparator.md +202 -0
- package/comate-engine/assets/skills/create-skill-comate/agents/grader.md +223 -0
- package/comate-engine/assets/skills/create-skill-comate/assets/eval_review.html +146 -0
- package/comate-engine/assets/skills/create-skill-comate/eval-viewer/generate_review.py +489 -0
- package/comate-engine/assets/skills/create-skill-comate/eval-viewer/viewer.html +1325 -0
- package/comate-engine/assets/skills/create-skill-comate/references/schemas.md +430 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/__init__.py +0 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/__pycache__/aggregate_benchmark.cpython-311.pyc +0 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/aggregate_benchmark.py +412 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/generate_report.py +334 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/package_skill.py +140 -0
- package/comate-engine/assets/skills/create-skill-comate/scripts/utils.py +53 -0
- package/comate-engine/assets/skills/find-skills-comate/SKILL.md +15 -12
- package/comate-engine/assets/skills/find-skills-comate/scripts/fetch_skills.py +32 -3
- package/comate-engine/assets/skills/get-ugate-token-comate/SKILL.md +159 -0
- package/comate-engine/assets/skills/get-ugate-token-comate/getUgateToken.py +150 -0
- package/comate-engine/assets/skills/icafe-comate/SKILL.md +240 -0
- package/comate-engine/assets/skills/icafe-comate/references/ai-workflows.md +233 -0
- package/comate-engine/assets/skills/icafe-comate/references/commands.md +1147 -0
- package/comate-engine/assets/skills/icafe-comate/references/error-handling.md +164 -0
- package/comate-engine/assets/skills/icafe-comate/references/git-auto-bindcard-workflow.md +201 -0
- package/comate-engine/assets/skills/icafe-comate/references/git-bindcard-workflow.md +327 -0
- package/comate-engine/assets/skills/icafe-comate/references/iql-syntax.md +327 -0
- package/comate-engine/assets/skills/icafe-comate/references/platform-concepts.md +317 -0
- package/comate-engine/assets/skills/icafe-comate/references/smart-create-workflow.md +171 -0
- package/comate-engine/assets/skills/icafe-comate/references/smart-find-workflow.md +127 -0
- package/comate-engine/assets/skills/icafe-comate/references/smart-update-workflow.md +118 -0
- package/comate-engine/assets/skills/icode-comate/SKILL.md +366 -0
- package/comate-engine/assets/skills/icode-comate/references/api/add_reviewers.md +44 -0
- package/comate-engine/assets/skills/icode-comate/references/api/build_fetch_command.md +89 -0
- package/comate-engine/assets/skills/icode-comate/references/api/check_repo_permission.md +89 -0
- package/comate-engine/assets/skills/icode-comate/references/api/create_branch.md +79 -0
- package/comate-engine/assets/skills/icode-comate/references/api/create_draft_comment.md +109 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_ai_cr_result.md +190 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_ai_review.md +97 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_diff_content.md +92 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_diff_file.md +88 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_machine_check.md +73 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_my_reviews.md +115 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_person_commit.md +89 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_person_repo.md +63 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_repo_branch.md +62 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_repo_config.md +91 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_repo_members.md +118 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_repo_reviews.md +91 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_review_comments.md +87 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_review_info.md +81 -0
- package/comate-engine/assets/skills/icode-comate/references/api/get_submit_settings.md +105 -0
- package/comate-engine/assets/skills/icode-comate/references/api/icode-api.md +86 -0
- package/comate-engine/assets/skills/icode-comate/references/api/publish_comments.md +72 -0
- package/comate-engine/assets/skills/icode-comate/references/api/set_review_score.md +58 -0
- package/comate-engine/assets/skills/icode-comate/references/api/start_ai_review.md +77 -0
- package/comate-engine/assets/skills/icode-comate/references/api/submit_review.md +50 -0
- package/comate-engine/assets/skills/icode-comate/references/api/trigger_ai_cr.md +63 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/add-reviewer.md +92 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/fix-machine-check.md +144 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/merge-cr.md +100 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/ssh-setup.md +106 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/submit-acr.md +135 -0
- package/comate-engine/assets/skills/icode-comate/references/feature/submit-cr.md +123 -0
- package/comate-engine/assets/skills/icode-comate/references/git/clone.md +67 -0
- package/comate-engine/assets/skills/icode-comate/references/git/icode-git.md +68 -0
- package/comate-engine/assets/skills/icode-comate/references/git/push.md +64 -0
- package/comate-engine/assets/skills/icode-comate/references/git/push_cr.md +103 -0
- package/comate-engine/assets/skills/icode-comate/references/install.md +144 -0
- package/comate-engine/assets/skills/icode-comate/references/login.md +111 -0
- package/comate-engine/assets/skills/icode-comate/scripts/add-reviewer.sh +154 -0
- package/comate-engine/assets/skills/icode-comate/scripts/common.sh +145 -0
- package/comate-engine/assets/skills/icode-comate/scripts/fix-machine-check.sh +131 -0
- package/comate-engine/assets/skills/icode-comate/scripts/merge-cr.sh +105 -0
- package/comate-engine/assets/skills/icode-comate/scripts/ssh-setup.sh +159 -0
- package/comate-engine/assets/skills/icode-comate/scripts/submit-acr.sh +236 -0
- package/comate-engine/assets/skills/icode-comate/scripts/submit-cr.sh +104 -0
- package/comate-engine/assets/skills/icode-comate/scripts/test-preflight.sh +89 -0
- package/comate-engine/assets/skills/ku-operator-comate/SKILL.md +121 -0
- package/comate-engine/assets/skills/ku-operator-comate/examples.md +190 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/add_member.md +49 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/change_scope.md +38 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/copy_doc.md +50 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/create_doc.md +61 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/delete_doc.md +31 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/edit_content.md +568 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/move_doc.md +45 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_comment.md +79 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_content.md +83 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_flowchart.md +84 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_permission.md +38 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_recent_view.md +67 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_repo.md +57 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/query_user_info.md +37 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/update_member.md +41 -0
- package/comate-engine/assets/skills/ku-operator-comate/references/upload_attachment.md +52 -0
- package/comate-engine/assets/skills/ku-operator-comate/scripts/ku_operator.py +1575 -0
- package/comate-engine/node_modules/better-sqlite3/node_modules/.bin/prebuild-install +2 -2
- package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build +2 -2
- package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build-optional +2 -2
- package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build-test +2 -2
- package/comate-engine/package.json +2 -0
- package/comate-engine/server.js +263 -79
- package/dist/bundle/index.js +3 -3
- package/package.json +1 -1
- package/comate-engine/assets/skills/figma2code-comate/codeConnect.md +0 -37
- package/comate-engine/assets/skills/figma2code-comate/designToken.md +0 -3
- package/comate-engine/assets/skills/figma2code-comate/f2cMcp.md +0 -59
- package/comate-engine/assets/skills/smart-commit/SKILL.md +0 -646
- package/comate-engine/node_modules/@comate/plugin-host/dist/index-AZIho4HV.js +0 -1
- package/comate-engine/node_modules/@comate/plugin-host/dist/user-BIpzRUfb.js +0 -44
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/references/issue_type_mapping.json +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/references/query_reference.md +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/compat.py +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/create_card_cli.py +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/__init__.py +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/logger.py +0 -0
- /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/recognize_card_cli.py +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# clone - 克隆代码库
|
|
2
|
+
|
|
3
|
+
从 iCode 平台克隆代码库。
|
|
4
|
+
|
|
5
|
+
## 命令格式
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
icode-cli git clone --repo <代码库名称> [--path <本地路径>] [--verbose]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
如果 `icode-cli` 不在全局 PATH 中,可以使用:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
~/.icode/bin/icode-cli git clone --repo <代码库名称>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 参数说明
|
|
18
|
+
|
|
19
|
+
| 参数 | 短参数 | 必填 | 默认值 | 说明 |
|
|
20
|
+
|------|--------|------|--------|------|
|
|
21
|
+
| `--repo` | `-r` | 是 | - | 代码库名称,三层目录形式 |
|
|
22
|
+
| `--path` | `-p` | 否 | 代码库名称 | 本地克隆路径 |
|
|
23
|
+
| `--verbose` | `-v` | 否 | false | 显示详细输出 |
|
|
24
|
+
|
|
25
|
+
## 使用示例
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# 克隆代码库(路径默认为代码库名称)
|
|
29
|
+
icode-cli git clone --repo baidu/icode/agent-sandbox
|
|
30
|
+
|
|
31
|
+
# 克隆到指定路径
|
|
32
|
+
icode-cli git clone --repo baidu/icode/agent-sandbox --path ./my-agent
|
|
33
|
+
|
|
34
|
+
# 显示详细输出
|
|
35
|
+
icode-cli git clone --repo baidu/icode/agent-sandbox --verbose
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 执行流程
|
|
39
|
+
|
|
40
|
+
克隆命令会自动执行以下操作:
|
|
41
|
+
|
|
42
|
+
1. **SSH 配置**:执行 SSH 配置脚本(可选,失败不影响克隆)
|
|
43
|
+
2. **HTTPS 克隆**:使用 HTTPS 协议下载代码
|
|
44
|
+
3. **配置用户信息**:自动设置 `user.name` 和 `user.email`
|
|
45
|
+
4. **安装 Hook**:安装 Gerrit 的 `commit-msg` hook
|
|
46
|
+
|
|
47
|
+
## 输出示例
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
✓ Repository cloned successfully!
|
|
51
|
+
Location: agent-sandbox
|
|
52
|
+
Remote: origin (HTTPS)
|
|
53
|
+
|
|
54
|
+
Next steps:
|
|
55
|
+
cd agent-sandbox
|
|
56
|
+
# Make your changes
|
|
57
|
+
git add .
|
|
58
|
+
git commit -m 'Your message'
|
|
59
|
+
icode-cli git push_cr --branch master
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 注意事项
|
|
63
|
+
|
|
64
|
+
- 代码库名称必须是完整的三层目录形式(如 `baidu/icode/test`)
|
|
65
|
+
- 如果目标路径已存在,克隆会失败
|
|
66
|
+
- 需要有该代码库的访问权限
|
|
67
|
+
- `commit-msg` hook 用于自动生成 Gerrit Change-Id
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# iCode Git 操作
|
|
2
|
+
|
|
3
|
+
提供与 iCode 平台集成的 Git 操作命令,包括代码克隆、推送和代码评审(CR)提交。
|
|
4
|
+
|
|
5
|
+
## 命令概览
|
|
6
|
+
|
|
7
|
+
| 命令 | 说明 | 文档 |
|
|
8
|
+
|------|------|------|
|
|
9
|
+
| `clone` | 克隆代码库 | [clone.md](clone.md) |
|
|
10
|
+
| `push` | 直接推送到远程分支 | [push.md](push.md) |
|
|
11
|
+
| `push_cr` | 推送到 Gerrit 进行代码评审 | [push_cr.md](push_cr.md) |
|
|
12
|
+
|
|
13
|
+
## 快速开始
|
|
14
|
+
|
|
15
|
+
### 1. 克隆代码库
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
icode-cli git clone --repo baidu/icode/test
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 2. 提交代码评审
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
cd test
|
|
25
|
+
# 修改代码...
|
|
26
|
+
git add .
|
|
27
|
+
git commit -m "feat: add new feature"
|
|
28
|
+
|
|
29
|
+
# 推送到 Gerrit 进行代码评审
|
|
30
|
+
icode-cli git push_cr --branch master
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 3. 直接推送
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 推送到远程分支(不经过代码评审)
|
|
37
|
+
icode-cli git push --branch develop
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 特性
|
|
41
|
+
|
|
42
|
+
- **HTTPS 克隆**:自动使用 HTTPS 协议克隆代码
|
|
43
|
+
- **Git 配置**:自动配置 user.name 和 user.email
|
|
44
|
+
- **Gerrit Hook**:自动安装 commit-msg hook,确保提交包含 Change-Id
|
|
45
|
+
- **智能推送**:自动识别远程仓库并配置 HTTPS remote
|
|
46
|
+
|
|
47
|
+
## 工作流示例
|
|
48
|
+
|
|
49
|
+
### 完整的代码评审流程
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# 1. 克隆仓库
|
|
53
|
+
icode-cli git clone --repo baidu/icode/my-project
|
|
54
|
+
|
|
55
|
+
# 2. 进入目录并创建特性分支
|
|
56
|
+
cd my-project
|
|
57
|
+
git checkout -b feature/new-feature
|
|
58
|
+
|
|
59
|
+
# 3. 开发并提交
|
|
60
|
+
# ... 编写代码 ...
|
|
61
|
+
git add .
|
|
62
|
+
git commit -m "feat: implement new feature"
|
|
63
|
+
|
|
64
|
+
# 4. 推送到 Gerrit 进行代码评审
|
|
65
|
+
icode-cli git push_cr --branch master
|
|
66
|
+
|
|
67
|
+
# 5. 评审通过后,代码会被合并到 master 分支
|
|
68
|
+
```
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# push - 直接推送到远程分支
|
|
2
|
+
|
|
3
|
+
将当前分支直接推送到远程仓库。
|
|
4
|
+
|
|
5
|
+
## 命令格式
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
icode-cli git push [--repo-path <仓库路径>] [--branch <分支名>]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 参数说明
|
|
12
|
+
|
|
13
|
+
| 参数 | 短参数 | 必填 | 默认值 | 说明 |
|
|
14
|
+
|------|--------|------|--------|------|
|
|
15
|
+
| `--repo-path` | `-r` | 否 | 当前目录 | Git 仓库路径 |
|
|
16
|
+
| `--branch` | `-b` | 否 | 当前分支 | 目标分支名称 |
|
|
17
|
+
|
|
18
|
+
## 使用示例
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# 推送当前分支到远程
|
|
22
|
+
icode-cli git push
|
|
23
|
+
|
|
24
|
+
# 推送到指定分支
|
|
25
|
+
icode-cli git push --branch develop
|
|
26
|
+
|
|
27
|
+
# 从指定仓库路径推送
|
|
28
|
+
icode-cli git push --repo-path ./my-project --branch main
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 执行流程
|
|
32
|
+
|
|
33
|
+
1. **检查仓库**:确认当前目录是 Git 仓库
|
|
34
|
+
2. **检查凭证**:检查 Git 凭证配置
|
|
35
|
+
3. **获取远程**:从 origin 获取远程 URL
|
|
36
|
+
4. **配置 HTTPS**:确保 HTTPS 远程可用
|
|
37
|
+
5. **推送代码**:执行 `git push`
|
|
38
|
+
|
|
39
|
+
## 输出示例
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
✓ Push successful!
|
|
43
|
+
|
|
44
|
+
Output:
|
|
45
|
+
To https://icode.baidu.com/baidu/icode/test
|
|
46
|
+
abc123..def456 develop -> develop
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## push vs push_cr
|
|
50
|
+
|
|
51
|
+
| 命令 | 用途 | 推送目标 |
|
|
52
|
+
|------|------|----------|
|
|
53
|
+
| `push` | 直接推送到远程分支 | `origin/branch` |
|
|
54
|
+
| `push_cr` | 提交代码评审 | `refs/for/branch` |
|
|
55
|
+
|
|
56
|
+
- **push**:适用于有直接推送权限的分支(如个人分支)
|
|
57
|
+
- **push_cr**:适用于需要代码评审的分支(如 master)
|
|
58
|
+
|
|
59
|
+
## 注意事项
|
|
60
|
+
|
|
61
|
+
- 必须在 Git 仓库内执行,或使用 `--repo-path` 指定仓库路径
|
|
62
|
+
- 需要有目标分支的推送权限
|
|
63
|
+
- 如果远程分支有新的提交,可能需要先拉取合并
|
|
64
|
+
- 某些分支可能配置了保护规则,不允许直接推送
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# push_cr - 推送代码评审
|
|
2
|
+
|
|
3
|
+
将当前分支推送到 Gerrit 进行代码评审(Code Review)。
|
|
4
|
+
|
|
5
|
+
## 命令格式
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
icode-cli git push_cr [--repo-path <仓库路径>] [--branch <目标分支>]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 参数说明
|
|
12
|
+
|
|
13
|
+
| 参数 | 短参数 | 必填 | 默认值 | 说明 |
|
|
14
|
+
|------|--------|------|--------|------|
|
|
15
|
+
| `--repo-path` | `-r` | 否 | 当前目录 | Git 仓库路径 |
|
|
16
|
+
| `--branch` | `-b` | 否 | master 或当前分支 | 目标分支名称 |
|
|
17
|
+
|
|
18
|
+
## 使用示例
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# 推送到 master 分支进行代码评审
|
|
22
|
+
icode-cli git push_cr
|
|
23
|
+
|
|
24
|
+
# 推送到指定分支
|
|
25
|
+
icode-cli git push_cr --branch develop
|
|
26
|
+
|
|
27
|
+
# 从指定仓库路径推送
|
|
28
|
+
icode-cli git push_cr --repo-path ./my-project --branch feature/test
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 执行流程
|
|
32
|
+
|
|
33
|
+
1. **检查仓库**:确认当前目录是 Git 仓库
|
|
34
|
+
2. **检查凭证**:检查 Git 凭证配置
|
|
35
|
+
3. **获取远程**:从 origin 获取远程 URL
|
|
36
|
+
4. **配置 HTTPS**:确保 HTTPS 远程可用
|
|
37
|
+
5. **推送到 Gerrit**:执行 `git push origin HEAD:refs/for/<branch>`
|
|
38
|
+
6. **返回 CR URL**:解析并输出代码评审链接
|
|
39
|
+
|
|
40
|
+
## 输出示例
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
https://icode.baidu.com/c/baidu/icode/test/+/123456
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
输出的 URL 即为代码评审(CR)的链接,可以直接在浏览器中打开进行评审操作。
|
|
47
|
+
|
|
48
|
+
## Gerrit 代码评审说明
|
|
49
|
+
|
|
50
|
+
### refs/for 机制
|
|
51
|
+
|
|
52
|
+
Gerrit 使用特殊的 `refs/for/<branch>` 引用来接收代码评审:
|
|
53
|
+
|
|
54
|
+
- 推送到 `refs/for/master` 会创建一个针对 master 分支的 CR
|
|
55
|
+
- 代码不会直接合并到目标分支,而是进入评审流程
|
|
56
|
+
- 评审通过后,代码才会被合并
|
|
57
|
+
|
|
58
|
+
### Change-Id
|
|
59
|
+
|
|
60
|
+
每个提交需要包含 Change-Id,用于标识同一个变更的多次修订:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
commit abc123
|
|
64
|
+
Author: zhangsan <zhangsan@baidu.com>
|
|
65
|
+
Date: Mon Jan 15 10:00:00 2024 +0800
|
|
66
|
+
|
|
67
|
+
feat: add new feature
|
|
68
|
+
|
|
69
|
+
Change-Id: I1234567890abcdef
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
使用 `icode-cli git clone` 克隆的仓库会自动安装 `commit-msg` hook,自动生成 Change-Id。
|
|
73
|
+
|
|
74
|
+
## 代码评审流程
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
1. 提交代码评审
|
|
78
|
+
icode-cli git push_cr --branch master
|
|
79
|
+
|
|
80
|
+
2. 获得 CR URL,分享给评审人
|
|
81
|
+
https://icode.baidu.com/c/baidu/icode/test/+/123456
|
|
82
|
+
|
|
83
|
+
3. 评审人在 iCode 平台进行评审
|
|
84
|
+
- 查看代码变更
|
|
85
|
+
- 添加评论
|
|
86
|
+
- 给出评分(+2 批准,-2 拒绝)
|
|
87
|
+
|
|
88
|
+
4. 根据评审意见修改代码
|
|
89
|
+
git add .
|
|
90
|
+
git commit --amend # 修订同一个变更
|
|
91
|
+
icode-cli git push_cr --branch master
|
|
92
|
+
|
|
93
|
+
5. 评审通过后合并
|
|
94
|
+
- 在 iCode 平台点击 Submit
|
|
95
|
+
- 或使用 API: icode-cli api submit_review
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## 注意事项
|
|
99
|
+
|
|
100
|
+
- 必须在 Git 仓库内执行,或使用 `--repo-path` 指定仓库路径
|
|
101
|
+
- 提交必须包含 Change-Id(使用 `commit-msg` hook 自动生成)
|
|
102
|
+
- 需要有代码库的提交权限
|
|
103
|
+
- 同一个 Change-Id 的多次推送会更新同一个 CR(而不是创建新的)
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# 工具安装指南
|
|
2
|
+
|
|
3
|
+
iCode Skill 依赖以下工具,请按需安装。
|
|
4
|
+
|
|
5
|
+
## icode-cli
|
|
6
|
+
|
|
7
|
+
iCode 命令行工具,提供 Git 操作、API 调用等功能。
|
|
8
|
+
|
|
9
|
+
### 版本要求
|
|
10
|
+
|
|
11
|
+
- 最低版本:>= 0.1.8
|
|
12
|
+
|
|
13
|
+
### 检测方式
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# 检查是否已安装
|
|
17
|
+
which icode-cli
|
|
18
|
+
|
|
19
|
+
# 或检查用户目录
|
|
20
|
+
ls ~/.icode/bin/icode-cli
|
|
21
|
+
|
|
22
|
+
# 查看版本
|
|
23
|
+
icode-cli --version
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 安装方式
|
|
27
|
+
|
|
28
|
+
#### Linux / macOS
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# 安装开发版(推荐,包含最新功能)
|
|
32
|
+
curl -sSL http://icode-cli.bj.bcebos.com/install.sh | bash -s -- --no-skills
|
|
33
|
+
|
|
34
|
+
# 安装稳定版(尚未发布,暂时不能使用)
|
|
35
|
+
curl -fsSL http://icode-cli.bj.bcebos.com/install.sh | bash -s -- --force
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
#### Windows
|
|
39
|
+
|
|
40
|
+
请使用 Git Bash 或 WSL 运行上述安装命令。
|
|
41
|
+
|
|
42
|
+
### 安装位置
|
|
43
|
+
|
|
44
|
+
默认安装到 `~/.icode/bin/icode-cli`,安装脚本会自动配置 PATH。
|
|
45
|
+
|
|
46
|
+
如果 PATH 未生效,可手动添加:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# bash
|
|
50
|
+
echo 'export PATH="$HOME/.icode/bin:$PATH"' >> ~/.bashrc
|
|
51
|
+
source ~/.bashrc
|
|
52
|
+
|
|
53
|
+
# zsh
|
|
54
|
+
echo 'export PATH="$HOME/.icode/bin:$PATH"' >> ~/.zshrc
|
|
55
|
+
source ~/.zshrc
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 验证安装
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
icode-cli --version
|
|
62
|
+
# 输出: icode-cli version 0.1.8
|
|
63
|
+
|
|
64
|
+
icode-cli login
|
|
65
|
+
# 检查登录状态
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Git
|
|
71
|
+
|
|
72
|
+
分布式版本控制系统。
|
|
73
|
+
|
|
74
|
+
### 版本要求
|
|
75
|
+
|
|
76
|
+
- 最低版本:>= 2.0
|
|
77
|
+
|
|
78
|
+
### 检测方式
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
git --version
|
|
82
|
+
# 输出: git version 2.x.x
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 安装方式
|
|
86
|
+
|
|
87
|
+
#### macOS
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# 使用 Homebrew
|
|
91
|
+
brew install git
|
|
92
|
+
|
|
93
|
+
# 或使用 Xcode Command Line Tools
|
|
94
|
+
xcode-select --install
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
#### Ubuntu / Debian
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
sudo apt update
|
|
101
|
+
sudo apt install git
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### CentOS / RHEL
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
sudo yum install git
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### Windows
|
|
111
|
+
|
|
112
|
+
1. 下载 [Git for Windows](https://git-scm.com/download/win)
|
|
113
|
+
2. 运行安装程序,按默认选项安装
|
|
114
|
+
3. 安装完成后可使用 Git Bash
|
|
115
|
+
|
|
116
|
+
### 配置 Git
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
# 配置用户名和邮箱
|
|
120
|
+
git config --global user.name "你的名字"
|
|
121
|
+
git config --global user.email "你的邮箱@baidu.com"
|
|
122
|
+
|
|
123
|
+
# 验证配置
|
|
124
|
+
git config --list
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 环境验证
|
|
130
|
+
|
|
131
|
+
安装完成后,运行以下命令验证环境:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# 检查 icode-cli
|
|
135
|
+
icode-cli --version
|
|
136
|
+
|
|
137
|
+
# 检查 git
|
|
138
|
+
git --version
|
|
139
|
+
|
|
140
|
+
# 检查登录状态
|
|
141
|
+
icode-cli login
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
所有检查通过后,即可开始使用 iCode Skill。
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# login - 登录认证
|
|
2
|
+
|
|
3
|
+
检查当前用户的认证状态,或进行登录。
|
|
4
|
+
|
|
5
|
+
## 命令格式
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# 交互式登录(默认使用 UGate)
|
|
9
|
+
icode-cli login
|
|
10
|
+
|
|
11
|
+
# 非交互式登录
|
|
12
|
+
icode-cli login --token "eyJ..."
|
|
13
|
+
|
|
14
|
+
# 指定认证方式
|
|
15
|
+
icode-cli login --method ugate --token "eyJ..."
|
|
16
|
+
icode-cli login --method comate --token "Bearer-xxx"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 参数说明
|
|
20
|
+
|
|
21
|
+
| 参数 | 短参数 | 默认值 | 说明 |
|
|
22
|
+
|------|--------|--------|------|
|
|
23
|
+
| `--method` | `-m` | `ugate` | 认证方式(ugate/comate) |
|
|
24
|
+
| `--token` | `-t` | - | Token(非交互式模式) |
|
|
25
|
+
|
|
26
|
+
## 使用示例
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 检查登录状态(已登录则直接返回,未登录则提示输入 token)
|
|
30
|
+
icode-cli login
|
|
31
|
+
|
|
32
|
+
# 使用 UGate token 直接登录
|
|
33
|
+
icode-cli login --token "eyJhbGciOiJIUzI1NiIsInR..."
|
|
34
|
+
|
|
35
|
+
# 使用 Comate token 登录
|
|
36
|
+
icode-cli login --method comate --token "Bearer-abc123"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 返回信息
|
|
40
|
+
|
|
41
|
+
### 已登录状态
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
Already logged in as: zhangsan (ugate)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 登录成功
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Logged in as: zhangsan (ugate)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 在脚本中使用
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# 获取当前用户名
|
|
57
|
+
USERNAME=$(icode-cli login 2>&1 | grep "logged in as" | sed 's/.*as: \([^ ]*\).*/\1/')
|
|
58
|
+
|
|
59
|
+
# 检查是否登录成功
|
|
60
|
+
if icode-cli login 2>&1 | grep -q "logged in as"; then
|
|
61
|
+
echo "已登录"
|
|
62
|
+
else
|
|
63
|
+
echo "未登录"
|
|
64
|
+
exit 1
|
|
65
|
+
fi
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 认证方式
|
|
69
|
+
|
|
70
|
+
| 认证方式 | Token 获取 | Token 存储 | 优先级 |
|
|
71
|
+
|---------|-----------|-----------|--------|
|
|
72
|
+
| ugate(默认) | https://uuap.baidu.com/agent/token | `~/.config/uuap/` | order=10 |
|
|
73
|
+
| comate | Comate IDE 自动保存 | `~/.comate/login` | order=20 |
|
|
74
|
+
|
|
75
|
+
## 退出码
|
|
76
|
+
|
|
77
|
+
| 退出码 | 含义 |
|
|
78
|
+
|--------|------|
|
|
79
|
+
| 0 | 已登录或登录成功 |
|
|
80
|
+
| 1 | 登录失败 |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
# logout - 登出
|
|
85
|
+
|
|
86
|
+
登出并清除认证信息。
|
|
87
|
+
|
|
88
|
+
## 命令格式
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
icode-cli logout
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 使用示例
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
icode-cli logout
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## 返回信息
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Logging out zhangsan (ugate)...
|
|
104
|
+
Logged out successfully
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## 退出码
|
|
108
|
+
|
|
109
|
+
| 退出码 | 含义 |
|
|
110
|
+
|--------|------|
|
|
111
|
+
| 0 | 登出成功 |
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# add-reviewer.sh - 智能添加评审人脚本 (Linux/macOS)
|
|
3
|
+
# 按优先级从多个来源自动选择评审人,或使用用户指定的评审人
|
|
4
|
+
#
|
|
5
|
+
# 评审人来源优先级:
|
|
6
|
+
# 1. 当前 CR 已有评审人(续传 CR 场景)
|
|
7
|
+
# 2. 仓库成员(repo members)
|
|
8
|
+
# 3. 历史 CR 评审人(补充,当候选人不足 5 人时)
|
|
9
|
+
#
|
|
10
|
+
# 使用方法:
|
|
11
|
+
# ./add-reviewer.sh [CR编号] [评审人]
|
|
12
|
+
#
|
|
13
|
+
# 示例:
|
|
14
|
+
# ./add-reviewer.sh # 自动检测 CR,自动选择评审人
|
|
15
|
+
# ./add-reviewer.sh 120247220 # 指定 CR,自动选择评审人
|
|
16
|
+
# ./add-reviewer.sh 120247220 zhangsan # 指定 CR 和评审人
|
|
17
|
+
|
|
18
|
+
set -e
|
|
19
|
+
|
|
20
|
+
# 加载公共函数
|
|
21
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
22
|
+
source "$SCRIPT_DIR/common.sh"
|
|
23
|
+
|
|
24
|
+
# 获取候选评审人(按优先级)
|
|
25
|
+
get_reviewer_candidates() {
|
|
26
|
+
local repo_name=$1
|
|
27
|
+
local username=$2
|
|
28
|
+
local change_number=$3
|
|
29
|
+
|
|
30
|
+
local seen=""
|
|
31
|
+
local candidates=""
|
|
32
|
+
|
|
33
|
+
# 优先级 1: 当前 CR 已有评审人
|
|
34
|
+
if [ -n "$change_number" ] && [ "$change_number" != "0" ]; then
|
|
35
|
+
local cr_info
|
|
36
|
+
cr_info=$("$ICODE_CLI" api get_review_info --change-number "$change_number" -o json 2>/dev/null || echo '{"data":{"globalReviewers":[]}}')
|
|
37
|
+
|
|
38
|
+
local cr_reviewers
|
|
39
|
+
cr_reviewers=$(echo "$cr_info" | "$ICODE_CLI" jq -r ".data.globalReviewers[]? | select(.username != \"$username\") | .username" 2>/dev/null || true)
|
|
40
|
+
|
|
41
|
+
for r in $cr_reviewers; do
|
|
42
|
+
if [[ ! " $seen " =~ " $r " ]]; then
|
|
43
|
+
seen="$seen $r"
|
|
44
|
+
candidates="$candidates $r"
|
|
45
|
+
fi
|
|
46
|
+
done
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
# 优先级 2: 仓库成员
|
|
50
|
+
local members
|
|
51
|
+
members=$("$ICODE_CLI" api get_repo_members --repo "$repo_name" -o json 2>/dev/null || echo '{"data":[]}')
|
|
52
|
+
|
|
53
|
+
local member_reviewers
|
|
54
|
+
# 注意:API 返回的字段是 userName(驼峰式)而不是 username
|
|
55
|
+
member_reviewers=$(echo "$members" | "$ICODE_CLI" jq -r ".data[]? | select(.userName != \"$username\") | .userName" 2>/dev/null || true)
|
|
56
|
+
|
|
57
|
+
for r in $member_reviewers; do
|
|
58
|
+
if [[ ! " $seen " =~ " $r " ]]; then
|
|
59
|
+
seen="$seen $r"
|
|
60
|
+
candidates="$candidates $r"
|
|
61
|
+
fi
|
|
62
|
+
done
|
|
63
|
+
|
|
64
|
+
# 优先级 3: 历史 CR 评审人(当候选人不足 5 人时补充)
|
|
65
|
+
local candidate_count
|
|
66
|
+
candidate_count=$(echo "$candidates" | wc -w | tr -d ' ')
|
|
67
|
+
|
|
68
|
+
if [ "$candidate_count" -lt 5 ]; then
|
|
69
|
+
local merged_crs
|
|
70
|
+
merged_crs=$("$ICODE_CLI" api get_repo_reviews --repo "$repo_name" --status MERGED -o json 2>/dev/null || echo '{"data":{"changes":[]}}')
|
|
71
|
+
|
|
72
|
+
local my_cr_numbers
|
|
73
|
+
my_cr_numbers=$(echo "$merged_crs" | "$ICODE_CLI" jq -r ".data.changes[] | select(.owner.username == \"$username\") | ._number" 2>/dev/null || true)
|
|
74
|
+
|
|
75
|
+
for cr_num in $my_cr_numbers; do
|
|
76
|
+
local cr_info
|
|
77
|
+
cr_info=$("$ICODE_CLI" api get_review_info --change-number "$cr_num" -o json 2>/dev/null || echo '{"data":{"globalReviewers":[]}}')
|
|
78
|
+
|
|
79
|
+
local cr_reviewers
|
|
80
|
+
cr_reviewers=$(echo "$cr_info" | "$ICODE_CLI" jq -r ".data.globalReviewers[]? | select(.username != \"$username\") | .username" 2>/dev/null || true)
|
|
81
|
+
|
|
82
|
+
for r in $cr_reviewers; do
|
|
83
|
+
if [[ ! " $seen " =~ " $r " ]]; then
|
|
84
|
+
seen="$seen $r"
|
|
85
|
+
candidates="$candidates $r"
|
|
86
|
+
fi
|
|
87
|
+
done
|
|
88
|
+
done
|
|
89
|
+
fi
|
|
90
|
+
|
|
91
|
+
# 输出去重后的候选人列表
|
|
92
|
+
echo "$candidates" | tr ' ' '\n' | grep -v '^$' | head -20
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
# ========== 主流程 ==========
|
|
96
|
+
|
|
97
|
+
# 初始化环境
|
|
98
|
+
init_toolkit_env
|
|
99
|
+
|
|
100
|
+
CHANGE_NUMBER=${1:-""}
|
|
101
|
+
SPECIFIED_REVIEWER=${2:-""}
|
|
102
|
+
|
|
103
|
+
# 如果没有指定 CR 编号,自动检测
|
|
104
|
+
if [ -z "$CHANGE_NUMBER" ]; then
|
|
105
|
+
log_step "检测当前 CR..."
|
|
106
|
+
CHANGE_NUMBER=$(get_current_cr "$ICODE_CLI" "$REPO_NAME" "$USERNAME")
|
|
107
|
+
|
|
108
|
+
if [ -z "$CHANGE_NUMBER" ]; then
|
|
109
|
+
log_error "未找到当前 commit 对应的 CR"
|
|
110
|
+
log_warn "请先使用 'icode-cli git push_cr' 提交 CR,或手动指定 CR 编号"
|
|
111
|
+
exit 1
|
|
112
|
+
fi
|
|
113
|
+
fi
|
|
114
|
+
log_info "CR 编号: $CHANGE_NUMBER"
|
|
115
|
+
echo ""
|
|
116
|
+
|
|
117
|
+
# 如果用户指定了评审人,直接添加
|
|
118
|
+
if [ -n "$SPECIFIED_REVIEWER" ]; then
|
|
119
|
+
log_step "添加用户指定的评审人: $SPECIFIED_REVIEWER"
|
|
120
|
+
$ICODE_CLI api add_reviewers --change-number "$CHANGE_NUMBER" --reviewers "$SPECIFIED_REVIEWER"
|
|
121
|
+
echo ""
|
|
122
|
+
log_info "评审人 $SPECIFIED_REVIEWER 已添加到 CR #$CHANGE_NUMBER"
|
|
123
|
+
exit 0
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
# 获取候选评审人(按优先级)
|
|
127
|
+
log_step "获取候选评审人..."
|
|
128
|
+
REVIEWERS=$(get_reviewer_candidates "$REPO_NAME" "$USERNAME" "$CHANGE_NUMBER")
|
|
129
|
+
|
|
130
|
+
if [ -z "$REVIEWERS" ]; then
|
|
131
|
+
log_warn "未找到候选评审人"
|
|
132
|
+
log_warn "请手动指定评审人: $0 $CHANGE_NUMBER <reviewer_username>"
|
|
133
|
+
exit 1
|
|
134
|
+
fi
|
|
135
|
+
|
|
136
|
+
# 转为数组
|
|
137
|
+
IFS=$'\n' read -r -d '' -a REVIEWER_ARRAY <<< "$REVIEWERS" || true
|
|
138
|
+
|
|
139
|
+
COUNT=${#REVIEWER_ARRAY[@]}
|
|
140
|
+
log_info "找到 $COUNT 个候选评审人: ${REVIEWER_ARRAY[*]}"
|
|
141
|
+
|
|
142
|
+
# 随机选择一个
|
|
143
|
+
RANDOM_INDEX=$((RANDOM % COUNT))
|
|
144
|
+
SELECTED_REVIEWER=${REVIEWER_ARRAY[$RANDOM_INDEX]}
|
|
145
|
+
|
|
146
|
+
log_info "随机选择评审人: $SELECTED_REVIEWER"
|
|
147
|
+
echo ""
|
|
148
|
+
|
|
149
|
+
# 添加评审人
|
|
150
|
+
log_step "添加评审人..."
|
|
151
|
+
$ICODE_CLI api add_reviewers --change-number "$CHANGE_NUMBER" --reviewers "$SELECTED_REVIEWER"
|
|
152
|
+
|
|
153
|
+
echo ""
|
|
154
|
+
log_info "评审人 $SELECTED_REVIEWER 已添加到 CR #$CHANGE_NUMBER"
|