Skip to content

Commit

Permalink
feat(docs): update doc
Browse files Browse the repository at this point in the history
  • Loading branch information
erguotou committed Dec 31, 2024
1 parent 0dae9e6 commit f024ef8
Show file tree
Hide file tree
Showing 6 changed files with 516 additions and 14 deletions.
4 changes: 4 additions & 0 deletions AI_GENERATE_DOC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@cli @core 请咨询阅读这2个包提供的功能,并帮我在 @doc 目录中生成对应的文档。
已知cli+core是由napi-rs项目构建的,提供整合git工作流的能力,doc目录是由基于astro的starlight文档框架
要求文档由浅入深,先让用户看到它的基本使用,再使用其它单独的章节详细介绍某个功能,文档中适当使用emoji来丰富内容,文字要求浅显易懂
已知starlight提供了很多有用的组件来优化文章显示,包括Cards, Link Cards显示外部跳转链接, Card Grids显示多个Card, Asides作为Note, Badge, Code可显示多个文件, File Tree显示文件树, Icons, Link Buttons, Steps, Tabs
124 changes: 124 additions & 0 deletions packages/doc/src/content/docs/guides/ai-commit.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
---
title: AI 提交功能
description: 深入了解 igit 的 AI 提交功能
---

import { Steps, Aside } from '@astrojs/starlight/components';

## 功能介绍 🤖

