Skip to content

Commit a627417

Browse files
gitveggithub-actions
andauthored
ci: Use autocorrect instead of zhlint (#52)
* ci: Add some cases that need to be ignored in .zhlintrc. Signed-off-by: Jianuo Kuang <[email protected]> * ci: Use autocorrect instead of zhlint Signed-off-by: Jianuo Kuang <[email protected]> * fix: Correct the judge of default branch Signed-off-by: Jianuo Kuang <[email protected]> * Auto fix formatting by autocorrect [ci skip] --------- Signed-off-by: Jianuo Kuang <[email protected]> Co-authored-by: github-actions <[email protected]>
1 parent 709e3a9 commit a627417

19 files changed

+219
-289
lines changed

.github/workflows/.zhlintrc

Lines changed: 0 additions & 39 deletions
This file was deleted.

.github/workflows/lint-all.yml

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -10,41 +10,5 @@ jobs:
1010
- name: Checkout code
1111
uses: actions/checkout@v4
1212

13-
- name: Install zhlint
14-
run: yarn global add zhlint
15-
16-
- name: Lint all Markdown files
17-
run: |
18-
mkdir -p linted_output
19-
file_list="linted_output/file_list.txt"
20-
linted_failed_file=$(mktemp)
21-
echo 0 > "$linted_failed_file"
22-
find . -type f -name '*.md' | while read -r file; do
23-
set +e
24-
zhlint --config "$GITHUB_WORKSPACE"/.github/workflows/.zhlintrc "$file"
25-
if [ $? -ne 0 ]; then
26-
echo 1 > "$linted_failed_file"
27-
echo "$file" >> "$file_list"
28-
output_file="linted_output/report_and_suggested_fixes/$file"
29-
mkdir -p "$(dirname "$output_file")"
30-
zhlint --config "$GITHUB_WORKSPACE"/.github/workflows/.zhlintrc "$file" --output="$output_file" > "$output_file.log" 2>&1
31-
fi
32-
set -e
33-
done
34-
linted_failed=$(cat "$linted_failed_file")
35-
rm "$linted_failed_file"
36-
echo "linted_failed=$linted_failed" >> "$GITHUB_ENV"
37-
38-
- name: Upload linted Markdown
39-
uses: actions/upload-artifact@v4
40-
with:
41-
name: linted-markdown
42-
path: linted_output/
43-
44-
- name: Check lint errors
45-
run: |
46-
set -e
47-
if [ "${{ env.linted_failed }}" -ne 0 ]; then
48-
echo "Linting errors found. Please check the reports and suggested fixes in uploaded artifact."
49-
exit 1
50-
fi
13+
- name: AutoCorrect
14+
uses: huacnlee/autocorrect-action@main

.github/workflows/lint.yml

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -17,47 +17,52 @@ jobs:
1717
steps:
1818
- name: Checkout code
1919
uses: actions/checkout@v4
20-
21-
- name: Install zhlint
22-
run: yarn global add zhlint
23-
24-
- name: Get changed Markdown files
25-
id: changed-files
26-
uses: tj-actions/changed-files@v45
2720
with:
28-
files: '**/*.md'
21+
fetch-depth: 0 # Fetch full history to allow Git operations
2922

30-
- name: Lint Markdown files
31-
env:
32-
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
23+
- name: Lint
24+
continue-on-error: true
3325
run: |
34-
mkdir -p linted_output
35-
file_list="linted_output/file_list.txt"
36-
linted_failed=0
37-
for file in ${{ env.ALL_CHANGED_FILES }}; do
38-
set +e
39-
zhlint --config "$GITHUB_WORKSPACE"/.github/workflows/.zhlintrc "$file"
40-
if [ $? -ne 0 ]; then
41-
linted_failed=1
42-
echo "$file" >> "$file_list"
43-
output_file="linted_output/report_and_suggested_fixes/$file"
44-
mkdir -p "$(dirname "$output_file")"
45-
zhlint --config "$GITHUB_WORKSPACE"/.github/workflows/.zhlintrc "$file" --output="$output_file" > "$output_file.log" 2>&1
46-
fi
47-
set -e
48-
done
49-
echo "linted_failed=$linted_failed" >> "$GITHUB_ENV"
50-
51-
- name: Upload Linted Markdown
52-
uses: actions/upload-artifact@v4
53-
with:
54-
name: linted-markdown
55-
path: linted_output/
26+
curl -fsSL https://raw.githubusercontent.com/huacnlee/autocorrect/main/install | sh
27+
autocorrect --fix
5628
57-
- name: Check lint errors
29+
- name: Stop and report errors if not master
30+
if: github.ref != 'refs/heads/main' && github.ref != 'refs/heads/master'
5831
run: |
59-
set -e
60-
if [ "${{ env.linted_failed }}" -ne 0 ]; then
61-
echo "Linting errors found. Please check the reports and suggested fixes in the job [Lint Markdown files]. Otherwise, you can download report files in uploaded artifact."
32+
git add -A
33+
if ! git diff-index --quiet --cached HEAD --; then
34+
echo "Stop."
6235
exit 1
63-
fi
36+
fi
37+
38+
- name: Check for changes
39+
id: check_changes
40+
run: |
41+
if git diff --quiet; then
42+
echo "No changes detected."
43+
echo "has_changes=false" >> "$GITHUB_OUTPUT"
44+
else
45+
echo "Changes detected. Preparing to commit..."
46+
echo "has_changes=true" >> "$GITHUB_OUTPUT"
47+
fi
48+
49+
- name: Commit and push changes
50+
if: steps.check_changes.outputs.has_changes == 'true'
51+
run: |
52+
git config --global user.name "github-actions"
53+
git config --global user.email "[email protected]"
54+
git add -A
55+
git commit -m "Auto fix formatting by autocorrect [ci skip]"
56+
git push origin HEAD
57+
58+
- name: Create Pull Request (if on non-master branch)
59+
if: github.ref != 'refs/heads/master' && steps.check_changes.outputs.has_changes == 'true'
60+
uses: peter-evans/create-pull-request@v6
61+
with:
62+
commit-message: "Auto fix formatting by autocorrect [ci skip]"
63+
branch: auto-fix-${{ github.run_number }}
64+
delete-branch: true
65+
title: "Auto fix formatting by autocorrect"
66+
body: |
67+
This PR contains automatic fixes by the `autocorrect` tool.
68+
Generated by GitHub Actions run ${{ github.run_number }}.

Assignment.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
- HCTT 文档翻译(自由选择一篇已收集的英文文档),按照 Wiki 中要求的流程完成 “翻译申请”,“翻译提交” 等操作。
1+
- HCTT 文档翻译(自由选择一篇已收集的英文文档),按照 Wiki 中要求的流程完成“翻译申请”,“翻译提交”等操作。
22
- 选择 Git 游戏学习方式(https://learngitbranching.js.org),当然,这个游戏也是开源在 Github 上的项目,大家也可以选择向这个仓库进行开源贡献。
33
- 在 Github/Gitee 上创新一个账号(如果没有的话),并使用工具提交自己的第一个 commit,PR。
4-
- 在 pwn.hust.college 平台 <https://pwn.cse.hust.edu.cn> 中完成 “Linux/Unix 基本命令使用” 道馆(**待创建**)。
4+
- 在 pwn.hust.college 平台 <https://pwn.cse.hust.edu.cn> 中完成“Linux/Unix 基本命令使用”道馆(**待创建**)。

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 开源软件通识课程
22

3-
欢迎大家来到华科开放原子开源俱乐部的《开源软件通识课程》内部培训课程。本课程将秉持 “以开源方式来建设开源课程” 的指导方针,带同学们一起畅游开源软件的海洋。
3+
欢迎大家来到华科开放原子开源俱乐部的《开源软件通识课程》内部培训课程。本课程将秉持“以开源方式来建设开源课程”的指导方针,带同学们一起畅游开源软件的海洋。
44

55
带领俱乐部成员认识开源软件经历如下的不同阶段:
66

docs/ch1/sec1/what-is-oss.md

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
1. **互动投票**
1414
- **工具**:使用在线工具让学生投票选择日常使用的软件:Chrome、安卓手机、VS Code、Firefox 等,揭晓答案均为开源或基于开源。
15-
- **扩展问题**:提问一些与开源相关的问题,比如 “近年来最火热的开源软件有哪些?”“你认为全球软件开发有多大比例依赖开源代码?” 通过展示全球 97%软件开发依赖开源代码等统计数据,给学生带来震撼。
15+
- **扩展问题**:提问一些与开源相关的问题,比如“近年来最火热的开源软件有哪些?”“你认为全球软件开发有多大比例依赖开源代码?”通过展示全球 97% 软件开发依赖开源代码等统计数据,给学生带来震撼。
1616
2. **沉浸式故事**
1717
- **视频片段**:插入 [Linux 诞生纪录片](视频链接),通过真实故事让学生感知开源的力量,激发参与的兴趣。
1818

@@ -80,11 +80,11 @@
8080

8181
| 系统 | 性质 | 关键事件 |
8282
| ----------- | -------- | ------------------------------ |
83-
| **UNIX** | 初期闭源 | AT&T禁止大学传播源码(1979) |
84-
| **DOS/Windows** | 完全闭源 | 微软通过闭源绑定IBM PC(1981) |
85-
| **VMS** | 闭源 | DEC专用系统,影响早期网络架构 |
83+
| **UNIX** | 初期闭源 | AT&T 禁止大学传播源码(1979) |
84+
| **DOS/Windows** | 完全闭源 | 微软通过闭源绑定 IBM PC(1981) |
85+
| **VMS** | 闭源 | DEC 专用系统,影响早期网络架构 |
8686

87-
- **UNIX**:虽然最初的 UNIX 系统是由贝尔实验室(AT&T)开发的,但由于其巨大的技术潜力和影响力,AT&T 在1979年开始限制其源代码的传播,开启了闭源软件的霸权时代。
87+
- **UNIX**:虽然最初的 UNIX 系统是由贝尔实验室(AT&T)开发的,但由于其巨大的技术潜力和影响力,AT&T 在 1979 年开始限制其源代码的传播,开启了闭源软件的霸权时代。
8888
- **DOS/Windows**:微软通过完全封闭源代码,并将其绑定到 IBM PC 的硬件上,成功建立起了 PC 操作系统的市场主导地位。
8989
- **VMS**:DEC 公司开发的 VMS 操作系统长期封闭,成为其自家硬件的专用系统,影响了早期的网络架构。
9090

@@ -98,8 +98,8 @@
9898

9999
**闭源主导领域**
100100

101-
- **浏览器大战****Netscape** 最初是闭源的(1994年),它曾是最受欢迎的浏览器。然而,由于开源运动的推动,Netscape 决定在1998年开源其浏览器核心,最终催生了 **Mozilla Firefox** 这一开源浏览器的诞生,直接挑战了微软的 **Internet Explorer**
102-
- **办公软件****微软 Office**1989年)凭借其强大的功能和用户基础,长期占据办公软件市场的统治地位,且完全闭源,极大限制了用户的定制和扩展能力。
101+
- **浏览器大战****Netscape** 最初是闭源的(1994 年),它曾是最受欢迎的浏览器。然而,由于开源运动的推动,Netscape 决定在 1998 年开源其浏览器核心,最终催生了 **Mozilla Firefox** 这一开源浏览器的诞生,直接挑战了微软的 **Internet Explorer**
102+
- **办公软件****微软 Office**1989 年)凭借其强大的功能和用户基础,长期占据办公软件市场的统治地位,且完全闭源,极大限制了用户的定制和扩展能力。
103103

