Skip to content

ログ出力機能(verbose/debugモード)の追加 #51

@devgamesan

Description

@devgamesan

概要

現在の git-ssh-sync は基本的な進捗メッセージとエラーメッセージのみを出力しており、トラブルシューティッグ時に詳細な情報が不足しています。ログ出力機能(verbose/debugモード)を追加して、運用性とデバッグ効率を向上させます。

現状

あるもの:

  • 基本的な進捗メッセージ(プロジェクト名、ブランチ名、同期方向)
  • エラー発生時の詳細なエラーメッセージ
  • Rich による整形された出力

ないもの:

  • Gitコマンドの実行内容(git fetch, git push など)
  • SSH接続の詳細
  • 処理の進行状況の詳細
  • デバッグレベルの情報(実行コマンド、戻り値、stderr など)

コード内では verbose 引数が用意されていますが、CLIから制御する方法がありません。

提案する実装

1. ログレベルの導入

Python の logging モジュール + Rich の統合で、以下のログレベルを導入:

レベル 用途 出力内容の例
DEBUG 実行されたGit/SSHコマンド、戻り値、stderr Executing: git fetch origin
INFO デフォルト。処理の進捗、成功メッセージ Fetching from origin...
WARNING 回復可能な問題 Branch has diverged, manual merge required
ERROR 失敗、処理続行不可能 SSH connection failed

2. CLIオプションの追加

# 標準出力(INFOレベル)
git-ssh-sync pull myproject

# 詳細出力(DEBUGレベル)
git-ssh-sync pull myproject --verbose

# デバッグ出力(最も詳細)
git-ssh-sync pull myproject --debug

3. 実装構成

  • git_ssh_sync/logger.py を新規作成
  • Rich の Console と logging を統合
  • グローバルな logger インスタンスを提供
  • 既存の console.print() を適宜ログ出力に置き換え

利点

  1. トラブルシューティングの効率化
    SSH接続エラー、Git操作失敗時の原因特定が容易になります。

  2. doctor コマンドの強化
    診断情報の詳細化により、問題の早期発見が可能になります。

  3. 複雑な同期フローの可視化
    pull/push/checkout の各ステップでの進捗確認ができます。

  4. 運用上の可観測性向上
    ユーザーが何が起きているか理解しやすくなります。

関連ファイル

  • src/git_ssh_sync/cli.py
  • src/git_ssh_sync/git.py
  • src/git_ssh_sync/ssh.py
  • src/git_ssh_sync/sync.py
  • src/git_ssh_sync/doctor.py

優先度

中程度 - 既存機能で問題ありませんが、運用性向上のため早期導入が望ましいです。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions