3.6 KiB
3.6 KiB
建仓库方法(Gitea API + token 推送完整流程)
本仓库由云端沙箱通过 Gitea API 创建并推送,以下为实际执行并验证成功的操作记录,可复用于其他仓库。
前置条件
- Gitea 实例端点:
http://far.net.cn/git/(API 前缀http://far.net.cn/git/api) - 一个具有建仓权限的 Access Token(Settings → Applications → Generate New Token,勾选
repo权限) - 本地安装 git 与 curl
export GITEA_TOKEN="<你的token>"
第 1 步:验证 token 与确认账号
curl -s -H "Authorization: token ${GITEA_TOKEN}" \
"http://far.net.cn/git/api/v1/user"
返回 JSON 中 login 字段即当前账号(本例为 admin)。若返回 401 则 token 无效或过期。
第 2 步:创建仓库(API 方式)
curl -s -X POST -H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "riscv-ulp-survey",
"description": "低功耗 RISC-V 开源芯片综述:参考实现、ISA 扩展、硅实现、商业化生态与 9 个开源仓库完整性实测评估",
"private": false,
"auto_init": true,
"default_branch": "main"
}' \
"http://far.net.cn/git/api/v1/user/repos"
关键参数说明:
name:仓库名(URL 中使用)auto_init: true:自动生成 README 并初始化 main 分支(便于直接 clone)private:false公开 /true私有- 成功返回 201 与仓库 JSON(含
html_url);仓库名已存在时返回 409
也可以用网页方式:Gitea 界面右上角 + → New Repository,填写后创建。
第 3 步:克隆新仓库到本地
git clone "http://oauth2:${GITEA_TOKEN}@far.net.cn/git/admin/riscv-ulp-survey.git"
cd riscv-ulp-survey
认证格式为 http://oauth2:<token>@<host>/<owner>/<repo>.git,用户名固定写 oauth2,密码位置放 token。
提示:
git clone对链路质量敏感,超时/断流时不要反复重试,可改用 Gitea Contents API 逐个上传文件(见第 5 步备选方案)。
第 4 步:添加文件并推送
# 放入文件(示例)
cp /path/to/低功耗RISC-V开源芯片综述.md .
cp /path/to/低功耗RISC-V开源芯片综述.docx .
# 编辑 README.md …
git add README.md 低功耗RISC-V开源芯片综述.md 低功耗RISC-V开源芯片综述.docx docs/
git commit -m "添加低功耗 RISC-V 开源芯片综述及建仓方法文档"
git push origin main
第 5 步(备选):Contents API 直传单文件
git 不可用时,可用 Contents API 直接创建/更新单文件(base64 编码内容):
CONTENT=$(base64 -w0 "低功耗RISC-V开源芯片综述.md")
python3 - "$CONTENT" <<'EOF'
import sys, json, urllib.request
token = os.environ["GITEA_TOKEN"]
body = json.dumps({
"content": sys.argv[1],
"message": "添加综述 Markdown",
"branch": "main"
}).encode()
req = urllib.request.Request(
"http://far.net.cn/git/api/v1/repos/admin/riscv-ulp-survey/contents/低功耗RISC-V开源芯片综述.md",
data=body, method="POST",
headers={"Authorization": f"token {token}", "Content-Type": "application/json"})
print(urllib.request.urlopen(req).status)
EOF
说明:新建文件用 POST;更新已有文件需先 GET 拿到原文件 SHA,再在 body 中带上 "sha" 字段用 PUT。中文文件名在 URL 中需百分号编码(urllib.parse.quote)。
本次执行结果
- 仓库:
admin/riscv-ulp-survey - 地址:http://far.net.cn/git/admin/riscv-ulp-survey
- 创建方式:API
POST /api/v1/user/repos(2026-09-06) - 推送内容:README.md、综述 md/docx、本方法文档