104104
**开源亮点**
105105

@@ -114,12 +114,12 @@
114114

115115
**RFC 文化(始于 1969)**
116116

117-
- **开放标准的倡导者**:互联网工程任务组(IETF)通过**公开征求意见稿(RFC)**推动互联网协议的标准化。例如,**HTTP/1.0 规范**在1996年以 RFC 1945 的形式发布,为全球的网络通信提供了共同语言。
117+
- **开放标准的倡导者**:互联网工程任务组(IETF)通过**公开征求意见稿(RFC)**推动互联网协议的标准化。例如,**HTTP/1.0 规范**在 1996 年以 RFC 1945 的形式发布,为全球的网络通信提供了共同语言。
118118

119119
**黑客伦理的影响**
120120

121121
- **开源的文化传承**:MIT 的 **AI 实验室**等机构提倡代码共享,早期的 **ITS 操作系统**就是一个典型的例子。其开放的代码理念,成为了日后现代开源运动的精神先驱。
122-
- **Richard Stallman 与 GNU 计划**1983年**Richard Stallman** 发布 **GNU 宣言**,并启动了 GNU 计划,致力于创建一个完全自由的操作系统。这标志着现代开源运动的觉醒,为后来的 **Linux** 内核等开源软件提供了理论支持和实践基础。
122+
- **Richard Stallman 与 GNU 计划**1983 年**Richard Stallman** 发布 **GNU 宣言**,并启动了 GNU 计划,致力于创建一个完全自由的操作系统。这标志着现代开源运动的觉醒,为后来的 **Linux** 内核等开源软件提供了理论支持和实践基础。
123123