igit 的 AI 提交功能使用先进的 AI 模型来分析你的代码变更,自动生成符合[约定式提交](https://www.conventionalcommits.org/zh-hans/)规范的提交信息。这不仅能节省你的时间,还能确保提交信息的质量和一致性。

## 工作原理 ⚙️

<Steps>

1. **收集变更**

当你运行 `igit commit` 时,igit 会收集当前的 Git 暂存区(staged)中的所有变更。

2. **分析变更**

AI 模型会分析这些变更,包括:
- 修改的文件类型
- 代码的增删改内容
- 变更的上下文

3. **生成提交信息**

基于分析结果,AI 会生成一个符合约定式提交规范的提交信息,包括:
- 类型(feat/fix/docs 等)
- 作用域(可选)
- 描述
- 详细说明(如果需要)

4. **确认提交**

你可以选择接受或修改生成的提交信息。

</Steps>

## 使用方法 📝

### 基本使用

```bash
# 生成提交信息并等待确认
igit commit

# 生成提交信息并直接提交
igit commit -y
```

### 提交类型

AI 会根据变更内容自动选择最合适的提交类型:

- `feat`: 新功能
- `fix`: 修复 bug
- `docs`: 文档更新
- `style`: 代码格式修改
- `refactor`: 代码重构
- `perf`: 性能优化
- `test`: 测试相关
- `chore`: 构建过程或辅助工具的变动

<Aside type="tip">
AI 会尽可能准确地选择提交类型,但你也可以在确认阶段修改它。
</Aside>

## 最佳实践 💡

### 1. 保持变更聚焦

每次提交只包含相关的变更,这样 AI 能更准确地理解你的意图。

### 2. 使用暂存区

确保将要提交的文件都已经添加到暂存区:

```bash
git add <files>
igit commit
```

### 3. 审查生成的信息

虽然 AI 通常能生成高质量的提交信息,但最好还是快速审查一下,确保它准确反映了你的意图。

## 常见问题 ❓

### Q: 为什么有时候生成的提交信息不够准确?

A: 这可能是因为:
- 变更内容过于复杂或分散
- 暂存区包含了不相关的变更
- AI 模型无法完全理解特定的业务上下文

### Q: 如何改进生成的提交信息质量?

1. 确保每次提交的变更都是相关的
2. 在配置文件中使用更强大的 AI 模型(如 GPT-4)
3. 提供更多的上下文信息

## 配置选项 ⚙️

`.config/igit.yaml` 中可以自定义 AI 提交功能:

```yaml
ai:
# 是否启用 AI 提交功能,默认关闭
enabled: true
# Base URL,默认使用OpenAI的API
baseUrl: https://api.deepseek.com
# 选择 AI 模型
model: gpt-4
# 响应语言,默认中文
respondIn: 中文
# API Key,请不要将API Key直接写入配置文件,请使用环境变量 OPENAI_API_KEY=xxxxx来设置
# apiKey: xxxxx
```

<Aside type="caution">
请不要将 API Key 直接写在配置文件中,建议使用环境变量 `OPENAI_API_KEY` 来设置。
</Aside>
130 changes: 130 additions & 0 deletions packages/doc/src/content/docs/guides/configuration.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
---
title: 配置指南
description: 了解如何配置 igit 以满足你的需求
---

import { Aside } from '@astrojs/starlight/components';

## 配置文件

igit 使用 `.config/igit.yaml` 作为配置文件。当你运行 `igit init` 时,会自动创建一个默认的配置文件。

### 基本配置结构

```yaml
# Git Hooks 配置
hooks:
# 是否启用 hooks
enabled: true
# hooks 配置
hooks:
# pre-commit hook 配置
pre-commit:
- lint-staged
- npm test
# commit-msg hook 配置
commit-msg:
- npx commitlint --edit
# pre-push hook 配置
pre-push:
- npm test

# 暂存区 hooks 配置
staged_hooks:
# 是否启用暂存区 hooks
enabled: true
# 暂存区规则
rules:
"*.{js,ts}":
- eslint --fix
- prettier --write
"*.{css,less,scss}":
- stylelint --fix


# AI 配置
ai:
# 是否启用 AI 功能
enabled: true
# OpenAI API 基础 URL
baseUrl: https://api.openai.com
# OpenAI API Key
apiKey: your-api-key
# 使用的模型
model: gpt-3.5-turbo
# AI 响应使用的语言
respondIn: 中文
```
## 配置项说明
### Hooks 配置
- `hooks.enabled`: 是否启用所有 Git hooks
- `hooks.hooks`: 各个 hook 的具体配置,支持字符串或字符串数组形式的命令

支持的 hooks 包括:
- `applypatch-msg`
- `pre-applypatch`
- `pre-commit`
- `pre-merge-commit`
- `prepare-commit-msg`
- `commit-msg`
- `post-commit`
- `pre-rebase`
- `post-checkout`
- `post-merge`
- `pre-push`
- 等等...

### 暂存区 Hooks 配置

- `staged_hooks.enabled`: 是否启用暂存区 hooks
- `staged_hooks.rules`: 针对不同文件类型的处理规则

### 提交信息配置

- `commit_msg.enabled`: 是否启用提交信息检查
- `commit_msg.validTypes`: 有效的提交类型列表
- `commit_msg.prependEmoji`: 是否在提交信息前添加 emoji

### AI 配置

- `ai.enabled`: 是否启用 AI 功能
- `ai.baseUrl`: OpenAI API 的基础 URL
- `ai.apiKey`: OpenAI API Key
- `ai.model`: 使用的 AI 模型
- `ai.respondIn`: AI 响应使用的语言

<Aside type="caution">
请不要将 API Key 直接写在配置文件中,建议使用环境变量 `OPENAI_API_KEY` 来设置。
</Aside>

## 配置示例

### 配置暂存区检查

```yaml
staged_hooks:
enabled: true
rules:
"**/*.{js,ts}":
- eslint --fix
- prettier --write
"**/*.vue":
- eslint --fix
- stylelint --fix
"**/*.{css,scss}":
- stylelint --fix
```


### 配置 AI 功能

```yaml
ai:
enabled: true
baseUrl: https://api.openai.com
model: gpt-4
respondIn: 中文
```
76 changes: 76 additions & 0 deletions packages/doc/src/content/docs/guides/getting-started.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
title: 快速开始
description: 学习如何在你的项目中使用 igit
---

import { Steps, Tabs, TabItem } from '@astrojs/starlight/components';

## 安装

<Steps>

1. 首先,使用你喜欢的包管理器安装 igit:

<Tabs>
<TabItem label="npm">
```bash
npm install -g @doremijs/igit-cli
```
</TabItem>
<TabItem label="yarn">
```bash
yarn global add @doremijs/igit-cli
```
</TabItem>
<TabItem label="pnpm">
```bash
pnpm add -g @doremijs/igit-cli
```
</TabItem>
</Tabs>

2. 在你的 Git 项目中初始化 igit:

```bash
cd your-project
igit init
```

3. 安装 Git Hooks:

```bash
igit install
```

</Steps>

## 基本使用

### AI 提交信息生成

当你需要提交代码时,只需运行:

```bash
igit commit
```

igit 会自动分析你的修改,并生成符合[约定式提交](https://www.conventionalcommits.org/zh-hans/)规范的提交信息。如果你对生成的信息满意,可以使用 `-y` 参数直接提交:

```bash
igit commit -y
```

### Git Hooks

igit 会自动安装以下 Git Hooks:

- `pre-commit`: 在提交前运行代码检查并追加 emoji
- `commit-msg`: 检查提交信息是否符合规范

你可以通过配置文件自定义这些 hooks 的行为。

## 下一步

- [配置指南](/guides/configuration/) - 了解如何自定义 igit
- [AI 提交](/guides/ai-commit/) - 深入了解 AI 提交功能
- [Git Hooks](/guides/hooks/) - 学习如何配置和使用 Git Hooks
Loading

0 comments on commit f024ef8

Please sign in to comment.