Engineering project · Developer Tools

Copy GitHub Repo

A PowerShell-based approach to copying or migrating GitHub repositories with deliberate choices about source history and a preview of the intended operation.

Copy GitHub repositories with PowerShell using clean snapshots or full history, preview plans, and safety checks.

KEY THEMESSnapshot mode creates a clean copy; FullHistory preserves historyPreview plans before making repository changesBuilt-in checks help avoid unsafe copy operations
01 / Why

The problem

Repository copies involve a choice between starting fresh and retaining complete history, with risks around unexpected changes.

A normal Git clone does not recreate every GitHub-side setting or release artifact, and a fresh public copy may intentionally need a clean provenance boundary.

The underlying question is not simply whether the project can perform a task, but how that task can remain understandable, repeatable, and safe as conditions change.

02 / What

The solution

Offer deliberate Snapshot and FullHistory modes alongside preview plans and safety checks.

Review a non-mutating plan, choose Snapshot or FullHistory, and explicitly execute the approved operation. Optional releases and GitHub Pages restoration have separate opt-in behavior and verification boundaries.

Use Snapshot for clean publication, FullHistory where ancestry matters, and plan-only mode before any move that could affect an existing destination.

03 / Who

Who it's for

Repository maintainers migrating projects or creating controlled copies.

A practical fit is a reader or maintainer who wants a defined workflow and documented boundaries rather than an unexplained one-off operation.

Use Snapshot for clean publication, FullHistory where ancestry matters, and plan-only mode before any move that could affect an existing destination.

04 / How

How it works

Key capabilities and concepts. See the project documentation or source code for implementation details.

1

Snapshot mode creates a clean copy; FullHistory preserves history

Snapshot mode creates a clean copy; FullHistory preserves history.

Review a non-mutating plan, choose Snapshot or FullHistory, and explicitly execute the approved operation. Optional releases and GitHub Pages restoration have separate opt-in behavior and verification boundaries.

2

Preview plans before making repository changes

Preview plans before making repository changes.

Safety and recoverability matter more than silently copying every possible property. Secrets, external DNS, and some GitHub-side features are deliberately outside the migration scope.

3

Built-in checks help avoid unsafe copy operations

Built-in checks help avoid unsafe copy operations.

Use Snapshot for clean publication, FullHistory where ancestry matters, and plan-only mode before any move that could affect an existing destination.

05 / Engineering perspective

Design decisions that matter

  • Make history preservation an explicit choice.

    Make history preservation an explicit choice.

    Safety and recoverability matter more than silently copying every possible property. Secrets, external DNS, and some GitHub-side features are deliberately outside the migration scope.

  • Expose the intended operation before execution.

    Expose the intended operation before execution.

    A normal Git clone does not recreate every GitHub-side setting or release artifact, and a fresh public copy may intentionally need a clean provenance boundary.

  • Prefer safety checks to surprising repository changes.

    Prefer safety checks to surprising repository changes.

    Review a non-mutating plan, choose Snapshot or FullHistory, and explicitly execute the approved operation. Optional releases and GitHub Pages restoration have separate opt-in behavior and verification boundaries.

06 / Current state

Explore the implementation

The repository and published documentation describe available commands, requirements, and current behavior.

Safety and recoverability matter more than silently copying every possible property. Secrets, external DNS, and some GitHub-side features are deliberately outside the migration scope.

For exact current usage, prerequisites, and release status, consult the source repository and published documentation.

07 / Deeper reading

Related articles

Engineering context and lessons behind this project.