124124
---
125125

@@ -128,11 +128,11 @@
128128
| 年份 | 关键事件 |
129129
| ---------- | --------------------------------------------- |
130130
| **1969** | **ARPANET**诞生,开放协议成为互联网基础 |
131-
| **1979** | AT&T开始收紧UNIX授权,闭源的商业化趋势显现 |
132-
| **1983** | **GNU宣言**发布,标志着现代开源运动的觉醒 |
133-
| **1985** | **FSF(自由软件基金会)**成立,**GPL协议**诞生 |
134-
| **1991** | **Linux内核**首次发布,成为开源软件的代表 |
135-
| **1995** | **Apache**超越闭源服务器,成为Web服务器的主流 |
131+
| **1979** | AT&T 开始收紧 UNIX 授权,闭源的商业化趋势显现 |
132+
| **1983** | **GNU 宣言**发布,标志着现代开源运动的觉醒 |
133+
| **1985** | **FSF(自由软件基金会)**成立,**GPL 协议**诞生 |
134+
| **1991** | **Linux 内核**首次发布,成为开源软件的代表 |
135+
| **1995** | **Apache**超越闭源服务器,成为 Web 服务器的主流 |
136136
| **1998** | "开源"一词正式诞生,开源成为技术和文化的代名词 |
137137

