Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

feat: Add `sparse-checkout-aggregate` action

Đang mở
#4 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
github-actions, shell
Lĩnh vực
ci-cd, devops

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ả

enhancement new-action

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:none for minimal data transfer
  • Support incremental updates via only input
  • 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-map action
  • Triggered by trigger-remote-workflow action
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

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của aRustyDev/gh

Tất cả issue của aRustyDev/gh

Issue tương tự

Thêm issue về Shell/Bash

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.