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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: git-ssh-sync
3
- Version: 0.5.1
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`: Synchronize Git tags when pulling or pushing
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`: Synchronize Git tags when pulling or pushing
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)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "git-ssh-sync"
3
- version = "0.5.1"
3
+ version = "0.6.0"
4
4
  description = "Sync Git commits through a local machine for development environments without direct GitHub or GitLab access."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -1,3 +1,3 @@
1
1
  """git-ssh-sync package."""
2
2
 
3
- __version__ = "0.5.1"
3
+ __version__ = "0.6.0"