138138
---
@@ -179,7 +179,7 @@ flowchart TD
179179
- **核心逻辑**
180180
- 外部依旧保持闭源,但内部采用开源协作方式,跨团队共享代码库,允许内部贡献和修改。
181181
- **案例**
182-
- **微软**:通过 “One Engineering System” 实施内部开源,促进跨部门的协作与代码共享。
182+
- **微软**:通过“One Engineering System”实施内部开源,促进跨部门的协作与代码共享。
183183
- **沃尔玛**:采用内部开源模式开发电商平台,加速了门店系统的开发与迭代。
184184

185185
**完全开源**
@@ -216,7 +216,7 @@ flowchart TD
216216

217217
开源不仅仅局限于数字世界,它在现实世界中也有广泛的应用场景。这些历史上的巨大协作工程和项目都能为我们提供开源模式的启示。
218218

219-
**现实世界中的 “开源式协作”**
219+
**现实世界中的“开源式协作”**
220220

221221
- **古罗马引水渠建设**:多个城邦共享水利工程技术,技术改进方案被刻在公共石碑上,类似今天的 **Git 提交历史**
222222
- **维基百科编辑**:全球用户可以编辑条目,类似于 **Pull Request** 的方式,且条目的讨论页记录了社区的争议解决过程,类似于 **Code Review**
@@ -236,21 +236,21 @@ timeline
236236

237237
**深度对比:金字塔 vs Linux 内核**
238238

239-
| 维度 | 古埃及金字塔建造 | Linux内核开发 |
239+
| 维度 | 古埃及金字塔建造 | Linux 内核开发 |
240240
| -------- | ---------------------- | ----------------------------------- |
241-
| **协作规模** | 10万劳工+数百工程师 | 16000+贡献者 |
242-
| **知识管理** | 象形文字记录在莎草纸上 | Git提交记录在GitHub |
241+
| **协作规模** | 10 万劳工 + 数百工程师 | 16000+ 贡献者 |
242+
| **知识管理** | 象形文字记录在莎草纸上 | Git 提交记录在 GitHub |
243243
| **质量控制** | 监工现场检查石块 | CI/CD自动化测试,社区反馈,人工审查 |
244-
| **传承方式** | 师徒制手把手传授 | 代码审查+开发者文档 |
245-
| **核心动力** | 法老的绝对权威 | 技术领导力+社区共识 |
244+
| **传承方式** | 师徒制手把手传授 | 代码审查 + 开发者文档 |
245+
| **核心动力** | 法老的绝对权威 | 技术领导力 + 社区共识 |
246246

