### Add tests to ensure that source and target must not be the same repository

**Summary of changes:**

- **`internal/validation/validation.go`** — added `ValidateEndpoints(sourceURL, targetURL)` that rejects identical (whitespace-trimmed) URLs and ignores empties so the existing "missing URL" errors stay specific.
- **`internal/syncer/syncer.go`** — `newSession` now calls `ValidateEndpoints` when a target is required, before any network I/O.
- **`internal/validation/validation_test.go`** — `TestValidateEndpoints` covers same/different/whitespace/empty/trailing-slash cases.
- **`internal/syncer/syncer_test.go`** — `TestPublicAPIRejectsIdenticalSourceAndTarget` proves `Run`, `Bootstrap`, and `Probe`-with-target all reject same URLs; `TestProbeWithoutTargetIgnoresEndpointEqualityCheck` guards against false positives when probe has no target.

### For --prune add negative tests

**Committed as `834619c` on `changes`:**
 - Proving `--branch main --prune` and `--map main:stable --prune` preserve unrelated target branches.

### GPG signing issue:

Register an empty config plugin [empty.go](https://github.com/go-git/go-git/blob/main/x/plugin/config/empty.go) via Register(ConfigLoader(), func() ConfigSource {
 return config.NewEmpty()
}) to remove settings such as gpgsign from both global and system levels.

### What I added:

- `internal/planner/planner_test.go`: `TestBuildPlansPrunePreservesUnrelatedBranchesUnderFilter` and `TestBuildReplicationPlansPrunePreservesUnrelatedBranchesUnderFilter`. Both are table-driven over the two scenarios (`--branch main` and `--map main:stable`) and prove the prune-scoping rule directly at the planner layer.
- `internal/syncer/integration_test.go`: `TestRun_IntegrationPrunePreservesUnrelatedTargetBranchUnderFilter` — end-to-end via the real `Run` pipeline against smart-HTTP servers. First sync seeds the target, then a `release` orphan is added, then the filtered `--prune` run must leave it intact.

### On the gpgSign disable:

**Committed as `d4cca23`:**
- Moved init() from `internal/syncertest/plugin.go` to a dedicated production package, cleaner placement.

### Integration Tests:

- Added `TestRun_IntegrationSyncPruneDeletesOrphanedBranch` to confirm orphan deletion and preservation of branch during sync with `Prune: true`.

### New Test Assertions:

- When `--tags` is unset, sync's `--prune` only operates on branches, preserving tags created after the prior sync.
- Added `TestRun_IntegrationSyncPruneTagsPreservesTagCreatedDuringSync` to check tag preservation during sync.

### Commit Summary:
- Managed incremental push failures and recovery in `TestRun_IntegrationIncrementalPushFailureRecoversOnRetry`.
