git-ssh-sync 0.5.1__tar.gz → 0.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/PKG-INFO +56 -2
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/README.md +55 -1
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/pyproject.toml +1 -1
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/__init__.py +1 -1
- git_ssh_sync-0.6.0/src/git_ssh_sync/branch.py +550 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/cli.py +87 -5
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/sync.py +248 -0
- git_ssh_sync-0.5.1/src/git_ssh_sync/branch.py +0 -212
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/attach.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/clone.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/config.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/console.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/dev.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/doctor.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/errors.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/git.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/logging_config.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/ssh.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/status.py +0 -0
- {git_ssh_sync-0.5.1 → git_ssh_sync-0.6.0}/src/git_ssh_sync/windows_git_ssh.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: git-ssh-sync
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: Sync Git commits through a local machine for development environments without direct GitHub or GitLab access.
|
|
5
5
|
Requires-Dist: pydantic>=2.13.4
|
|
6
6
|
Requires-Dist: pyyaml>=6.0.3
|
|
@@ -284,7 +284,7 @@ Main fields:
|
|
|
284
284
|
- `dev.host`, `dev.user`, `dev.os`: SSH connection target and remote OS
|
|
285
285
|
- `dev.work_path`: Work repository path on the development environment
|
|
286
286
|
- `dev.cache_path`: Bare cache repository path on the development environment
|
|
287
|
-
- `options.sync_tags`:
|
|
287
|
+
- `options.sync_tags`: Enable explicit Git tag synchronization
|
|
288
288
|
- `options.lfs`: Reserved option for Git LFS support
|
|
289
289
|
- `options.submodules`: Reserved option for submodule support
|
|
290
290
|
- `options.ff_only`: Keep synchronization fast-forward only
|
|
@@ -451,6 +451,35 @@ git-ssh-sync pull myproject --dry-run
|
|
|
451
451
|
git-ssh-sync push myproject --dry-run
|
|
452
452
|
```
|
|
453
453
|
|
|
454
|
+
## Tag Synchronization Workflow
|
|
455
|
+
|
|
456
|
+
Tags are synchronized explicitly so release refs are not changed during normal
|
|
457
|
+
branch `pull` / `push` operations. `sync-tags` only creates missing tags. It
|
|
458
|
+
stops when an existing tag name points to a different object, and it does not
|
|
459
|
+
delete, overwrite, or force-update tags.
|
|
460
|
+
|
|
461
|
+
To bring release tags from origin into the development environment:
|
|
462
|
+
|
|
463
|
+
```bash
|
|
464
|
+
git-ssh-sync sync-tags myproject --dry-run
|
|
465
|
+
git-ssh-sync sync-tags myproject
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
To publish tags created in the development work repository back to origin:
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
git-ssh-sync sync-tags myproject --direction dev-to-origin --dry-run
|
|
472
|
+
git-ssh-sync sync-tags myproject --direction dev-to-origin
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
Recommended release flow:
|
|
476
|
+
|
|
477
|
+
1. Run `git-ssh-sync pull myproject` before release work.
|
|
478
|
+
2. Create the release tag in the development work repository.
|
|
479
|
+
3. Run `git-ssh-sync sync-tags myproject --direction dev-to-origin --dry-run`.
|
|
480
|
+
4. If the dry-run reports only the intended new tag, run the command without
|
|
481
|
+
`--dry-run`.
|
|
482
|
+
|
|
454
483
|
## Workflow When Push Stops
|
|
455
484
|
|
|
456
485
|
`push` executes only when the branch on the origin side is an ancestor of the branch on the development environment side. It stops when origin has commits that have not been pulled yet, or when origin and the development environment have diverged.
|
|
@@ -552,6 +581,27 @@ To list existence status and ahead/behind for each branch, use `branch`.
|
|
|
552
581
|
git-ssh-sync branch myproject
|
|
553
582
|
```
|
|
554
583
|
|
|
584
|
+
To remove a branch after checking the affected refs, use `branch delete`.
|
|
585
|
+
The command stops if the development work repo is currently on that branch.
|
|
586
|
+
|
|
587
|
+
```bash
|
|
588
|
+
git-ssh-sync branch delete myproject feature/foo --dry-run
|
|
589
|
+
git-ssh-sync branch delete myproject feature/foo
|
|
590
|
+
git-ssh-sync branch delete myproject feature/foo --yes
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
To remove cache, work repo, and gateway tracking refs for branches that no longer
|
|
594
|
+
exist on origin, use `branch prune`.
|
|
595
|
+
|
|
596
|
+
```bash
|
|
597
|
+
git-ssh-sync branch prune myproject --dry-run
|
|
598
|
+
git-ssh-sync branch prune myproject
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
Branch rename is intentionally not automated yet. Rename a branch with normal Git
|
|
602
|
+
operations, then use `checkout`, `push`, `branch delete`, or `branch prune` to
|
|
603
|
+
bring each repository back into the intended state.
|
|
604
|
+
|
|
555
605
|
To inspect the development work repo directly from the local machine, use the
|
|
556
606
|
read-only `dev` commands.
|
|
557
607
|
|
|
@@ -595,6 +645,8 @@ When diverged, automatic resolution is not performed. Follow "Workflow When Push
|
|
|
595
645
|
| Initial clone | `git-ssh-sync clone myproject` |
|
|
596
646
|
| Check synchronization status | `git-ssh-sync status myproject` |
|
|
597
647
|
| Check branch status | `git-ssh-sync branch myproject` |
|
|
648
|
+
| Delete a branch after reviewing affected refs | `git-ssh-sync branch delete myproject feature/foo` |
|
|
649
|
+
| Prune refs for branches missing on origin | `git-ssh-sync branch prune myproject` |
|
|
598
650
|
| Inspect development work repo status | `git-ssh-sync dev status myproject` |
|
|
599
651
|
| Inspect development work repo diff | `git-ssh-sync dev diff myproject --stat` |
|
|
600
652
|
| Reflect changes from origin to development environment | `git-ssh-sync pull myproject` |
|
|
@@ -614,6 +666,7 @@ its own line.
|
|
|
614
666
|
Use `status` first when synchronization stops or the current state is unclear.
|
|
615
667
|
Use `doctor` for setup, connectivity, and repository wiring problems. Use
|
|
616
668
|
`recover` after an interrupted `pull` or `push`.
|
|
669
|
+
For a fuller operational guide, see [Troubleshooting](docs/troubleshooting.md).
|
|
617
670
|
|
|
618
671
|
### push stops because origin has new commits
|
|
619
672
|
|
|
@@ -866,4 +919,5 @@ uv run pytest
|
|
|
866
919
|
|
|
867
920
|
## Related Documentation
|
|
868
921
|
|
|
922
|
+
- [Troubleshooting](docs/troubleshooting.md)
|
|
869
923
|
- [Specification](docs/spec.md)
|
|
@@ -273,7 +273,7 @@ Main fields:
|
|
|
273
273
|
- `dev.host`, `dev.user`, `dev.os`: SSH connection target and remote OS
|
|
274
274
|
- `dev.work_path`: Work repository path on the development environment
|
|
275
275
|
- `dev.cache_path`: Bare cache repository path on the development environment
|
|
276
|
-
- `options.sync_tags`:
|
|
276
|
+
- `options.sync_tags`: Enable explicit Git tag synchronization
|
|
277
277
|
- `options.lfs`: Reserved option for Git LFS support
|
|
278
278
|
- `options.submodules`: Reserved option for submodule support
|
|
279
279
|
- `options.ff_only`: Keep synchronization fast-forward only
|
|
@@ -440,6 +440,35 @@ git-ssh-sync pull myproject --dry-run
|
|
|
440
440
|
git-ssh-sync push myproject --dry-run
|
|
441
441
|
```
|
|
442
442
|
|
|
443
|
+
## Tag Synchronization Workflow
|
|
444
|
+
|
|
445
|
+
Tags are synchronized explicitly so release refs are not changed during normal
|
|
446
|
+
branch `pull` / `push` operations. `sync-tags` only creates missing tags. It
|
|
447
|
+
stops when an existing tag name points to a different object, and it does not
|
|
448
|
+
delete, overwrite, or force-update tags.
|
|
449
|
+
|
|
450
|
+
To bring release tags from origin into the development environment:
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
git-ssh-sync sync-tags myproject --dry-run
|
|
454
|
+
git-ssh-sync sync-tags myproject
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
To publish tags created in the development work repository back to origin:
|
|
458
|
+
|
|
459
|
+
```bash
|
|
460
|
+
git-ssh-sync sync-tags myproject --direction dev-to-origin --dry-run
|
|
461
|
+
git-ssh-sync sync-tags myproject --direction dev-to-origin
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
Recommended release flow:
|
|
465
|
+
|
|
466
|
+
1. Run `git-ssh-sync pull myproject` before release work.
|
|
467
|
+
2. Create the release tag in the development work repository.
|
|
468
|
+
3. Run `git-ssh-sync sync-tags myproject --direction dev-to-origin --dry-run`.
|
|
469
|
+
4. If the dry-run reports only the intended new tag, run the command without
|
|
470
|
+
`--dry-run`.
|
|
471
|
+
|
|
443
472
|
## Workflow When Push Stops
|
|
444
473
|
|
|
445
474
|
`push` executes only when the branch on the origin side is an ancestor of the branch on the development environment side. It stops when origin has commits that have not been pulled yet, or when origin and the development environment have diverged.
|
|
@@ -541,6 +570,27 @@ To list existence status and ahead/behind for each branch, use `branch`.
|
|
|
541
570
|
git-ssh-sync branch myproject
|
|
542
571
|
```
|
|
543
572
|
|
|
573
|
+
To remove a branch after checking the affected refs, use `branch delete`.
|
|
574
|
+
The command stops if the development work repo is currently on that branch.
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
git-ssh-sync branch delete myproject feature/foo --dry-run
|
|
578
|
+
git-ssh-sync branch delete myproject feature/foo
|
|
579
|
+
git-ssh-sync branch delete myproject feature/foo --yes
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
To remove cache, work repo, and gateway tracking refs for branches that no longer
|
|
583
|
+
exist on origin, use `branch prune`.
|
|
584
|
+
|
|
585
|
+
```bash
|
|
586
|
+
git-ssh-sync branch prune myproject --dry-run
|
|
587
|
+
git-ssh-sync branch prune myproject
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
Branch rename is intentionally not automated yet. Rename a branch with normal Git
|
|
591
|
+
operations, then use `checkout`, `push`, `branch delete`, or `branch prune` to
|
|
592
|
+
bring each repository back into the intended state.
|
|
593
|
+
|
|
544
594
|
To inspect the development work repo directly from the local machine, use the
|
|
545
595
|
read-only `dev` commands.
|
|
546
596
|
|
|
@@ -584,6 +634,8 @@ When diverged, automatic resolution is not performed. Follow "Workflow When Push
|
|
|
584
634
|
| Initial clone | `git-ssh-sync clone myproject` |
|
|
585
635
|
| Check synchronization status | `git-ssh-sync status myproject` |
|
|
586
636
|
| Check branch status | `git-ssh-sync branch myproject` |
|
|
637
|
+
| Delete a branch after reviewing affected refs | `git-ssh-sync branch delete myproject feature/foo` |
|
|
638
|
+
| Prune refs for branches missing on origin | `git-ssh-sync branch prune myproject` |
|
|
587
639
|
| Inspect development work repo status | `git-ssh-sync dev status myproject` |
|
|
588
640
|
| Inspect development work repo diff | `git-ssh-sync dev diff myproject --stat` |
|
|
589
641
|
| Reflect changes from origin to development environment | `git-ssh-sync pull myproject` |
|
|
@@ -603,6 +655,7 @@ its own line.
|
|
|
603
655
|
Use `status` first when synchronization stops or the current state is unclear.
|
|
604
656
|
Use `doctor` for setup, connectivity, and repository wiring problems. Use
|
|
605
657
|
`recover` after an interrupted `pull` or `push`.
|
|
658
|
+
For a fuller operational guide, see [Troubleshooting](docs/troubleshooting.md).
|
|
606
659
|
|
|
607
660
|
### push stops because origin has new commits
|
|
608
661
|
|
|
@@ -855,4 +908,5 @@ uv run pytest
|
|
|
855
908
|
|
|
856
909
|
## Related Documentation
|
|
857
910
|
|
|
911
|
+
- [Troubleshooting](docs/troubleshooting.md)
|
|
858
912
|
- [Specification](docs/spec.md)
|