247247
“当建造数字巴别塔时,开源不是可选项,而是必选项”
248248

249249
---
250250

251-
#### 💡 认知发散:开源的可能是一种 “群体智慧协议”
251+
#### 💡 认知发散:开源的可能是一种“群体智慧协议”
252252

253-
开源不仅仅改变了软件开发的方式,它还为全人类提供了一种更为高效、智能的协作模型。这种 “群体智慧协议” 不仅解决技术问题,也在解决人类文明的重大挑战。
253+
开源不仅仅改变了软件开发的方式,它还为全人类提供了一种更为高效、智能的协作模型。这种“群体智慧协议”不仅解决技术问题,也在解决人类文明的重大挑战。
254254

255255
---
256256

@@ -262,9 +262,9 @@ timeline
262262

263263
| 层级 | 核心要素 | 现实映射案例 |
264264
| ------------------ | ---------------------------------------------------- | -------------------------------- |
265-
| **工具层** | Git/Markdown/CI/CD等技术工具 | GitHub工作流、Jupyter Notebook |
266-
| **方法论层** | Pull Request机制/社区治理规则/许可证体系 | Apache投票制度、Linux维护者体系 |
267-
| **生态层** | 多主体共生的可持续系统(开发者-企业-用户的正向循环) | Kubernetes生态、RISC-V指令集联盟 |
265+
| **工具层** | Git/Markdown/CI/CD等技术工具 | GitHub 工作流、Jupyter Notebook |
266+
| **方法论层** | Pull Request 机制/社区治理规则/许可证体系 | Apache 投票制度、Linux 维护者体系 |
267+
| **生态层** | 多主体共生的可持续系统(开发者 - 企业 - 用户的正向循环) | Kubernetes 生态、RISC-V 指令集联盟 |
268268
| **文明层** | 开放协作成为解决复杂系统的默认选项 | 人类基因组计划、维基百科 |
269269

270270
开源的概念从最初的代码共享,发展到如今的**开放协作**,并通过跨技术、跨行业、跨领域的应用,成为解决全球性问题的有效工具。这四个层级的跃迁反映了开源从技术实践到文化理念的深刻转变。
@@ -287,7 +287,7 @@ timeline
287287

288288
数学作为人类最早的开源实践之一,通过符号系统的共享、定理的公开证明、知识的积累和去中心化协作,展现了开源的原始特征。
289289

290-
**数学的 “开源特性” 解剖**
290+
**数学的“开源特性”解剖**
291291

292292
- 符号系统的开源:阿拉伯数字、希腊字母全球通用。
293293
- 知识积累的开放性:定理证明可复现、可验证、可改进。
@@ -322,10 +322,10 @@ timeline
322322
| 维度 | 数学论文系统 | 现有开源项目系统 |
323323
| ---------------------- | -------------- | ---------------- |
324324
| **最小协作单元** | 定理证明 | Pull Request |
325-
| **版本管理** | 多版本手稿传递 | Git分支管理 |
325+
| **版本管理** | 多版本手稿传递 | Git 分支管理 |
326326
| **质量检验** | 同行评审 | Code Review |
327-
| **知识传承** | 学术谱系 | Contributor图谱 |
328-
| **争议解决** | 学术辩论 | Issue讨论 |
327+
| **知识传承** | 学术谱系 | Contributor 图谱 |
328+
| **争议解决** | 学术辩论 | Issue 讨论 |
329329

330330
---
331331

@@ -336,8 +336,8 @@ timeline
336336
| 领域 | 开源实践 | 数学渊源 |
337337
| ------------------ | ---------------------- | ---------------------- |
338338
| **区块链** | 以太坊智能合约开源 | 图灵可计算理论开放验证 |
339-
| **生物技术** | CRISPR基因编辑协议共享 | DNA双螺旋结构开放研究 |
340-
| **航天** | SpaceX公开火箭设计蓝图 | 开普勒行星定律开源传播 |
339+
| **生物技术** | CRISPR 基因编辑协议共享 | DNA 双螺旋结构开放研究 |
340+
| **航天** | SpaceX 公开火箭设计蓝图 | 开普勒行星定律开源传播 |
341341

342342
**开源文化主流的特性**
343343

0 commit comments

Comments
 (0)