gitwise-cli 0.35.0__tar.gz → 0.36.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.
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/CHANGELOG.md +12 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/PKG-INFO +1 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/__init__.py +1 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/_cli_dispatch.py +0 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/_cli_parser.py +2 -3
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/_i18n_data.json +6 -6
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/clean.py +0 -6
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/snapshot.py +8 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/update.py +32 -6
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/pyproject.toml +1 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/claude/rules/gitwise.md +1 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/codex/agents/gitwise.toml.template +1 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/continue/rules/gitwise.md.template +1 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/cursor/rules/gitwise.mdc.template +1 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/opencode/agents/gitwise.md.template +1 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/pi/skills/gitwise.md.template +1 -1
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/clean.json +0 -4
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_clean.py +19 -20
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_snapshot.py +13 -0
- gitwise_cli-0.36.0/tests/test_update.py +65 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/.gitignore +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/LICENSE +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/README.md +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/bin/gitwise +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/bin/gw +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/__main__.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/_cli_completions.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/_cli_introspection.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/_cli_setup_agents.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/_paths.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/_runtime_config.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/audit.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/branches.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/commit.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/conflicts.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/context.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/design.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/diff.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/doctor.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/git.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/health.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/i18n.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/log.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/merge.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/optimize.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/output.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/pick.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/pr.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/py.typed +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/schema.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/__init__.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/adapters/__init__.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/adapters/aider.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/adapters/base.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/adapters/codex.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/adapters/continue_adapter.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/adapters/cursor.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/adapters/opencode.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/adapters/pi.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/exec.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/format.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/plan.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/plan_gitfiles.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/plan_skills.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/providers/__init__.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/providers/aider.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/providers/base.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/providers/claude.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/providers/codex.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/providers/continue_adapter.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/providers/cursor.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/providers/opencode.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/providers/pi.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/state.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/types.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/show.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/stash.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/status.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/suggest.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/summarize.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/sync.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/tag.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/undo.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/utils/__init__.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/utils/git_output.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/utils/in_progress.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/utils/json_envelope.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/utils/parsing.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/utils/secret_scan.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/utils/types.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/worktree.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/install.sh +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/agents/skills/git-audit/SKILL.md +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/agents/skills/git-clean/SKILL.md +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/agents/skills/git-optimize/SKILL.md +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/aider/CONVENTIONS.md.template +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/aider/aider.conf.yml.template +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/claude/CLAUDE.md.template +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/claude/settings.json.template +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/claude/skills/git-audit/SKILL.md +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/claude/skills/git-clean/SKILL.md +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/claude/skills/git-optimize/SKILL.md +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/git-config-modern.txt +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/hooks/commit-msg +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/hooks/pre-commit +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/audit.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/branches.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/commands.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/commit.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/completions.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/conflicts.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/context.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/diff.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/doctor.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/health.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/log.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/merge.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/optimize.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/pick.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/pr.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/schema.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/setup-agents.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/setup.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/show.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/snapshot.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/stash.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/status.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/suggest.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/summarize.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/sync.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/tag.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/undo.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/update.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/input/worktree.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/audit.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/branches.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/clean.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/commands.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/commit.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/conflicts.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/context.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/diff.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/doctor.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/health.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/log.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/merge.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/optimize.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/pick.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/pr.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/setup-agents.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/setup.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/snapshot.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/stash.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/status.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/suggest.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/summarize.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/sync.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/tag.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/undo.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/update.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/share/schemas/v1/output/worktree.json +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/__init__.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/conftest.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_adapters.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_audit.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_branches.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_commands.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_commit.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_conflicts.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_context.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_design.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_diff.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_doctor.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_edge_cases.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_envelope_contract.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_git.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_git_output_utils.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_health.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_i18n.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_in_progress.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_json_envelope_utils.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_log.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_main.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_md_links_script.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_merge.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_optimize.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_output.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_parsing_utils.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_pick.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_pr.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_roadmap_baseline_script.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_sa_plan.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_sa_unit.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_schema_catalog.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_secret_scan.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_setup.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_setup_agents.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_show.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_stash.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_status.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_suggest.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_summarize.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_sync.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_sync_changelog_es_script.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_tag.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_types.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_undo.py +0 -0
- {gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/tests/test_worktree.py +0 -0
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
4
4
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
5
5
|
|
|
6
|
+
## v0.36.0 (2026-07-22)
|
|
7
|
+
|
|
8
|
+
### Fix
|
|
9
|
+
|
|
10
|
+
- remove unimplemented clean refs contract
|
|
11
|
+
|
|
12
|
+
## v0.35.1 (2026-07-22)
|
|
13
|
+
|
|
14
|
+
### Fix
|
|
15
|
+
|
|
16
|
+
- **snapshot**: honor canonical agents layout
|
|
17
|
+
|
|
6
18
|
## v0.35.0 (2026-07-22)
|
|
7
19
|
|
|
8
20
|
### Feat
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitwise-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.36.0
|
|
4
4
|
Summary: Python CLI for optimizing git workflows and Claude Code integration
|
|
5
5
|
Project-URL: Homepage, https://github.com/drzioner/gitwise
|
|
6
6
|
Project-URL: Repository, https://github.com/drzioner/gitwise
|
|
@@ -157,16 +157,15 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
157
157
|
p.add_argument("--diff", action="store_true")
|
|
158
158
|
p.add_argument("--max-commits", type=int, default=10, dest="max_commits")
|
|
159
159
|
|
|
160
|
-
p = sub.add_parser("snapshot", help="generate
|
|
160
|
+
p = sub.add_parser("snapshot", help="generate agent git snapshot", parents=[parent])
|
|
161
161
|
|
|
162
162
|
p = sub.add_parser(
|
|
163
163
|
"clean",
|
|
164
|
-
help="clean up stale branches
|
|
164
|
+
help="clean up stale branches",
|
|
165
165
|
aliases=["branch-clean"],
|
|
166
166
|
parents=[parent],
|
|
167
167
|
)
|
|
168
168
|
p.add_argument("--branches", action="store_true")
|
|
169
|
-
p.add_argument("--refs", action="store_true")
|
|
170
169
|
p.add_argument("--dry-run", action="store_true")
|
|
171
170
|
p.add_argument("--yes", "-y", action="store_true")
|
|
172
171
|
|
|
@@ -151,13 +151,9 @@
|
|
|
151
151
|
"es": "gitwise clean --branches --dry-run",
|
|
152
152
|
"en": "gitwise clean --branches --dry-run"
|
|
153
153
|
},
|
|
154
|
-
"clean_refs_not_implemented": {
|
|
155
|
-
"es": "'clean --refs' no está implementado",
|
|
156
|
-
"en": "'clean --refs' is not implemented"
|
|
157
|
-
},
|
|
158
154
|
"clean_specify_flag": {
|
|
159
|
-
"es": "especifica --branches
|
|
160
|
-
"en": "specify --branches
|
|
155
|
+
"es": "especifica --branches",
|
|
156
|
+
"en": "specify --branches"
|
|
161
157
|
},
|
|
162
158
|
"clean_to_delete": {
|
|
163
159
|
"es": "para eliminar: gitwise clean --branches --yes",
|
|
@@ -2071,6 +2067,10 @@
|
|
|
2071
2067
|
"es": "ejecutaría: git pull --ff-only en {dir}",
|
|
2072
2068
|
"en": "would run: git pull --ff-only in {dir}"
|
|
2073
2069
|
},
|
|
2070
|
+
"update_deprecation_hint": {
|
|
2071
|
+
"es": "update esta deprecado; usa `brew upgrade gitwise` para Homebrew o `uv tool upgrade gitwise-cli` para instalaciones con uv tool",
|
|
2072
|
+
"en": "update is deprecated; use `brew upgrade gitwise` for Homebrew or `uv tool upgrade gitwise-cli` for uv tool installations"
|
|
2073
|
+
},
|
|
2074
2074
|
"updated_git_conventions": {
|
|
2075
2075
|
"es": "actualizado: {file} (convenciones git agregadas)",
|
|
2076
2076
|
"en": "updated: {file} (git conventions added)"
|
|
@@ -59,7 +59,6 @@ def _categorize(
|
|
|
59
59
|
def run_clean(
|
|
60
60
|
*,
|
|
61
61
|
branches: bool = False,
|
|
62
|
-
refs: bool = False,
|
|
63
62
|
dry_run: bool = False,
|
|
64
63
|
yes: bool = False,
|
|
65
64
|
as_json: bool = False,
|
|
@@ -70,11 +69,6 @@ def run_clean(
|
|
|
70
69
|
user-cancelled), 1 on delete failures or missing flag, 2 when
|
|
71
70
|
``--json`` is used without ``--yes``.
|
|
72
71
|
"""
|
|
73
|
-
if refs:
|
|
74
|
-
return report_error(
|
|
75
|
-
"clean", as_json=as_json, msg=t("clean_refs_not_implemented"), code="not_implemented"
|
|
76
|
-
)
|
|
77
|
-
|
|
78
72
|
if not branches:
|
|
79
73
|
return report_error(
|
|
80
74
|
"clean", as_json=as_json, msg=t("clean_specify_flag"), code="clean_specify_flag"
|
|
@@ -10,6 +10,13 @@ from gitwise.output import debug, print_header, print_json, status
|
|
|
10
10
|
from gitwise.utils.json_envelope import ok_envelope
|
|
11
11
|
|
|
12
12
|
|
|
13
|
+
def _snapshot_relative_path(root: Path) -> str:
|
|
14
|
+
"""Return the snapshot path for the repository's active agent layout."""
|
|
15
|
+
if (root / ".agents").is_dir():
|
|
16
|
+
return ".agents/git-snapshot.md"
|
|
17
|
+
return ".claude/git-snapshot.md"
|
|
18
|
+
|
|
19
|
+
|
|
13
20
|
def _append_branch_section(lines: list[str], *, root: Path) -> None:
|
|
14
21
|
"""Append the current branch section to *lines*."""
|
|
15
22
|
branch = git_run(["branch", "--show-current"], cwd=root, check=False)
|
|
@@ -105,7 +112,7 @@ def run_snapshot(*, as_json: bool = False) -> int:
|
|
|
105
112
|
return 1
|
|
106
113
|
|
|
107
114
|
with status(t("status_snapshot_gen")):
|
|
108
|
-
path = generate_snapshot(root)
|
|
115
|
+
path = generate_snapshot(root, relative_path=_snapshot_relative_path(root))
|
|
109
116
|
|
|
110
117
|
if as_json:
|
|
111
118
|
print_json(ok_envelope("snapshot", path=str(path)))
|
|
@@ -5,13 +5,16 @@ from pathlib import Path
|
|
|
5
5
|
from gitwise.git import current_branch, has_upstream
|
|
6
6
|
from gitwise.git import run as git_run
|
|
7
7
|
from gitwise.i18n import t
|
|
8
|
-
from gitwise.output import error, info, print_dim, print_header, print_json, status
|
|
8
|
+
from gitwise.output import error, info, print_dim, print_header, print_json, status, warn
|
|
9
9
|
from gitwise.utils.json_envelope import error_envelope, ok_envelope
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def run_update(*, dry_run: bool = False, as_json: bool = False) -> int:
|
|
13
13
|
"""Entry point for the ``gitwise update`` command. Pulls the gitwise repo via git."""
|
|
14
14
|
install_dir = Path(__file__).parent.parent
|
|
15
|
+
upgrade_hint = t("update_deprecation_hint")
|
|
16
|
+
if not as_json:
|
|
17
|
+
warn(upgrade_hint)
|
|
15
18
|
if not (install_dir / ".git").is_dir():
|
|
16
19
|
if as_json:
|
|
17
20
|
print_json(
|
|
@@ -19,6 +22,7 @@ def run_update(*, dry_run: bool = False, as_json: bool = False) -> int:
|
|
|
19
22
|
"update",
|
|
20
23
|
error=t("update_requires_git_clone"),
|
|
21
24
|
code="update_requires_git_clone",
|
|
25
|
+
hint=upgrade_hint,
|
|
22
26
|
)
|
|
23
27
|
)
|
|
24
28
|
else:
|
|
@@ -26,7 +30,9 @@ def run_update(*, dry_run: bool = False, as_json: bool = False) -> int:
|
|
|
26
30
|
return 1
|
|
27
31
|
if dry_run:
|
|
28
32
|
if as_json:
|
|
29
|
-
print_json(
|
|
33
|
+
print_json(
|
|
34
|
+
ok_envelope("update", dry_run=True, dir=str(install_dir), hints=[upgrade_hint])
|
|
35
|
+
)
|
|
30
36
|
return 0
|
|
31
37
|
print_dim(t("update_dry_run", dir=str(install_dir)))
|
|
32
38
|
return 0
|
|
@@ -35,7 +41,15 @@ def run_update(*, dry_run: bool = False, as_json: bool = False) -> int:
|
|
|
35
41
|
msg = t("update_no_upstream", branch=branch)
|
|
36
42
|
hint = t("update_no_upstream_hint", branch=branch)
|
|
37
43
|
if as_json:
|
|
38
|
-
print_json(
|
|
44
|
+
print_json(
|
|
45
|
+
error_envelope(
|
|
46
|
+
"update",
|
|
47
|
+
error=msg,
|
|
48
|
+
code="no_upstream",
|
|
49
|
+
hint=hint,
|
|
50
|
+
hints=[upgrade_hint],
|
|
51
|
+
)
|
|
52
|
+
)
|
|
39
53
|
else:
|
|
40
54
|
error(msg, hint=hint)
|
|
41
55
|
return 1
|
|
@@ -45,7 +59,9 @@ def run_update(*, dry_run: bool = False, as_json: bool = False) -> int:
|
|
|
45
59
|
r = git_run(["pull", "--ff-only"], cwd=install_dir, check=False)
|
|
46
60
|
if r.returncode == 0 and r.stdout.strip() and r.stdout.strip() != "Already up to date.":
|
|
47
61
|
if as_json:
|
|
48
|
-
print_json(
|
|
62
|
+
print_json(
|
|
63
|
+
ok_envelope("update", updated=True, output=r.stdout.strip(), hints=[upgrade_hint])
|
|
64
|
+
)
|
|
49
65
|
return 0
|
|
50
66
|
for line in r.stdout.strip().splitlines():
|
|
51
67
|
info(line)
|
|
@@ -53,13 +69,23 @@ def run_update(*, dry_run: bool = False, as_json: bool = False) -> int:
|
|
|
53
69
|
if as_json:
|
|
54
70
|
print_json(
|
|
55
71
|
error_envelope(
|
|
56
|
-
"update",
|
|
72
|
+
"update",
|
|
73
|
+
error=r.stderr.strip() or t("error_updating"),
|
|
74
|
+
code="update_failed",
|
|
75
|
+
hint=upgrade_hint,
|
|
57
76
|
)
|
|
58
77
|
)
|
|
59
78
|
return 1
|
|
60
79
|
error(r.stderr.strip() or t("error_updating"))
|
|
61
80
|
return 1
|
|
62
81
|
elif as_json:
|
|
63
|
-
print_json(
|
|
82
|
+
print_json(
|
|
83
|
+
ok_envelope(
|
|
84
|
+
"update",
|
|
85
|
+
updated=False,
|
|
86
|
+
output=t("already_up_to_date"),
|
|
87
|
+
hints=[upgrade_hint],
|
|
88
|
+
)
|
|
89
|
+
)
|
|
64
90
|
return 0
|
|
65
91
|
return 0
|
|
@@ -9,7 +9,7 @@ globs: "**/*"
|
|
|
9
9
|
- Changed files: `gitwise diff` — never raw `git diff`
|
|
10
10
|
- Status + log: `gitwise summarize` — never raw `git status` or `git log`
|
|
11
11
|
- Branch switch: `gitwise worktree new <branch>` — never `git stash + checkout`
|
|
12
|
-
- Snapshot: `gitwise snapshot`
|
|
12
|
+
- Snapshot: `gitwise snapshot`; writes `.agents/git-snapshot.md` when `.agents/` exists, otherwise `.claude/git-snapshot.md`
|
|
13
13
|
|
|
14
14
|
## Shell note
|
|
15
15
|
|
|
@@ -10,7 +10,7 @@ developer_instructions = """
|
|
|
10
10
|
- Changed files: `gitwise diff` — never raw `git diff`
|
|
11
11
|
- Status + log: `gitwise summarize` — never raw `git status` or `git log`
|
|
12
12
|
- Branch switch: `gitwise worktree new <branch>` — never `git stash + checkout`
|
|
13
|
-
- Snapshot: `gitwise snapshot`
|
|
13
|
+
- Snapshot: `gitwise snapshot`; writes `.agents/git-snapshot.md` when `.agents/` exists, otherwise `.claude/git-snapshot.md`
|
|
14
14
|
|
|
15
15
|
## Shell note
|
|
16
16
|
|
|
@@ -8,7 +8,7 @@ description: Use gitwise CLI for git operations — gitwise diff, summarize, wor
|
|
|
8
8
|
- Changed files: `gitwise diff` — never raw `git diff`
|
|
9
9
|
- Status + log: `gitwise summarize` — never raw `git status` or `git log`
|
|
10
10
|
- Branch switch: `gitwise worktree new <branch>` — never `git stash + checkout`
|
|
11
|
-
- Snapshot: `gitwise snapshot`
|
|
11
|
+
- Snapshot: `gitwise snapshot`; writes `.agents/git-snapshot.md` when `.agents/` exists, otherwise `.claude/git-snapshot.md`
|
|
12
12
|
- Audit: `gitwise audit --quick` — before large commits
|
|
13
13
|
- Clean: `gitwise clean --branches` — remove stale branches
|
|
14
14
|
- Optimize: `gitwise optimize` — gc, pack-refs, commit-graph
|
|
@@ -10,7 +10,7 @@ alwaysApply: true
|
|
|
10
10
|
- Changed files: `gitwise diff` — never raw `git diff`
|
|
11
11
|
- Status + log: `gitwise summarize` — never raw `git status` or `git log`
|
|
12
12
|
- Branch switch: `gitwise worktree new <branch>` — never `git stash + checkout`
|
|
13
|
-
- Snapshot: `gitwise snapshot`
|
|
13
|
+
- Snapshot: `gitwise snapshot`; writes `.agents/git-snapshot.md` when `.agents/` exists, otherwise `.claude/git-snapshot.md`
|
|
14
14
|
- Audit: `gitwise audit --quick` — before large commits
|
|
15
15
|
- Clean: `gitwise clean --branches` — remove stale branches
|
|
16
16
|
- Optimize: `gitwise optimize` — gc, pack-refs, commit-graph
|
|
@@ -8,7 +8,7 @@ description: Use gitwise CLI for git operations — gitwise diff, summarize, wor
|
|
|
8
8
|
- Changed files: `gitwise diff` — never raw `git diff`
|
|
9
9
|
- Status + log: `gitwise summarize` — never raw `git status` or `git log`
|
|
10
10
|
- Branch switch: `gitwise worktree new <branch>` — never `git stash + checkout`
|
|
11
|
-
- Snapshot: `gitwise snapshot`
|
|
11
|
+
- Snapshot: `gitwise snapshot`; writes `.agents/git-snapshot.md` when `.agents/` exists, otherwise `.claude/git-snapshot.md`
|
|
12
12
|
- Audit: `gitwise audit --quick` — before large commits
|
|
13
13
|
- Clean: `gitwise clean --branches` — remove stale branches
|
|
14
14
|
- Optimize: `gitwise optimize` — gc, pack-refs, commit-graph
|
|
@@ -8,7 +8,7 @@ description: Use gitwise CLI for git operations — gitwise diff, summarize, wor
|
|
|
8
8
|
- Changed files: `gitwise diff` — never raw `git diff`
|
|
9
9
|
- Status + log: `gitwise summarize` — never raw `git status` or `git log`
|
|
10
10
|
- Branch switch: `gitwise worktree new <branch>` — never `git stash + checkout`
|
|
11
|
-
- Snapshot: `gitwise snapshot`
|
|
11
|
+
- Snapshot: `gitwise snapshot`; writes `.agents/git-snapshot.md` when `.agents/` exists, otherwise `.claude/git-snapshot.md`
|
|
12
12
|
- Audit: `gitwise audit --quick` — before large commits
|
|
13
13
|
- Clean: `gitwise clean --branches` — remove stale branches
|
|
14
14
|
- Optimize: `gitwise optimize` — gc, pack-refs, commit-graph
|
|
@@ -8,6 +8,8 @@ import pytest
|
|
|
8
8
|
from gitwise.clean import run_clean
|
|
9
9
|
from gitwise.git import stale_branches
|
|
10
10
|
|
|
11
|
+
from conftest import run_gitwise
|
|
12
|
+
|
|
11
13
|
|
|
12
14
|
def test_dry_run_does_not_delete(
|
|
13
15
|
monkeypatch: pytest.MonkeyPatch, tmp_git_repo_with_stale: Path
|
|
@@ -16,7 +18,7 @@ def test_dry_run_does_not_delete(
|
|
|
16
18
|
before = stale_branches(tmp_git_repo_with_stale)
|
|
17
19
|
assert len(before) == 3
|
|
18
20
|
|
|
19
|
-
rc = run_clean(branches=True,
|
|
21
|
+
rc = run_clean(branches=True, dry_run=True, yes=True, as_json=False)
|
|
20
22
|
assert rc == 0
|
|
21
23
|
|
|
22
24
|
assert stale_branches(tmp_git_repo_with_stale) == before
|
|
@@ -28,7 +30,7 @@ def test_dry_run_lists_stale_branches(
|
|
|
28
30
|
capsys: pytest.CaptureFixture,
|
|
29
31
|
) -> None:
|
|
30
32
|
monkeypatch.chdir(tmp_git_repo_with_stale)
|
|
31
|
-
run_clean(branches=True,
|
|
33
|
+
run_clean(branches=True, dry_run=True, yes=True, as_json=False)
|
|
32
34
|
captured = capsys.readouterr()
|
|
33
35
|
output = captured.out + captured.err
|
|
34
36
|
for i in range(1, 4):
|
|
@@ -41,7 +43,7 @@ def test_apply_deletes_only_stale(
|
|
|
41
43
|
monkeypatch.chdir(tmp_git_repo_with_stale)
|
|
42
44
|
assert len(stale_branches(tmp_git_repo_with_stale)) == 3
|
|
43
45
|
|
|
44
|
-
rc = run_clean(branches=True,
|
|
46
|
+
rc = run_clean(branches=True, dry_run=False, yes=True, as_json=False)
|
|
45
47
|
assert rc == 0
|
|
46
48
|
|
|
47
49
|
assert stale_branches(tmp_git_repo_with_stale) == []
|
|
@@ -157,7 +159,7 @@ def test_protected_branch_not_deleted(monkeypatch: pytest.MonkeyPatch, tmp_path:
|
|
|
157
159
|
|
|
158
160
|
assert "develop" in stale_branches(local)
|
|
159
161
|
|
|
160
|
-
rc = run_clean(branches=True,
|
|
162
|
+
rc = run_clean(branches=True, dry_run=False, yes=True, as_json=False)
|
|
161
163
|
assert rc == 0
|
|
162
164
|
|
|
163
165
|
r = subprocess.run(
|
|
@@ -174,7 +176,7 @@ def test_json_output_structure(
|
|
|
174
176
|
"""as_json=True outputs parseable JSON with deletable/skipped keys."""
|
|
175
177
|
monkeypatch.chdir(tmp_git_repo_with_stale)
|
|
176
178
|
|
|
177
|
-
rc = run_clean(branches=True,
|
|
179
|
+
rc = run_clean(branches=True, dry_run=True, yes=True, as_json=True)
|
|
178
180
|
assert rc == 0
|
|
179
181
|
|
|
180
182
|
captured = capsys.readouterr()
|
|
@@ -194,7 +196,7 @@ def test_clean_json_executes_delete(
|
|
|
194
196
|
"""Regression for Issue #45: --json without --dry-run must actually delete stale branches."""
|
|
195
197
|
monkeypatch.chdir(tmp_git_repo_with_stale)
|
|
196
198
|
|
|
197
|
-
rc = run_clean(branches=True,
|
|
199
|
+
rc = run_clean(branches=True, dry_run=False, yes=True, as_json=True)
|
|
198
200
|
assert rc == 0
|
|
199
201
|
|
|
200
202
|
data = json.loads(capsys.readouterr().out)
|
|
@@ -220,7 +222,7 @@ def test_clean_json_requires_yes(
|
|
|
220
222
|
) -> None:
|
|
221
223
|
"""Q1: clean --json without --yes must return yes_required envelope."""
|
|
222
224
|
monkeypatch.chdir(tmp_git_repo_with_stale)
|
|
223
|
-
rc = run_clean(branches=True,
|
|
225
|
+
rc = run_clean(branches=True, dry_run=False, yes=False, as_json=True)
|
|
224
226
|
assert rc == 2
|
|
225
227
|
data = json.loads(capsys.readouterr().out)
|
|
226
228
|
assert data["ok"] is False
|
|
@@ -246,7 +248,7 @@ def test_active_worktree_protected(
|
|
|
246
248
|
monkeypatch.chdir(repo)
|
|
247
249
|
|
|
248
250
|
try:
|
|
249
|
-
rc = run_clean(branches=True,
|
|
251
|
+
rc = run_clean(branches=True, dry_run=False, yes=True, as_json=False)
|
|
250
252
|
assert rc == 0
|
|
251
253
|
|
|
252
254
|
r = subprocess.run(
|
|
@@ -265,16 +267,13 @@ def test_active_worktree_protected(
|
|
|
265
267
|
)
|
|
266
268
|
|
|
267
269
|
|
|
268
|
-
def
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
270
|
+
def test_clean_refs_absent_from_public_contract(tmp_git_repo: Path) -> None:
|
|
271
|
+
help_result = run_gitwise("clean", "--help", "--json", cwd=tmp_git_repo)
|
|
272
|
+
assert help_result.returncode == 0
|
|
273
|
+
options = json.loads(help_result.stdout)["data"]["options"]
|
|
274
|
+
assert all(option["name"] != "refs" for option in options)
|
|
273
275
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
assert data["ok"] is False
|
|
279
|
-
assert data["command"] == "clean"
|
|
280
|
-
assert data["errors"][0]["code"] == "not_implemented"
|
|
276
|
+
schema_result = run_gitwise("schema", "clean", "--json", cwd=tmp_git_repo)
|
|
277
|
+
assert schema_result.returncode == 0
|
|
278
|
+
properties = json.loads(schema_result.stdout)["data"]["json_schema"]["properties"]
|
|
279
|
+
assert "refs" not in properties
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Tests for gitwise snapshot."""
|
|
2
2
|
|
|
3
|
+
import json
|
|
3
4
|
import time
|
|
4
5
|
|
|
5
6
|
from conftest import run_gitwise as _run
|
|
@@ -12,6 +13,18 @@ def test_snapshot_creates_file(tmp_git_repo):
|
|
|
12
13
|
assert snapshot.exists()
|
|
13
14
|
|
|
14
15
|
|
|
16
|
+
def test_snapshot_uses_agents_layout_when_present(tmp_git_repo):
|
|
17
|
+
(tmp_git_repo / ".agents").mkdir()
|
|
18
|
+
|
|
19
|
+
result = _run("snapshot", "--json", cwd=tmp_git_repo)
|
|
20
|
+
|
|
21
|
+
assert result.returncode == 0
|
|
22
|
+
data = json.loads(result.stdout)["data"]
|
|
23
|
+
assert data["path"].endswith(".agents/git-snapshot.md")
|
|
24
|
+
assert (tmp_git_repo / ".agents" / "git-snapshot.md").exists()
|
|
25
|
+
assert not (tmp_git_repo / ".claude" / "git-snapshot.md").exists()
|
|
26
|
+
|
|
27
|
+
|
|
15
28
|
def test_snapshot_has_generated_at(tmp_git_repo):
|
|
16
29
|
_run("snapshot", cwd=tmp_git_repo)
|
|
17
30
|
content = (tmp_git_repo / ".claude" / "git-snapshot.md").read_text()
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"""Tests for the deprecated gitwise update command."""
|
|
2
|
+
|
|
3
|
+
import json
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
import gitwise.update as update_module
|
|
7
|
+
import pytest
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def _set_install_dir(
|
|
11
|
+
monkeypatch: pytest.MonkeyPatch, tmp_path: Path, *, source_clone: bool
|
|
12
|
+
) -> Path:
|
|
13
|
+
package_dir = tmp_path / "gitwise"
|
|
14
|
+
package_dir.mkdir()
|
|
15
|
+
if source_clone:
|
|
16
|
+
(tmp_path / ".git").mkdir()
|
|
17
|
+
monkeypatch.setattr(update_module, "__file__", str(package_dir / "update.py"))
|
|
18
|
+
return tmp_path
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def _assert_upgrade_channels(hints: list[str]) -> None:
|
|
22
|
+
combined = " ".join(hints)
|
|
23
|
+
assert "brew upgrade gitwise" in combined
|
|
24
|
+
assert "uv tool upgrade gitwise-cli" in combined
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_update_non_clone_json_recommends_upgrade_channels(
|
|
28
|
+
monkeypatch: pytest.MonkeyPatch, tmp_path: Path, capsys: pytest.CaptureFixture
|
|
29
|
+
) -> None:
|
|
30
|
+
_set_install_dir(monkeypatch, tmp_path, source_clone=False)
|
|
31
|
+
|
|
32
|
+
rc = update_module.run_update(as_json=True)
|
|
33
|
+
|
|
34
|
+
assert rc == 1
|
|
35
|
+
payload = json.loads(capsys.readouterr().out)
|
|
36
|
+
assert payload["errors"][0]["code"] == "update_requires_git_clone"
|
|
37
|
+
_assert_upgrade_channels(payload["hints"])
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def test_update_clone_dry_run_json_preserves_behavior_and_recommends_channels(
|
|
41
|
+
monkeypatch: pytest.MonkeyPatch, tmp_path: Path, capsys: pytest.CaptureFixture
|
|
42
|
+
) -> None:
|
|
43
|
+
install_dir = _set_install_dir(monkeypatch, tmp_path, source_clone=True)
|
|
44
|
+
|
|
45
|
+
rc = update_module.run_update(dry_run=True, as_json=True)
|
|
46
|
+
|
|
47
|
+
assert rc == 0
|
|
48
|
+
payload = json.loads(capsys.readouterr().out)
|
|
49
|
+
assert payload["data"]["dry_run"] is True
|
|
50
|
+
assert payload["data"]["dir"] == str(install_dir)
|
|
51
|
+
_assert_upgrade_channels(payload["hints"])
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def test_update_clone_dry_run_human_warns_with_upgrade_channels(
|
|
55
|
+
monkeypatch: pytest.MonkeyPatch, tmp_path: Path, capsys: pytest.CaptureFixture
|
|
56
|
+
) -> None:
|
|
57
|
+
_set_install_dir(monkeypatch, tmp_path, source_clone=True)
|
|
58
|
+
|
|
59
|
+
rc = update_module.run_update(dry_run=True)
|
|
60
|
+
|
|
61
|
+
assert rc == 0
|
|
62
|
+
captured = capsys.readouterr()
|
|
63
|
+
output = captured.out + captured.err
|
|
64
|
+
assert "brew upgrade gitwise" in output
|
|
65
|
+
assert "uv tool upgrade gitwise-cli" in output
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gitwise_cli-0.35.0 → gitwise_cli-0.36.0}/gitwise/setup_agents/providers/continue_adapter.py
RENAMED
|
File without changes
|