feat: Add `sparse-checkout-aggregate` action
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu với định dạng sources.yml, cách sử dụng GitHub Actions trong ví dụ và các lệnh sparse-checkout được liệt kê. Xác định cách tổng hợp đầy đủ và tổng hợp tăng dần, bộ nhớ đệm, quyền truy cập kho lưu trữ riêng tư và các đầu ra JSON phải hoạt động, sau đó kiểm tra action dựa trên các ví dụ và dạng đầu ra đã được ghi trong tài liệu.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
Create a reusable GitHub Action that clones/updates multiple repositories using git sparse checkout based on a mapping file (sources.yml).
Use Case
Aggregate documentation from multiple repositories into a single build. Supports both full re-aggregation and incremental single-repo updates with caching.
Specification
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
sources_file |
Yes | — | Path to sources.yml mapping file |
output_dir |
No | .sources |
Directory for cloned repos |
only |
No | — | Single repo to update (incremental mode) |
token |
No | ${{ github.token }} |
For private repos |
Outputs
| Output | Description |
|---|---|
sources |
JSON array of { key, repo, path, local_path, sha } |
symlinks |
JSON array of { source, target } for symlink-map action |
source_shas |
Hash of all repo SHAs for cache key |
Example Output
// sources
[
{ "key": "ai", "repo": "arustydev/ai", "path": "docs/src", "local_path": ".sources/ai/docs/src", "sha": "abc123" },
{ "key": "just", "repo": "arustydev/just", "path": "docs/src", "local_path": ".sources/just/docs/src", "sha": "def456" }
]
// symlinks
[
{ "source": ".sources/ai/docs/src", "target": "books/ai" },
{ "source": ".sources/just/docs/src", "target": "books/just" }
]
Sources File Format (sources.yml)
books:
ai:
repo: arustydev/ai
path: docs/src
ref: main
title: "AI Configuration"
just:
repo: arustydev/just
path: docs/src
ref: main
title: "Justfile Library"
Example Usage
- uses: arustydev/gha/sparse-checkout-aggregate@v1
id: aggregate
with:
sources_file: sources.yml
only: ${{ github.event.client_payload.source_repo }}
Implementation Notes
Sparse Checkout Commands
# New clone
git clone --filter=blob:none --sparse --depth=1 \
"https://github.com/$repo.git" ".sources/$key"
git -C ".sources/$key" sparse-checkout set "$path"
# Update existing
git -C ".sources/$key" fetch origin "$ref"
git -C ".sources/$key" checkout "origin/$ref" -- "$path"
Key Features
- Use
--filter=blob:nonefor minimal data transfer - Support incremental updates via
onlyinput - Output structured JSON for downstream actions
- Calculate SHA hash for each repo for cache invalidation
- Handle private repos via token input
Related
- Part of docs aggregation workflow extraction
- Outputs consumed by
symlink-mapaction - Triggered by
trigger-remote-workflowaction
- Ngôn ngữ chính
- Shell
- Star
- 0
- Fork
- 0
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của aRustyDev/gh
-
dependencies github-actions
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 10/100
-
dependencies github-actions
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 15/100
-
dependencies github-actions
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 50/100
-
dependencies github-actions
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 20/100
-
dependencies github-actions
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 10/100
Issue tương tự
-
[Bug] reef-hermes tells me to resume with hermes --resume, which does not work from my shell Đang mởarea: harness bug status: needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Human-Agent-Society/reef#625 ·
-
module: core
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
bigbluebutton/bigbluebutton#25849 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
vercel-labs/just-bash#464 ·
-
area:sandbox documentation enhancement platform:linux
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
anthropics/claude-code#96664 ·
-
cost:cheap severity:medium
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
fairagro/m4.2_sql_to_arc#227 ·