CopyGitHubRepo
0.3.0
PowerShell module for safely copying and migrating GitHub repositories with clean Snapshot or history-preserving FullHistory modes.
Minimum PowerShell version
7.4
Installation Options
Owners
Copyright
(c) 2026 infoconex. Licensed under the MIT License.
Package Details
Author(s)
- infoconex
Tags
GitHub Git Repository Copy Migration Automation DevOps PowerShell Windows Linux MacOS
Functions
Copy-GitHubRepository Get-GitHubRepository Start-CopyGitHubRepositoryWizard Test-GitHubRepositoryMigration
PSEditions
Dependencies
This module has no dependencies.
Release Notes
### Added
- Added opt-in GitHub Release preservation for `Snapshot` migrations with `-IncludeReleases`, building a clean unrelated checkpoint history from selected reviewed release states instead of preserving original source commit identity or detailed ancestry.
- Added deterministic ancestry-ordered Snapshot checkpoint planning from immutable reviewed tag, ref, and tree evidence, including duplicate-target coalescing and fail-closed handling for incompatible release topology or selected source drift.
- Added recreation of selected release tags, GitHub Release metadata, assets, and Latest designation against generated Snapshot checkpoint commits, with independent read-only verification of checkpoint sequence, parentage, tree equivalence, tag targets, release content, and final current-state behavior.
- Added Snapshot release-preservation options to the guided wizard, including the same tag include/exclude, prerelease, draft, and newest-N filters available to the command surface.
- Added Snapshot release-preservation provenance and recovery evidence plus controlled unit, integration, and live GitHub end-to-end coverage for new-destination, same-name replacement, filtering, assets, Latest designation, and final-HEAD scenarios.
### Changed
- Clarified the Snapshot contract across user, reference, product, and engineering documentation: plain Snapshot remains one unrelated current-state root commit, while `Snapshot -IncludeReleases` creates new checkpoint commits and intentionally does not preserve original commit identities or ancestry; FullHistory remains the history- and tag-target-preserving mode.
- Extended product traceability and migration orchestration documentation to distinguish plain Snapshot, Snapshot release checkpoints, and FullHistory release preservation consistently.
FileList
- CopyGitHubRepo.nuspec
- Private\Migration\Write-CgrMigrationRecoveryReport.ps1
- Private\Wizard\Test-CgrExpectedWizardApplicationError.ps1
- Private\GitHub\New-CgrGitHubRepository.ps1
- CopyGitHubRepo.psd1
- Private\Migration\Invoke-CgrPostVerificationConfigurationRestore.ps1
- Private\Wizard\Read-CgrWizardRepositoryName.ps1
- Private\GitHub\Get-CgrGitHubReleaseSelection.ps1
- CopyGitHubRepo.format.ps1xml
- Private\Migration\Write-CgrMigrationPlanReport.ps1
- Private\Wizard\Get-CgrActivityTerminalState.ps1
- Private\GitHub\Get-CgrGitHubApiOptional.ps1
- CopyGitHubRepo.psm1
- Private\Migration\Copy-CgrRepositorySnapshot.ps1
- Private\Wizard\ConvertTo-CgrWizardNavigationResult.ps1
- Private\GitHub\Set-CgrGitHubRepositorySetting.ps1
- Public\Get-GitHubRepository.ps1
- Private\Migration\Invoke-CgrNewDestinationFullHistory.ps1
- Private\Wizard\Read-CgrWizardInput.ps1
- Private\GitHub\Rename-CgrGitHubRepository.ps1
- Public\Start-CopyGitHubRepositoryWizard.ps1
- Private\Migration\Invoke-CgrRepositorySnapshotVerification.ps1
- Private\Wizard\Test-CgrConsoleStylingAvailable.ps1
- Private\GitHub\Invoke-CgrGitHubApiMutation.ps1
- Public\Copy-GitHubRepository.ps1
- Private\Migration\Invoke-CgrApprovedSnapshotReleaseVerification.ps1
- Private\Wizard\Format-CgrWizardText.ps1
- Private\GitHub\Copy-CgrApprovedGitHubRelease.ps1
- Public\Test-GitHubRepositoryMigration.ps1
- Private\Migration\Get-CgrSnapshotReleasePreservationEvidence.ps1
- Private\Wizard\Invoke-CgrActivityStage.ps1
- Private\GitHub\Invoke-CgrGitHubApiReadRequest.ps1
- Private\Git\Invoke-CgrGitCommand.ps1
- Private\Migration\Write-CgrMigrationExecutionReport.ps1
- Private\Wizard\Invoke-CgrRepositoryCopyWizard.ps1
- Private\GitHub\Test-CgrGitHubReleaseMigration.ps1
- Private\Git\Get-CgrGitCommitIdentity.ps1
- Private\Wizard\Write-CgrWizardCompletionSummary.ps1
- Private\Wizard\Resolve-CgrWizardDestinationRepository.ps1
- Private\GitHub\Get-CgrGitHubApi.ps1
- Private\Git\Invoke-CgrNativeCommand.ps1
- Private\Wizard\Select-CgrWizardRepository.ps1
- Private\Repository\Get-CgrRepository.ps1
- Private\GitHub\Test-CgrGitHubRepositoryExistence.ps1
- Private\Git\Copy-CgrGitLfsObject.ps1
- Private\Wizard\Invoke-CgrWithActivitySink.ps1
- Private\Repository\Get-CgrPrerequisiteStatus.ps1
- Private\GitHub\Get-CgrGitHubAuthenticationStatus.ps1
- Private\Git\Resolve-CgrNativeCommand.ps1
- Private\Wizard\New-CgrWizardActivitySink.ps1
- Private\Repository\ConvertTo-CgrRepositoryName.ps1
- Private\Replacement\Invoke-CgrSameNameFullHistoryReplacement.ps1
- Private\Migration\Invoke-CgrApprovedMigrationPlan.ps1
- Private\Wizard\Get-CgrActivityCompletionMessage.ps1
- Private\Repository\Get-CgrApprovedSourceState.ps1
- Private\Replacement\Get-CgrDefaultArchiveRepositoryName.ps1
- Private\Migration\Assert-CgrFullHistoryWorkspaceState.ps1
- Private\Wizard\Resolve-CgrWizardNavigationInput.ps1
- Private\Repository\Assert-CgrSupportedHostName.ps1
- Private\Replacement\Invoke-CgrSameNameSnapshotReplacement.ps1
- Private\Migration\Invoke-CgrApprovedFullHistoryVerification.ps1
- Private\Wizard\Send-CgrActivityEvent.ps1
- Private\Repository\Get-CgrRepositoryDefaultBranchTree.ps1
- Private\Replacement\Assert-CgrExistingDestinationReplacementConfirmation.ps1
- Private\Migration\New-CgrSnapshotReleaseCheckpointPlan.ps1
- Private\Wizard\Read-CgrWizardChoice.ps1
- Private\Repository\Set-CgrRepositoryProtectionConfiguration.ps1
- Private\Replacement\Assert-CgrSameNameReplacementConfirmation.ps1
- Private\Migration\Format-CgrMigrationExecutionResult.ps1
- Private\Wizard\Read-CgrWizardTextValue.ps1
- Private\Repository\Get-CgrSnapshotHistory.ps1
- Private\Replacement\Invoke-CgrExistingDestinationReplacement.ps1
- Private\Migration\Copy-CgrRepositoryFullHistory.ps1
- Private\Wizard\Format-CgrConsoleStatus.ps1
- Private\Repository\ConvertTo-CgrRepository.ps1
- Private\Replacement\Write-CgrExistingDestinationRecoveryReport.ps1
- Private\Migration\Invoke-CgrRepositoryFullHistoryVerification.ps1
- Private\Wizard\Test-CgrInteractiveTerminal.ps1
- Private\Repository\Get-CgrRepositoryFullHistoryIdentity.ps1
- Private\Replacement\Write-CgrSameNameRecoveryReport.ps1
- Private\Migration\Format-CgrMigrationPlan.ps1
- Private\Wizard\Show-CgrWizardHelp.ps1
- Private\Repository\Assert-CgrLocalResourcePreflight.ps1
- Private\Replacement\Assert-CgrReplacementRepositoryIdentity.ps1
- Private\Migration\Invoke-CgrNewDestinationSnapshot.ps1
- Private\Wizard\Write-CgrWizardMessage.ps1
- Private\Repository\Get-CgrRepositoryProtectionConfiguration.ps1
- Private\Utility\Get-CgrObjectProperty.ps1
- Private\Migration\New-CgrMigrationPlan.ps1
- Private\Wizard\Write-CgrWizardActivityEvent.ps1
- Private\Repository\Assert-CgrApprovedSourceState.ps1
- Private\Utility\Protect-CgrDiagnosticText.ps1
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 0.4.0 | 12 | 9/3/2026 |
| 0.3.0 (current version) | 8 | 9/1/2026 |
| 0.2.0 | 6 | 8/31/2026 |
| 0.1.1 | 11 | 8/26/2026 |
| 0.1.0 | 11 | 8/23/2026 |