- Notifications
You must be signed in to change notification settings - Fork0
mizchi/git-notes-gh-sync
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
GitHub Issues/PRs を git notes として同期する CLI ツール。
- Deno (v1.40以上)
- GitHub CLI (gh) (認証済み)
- Git リポジトリ
# リポジトリから直接インストールgit clone https://github.com/mizchi/git-notes-gh-sync.gitcd git-notes-gh-syncdeno install -Afg --name gng main.ts# インストール後はどこからでも使用可能gnghelp
# リポジトリをクローンgit clone https://github.com/mizchi/git-notes-gh-sync.gitcd git-notes-gh-sync# 直接実行deno run -A main.tshelp
# ヘルプを表示gnghelp# すべての PR と Issue を同期gng sync# 特定の PR を同期gng sync-pr --pr 123# 特定の Issue を特定のコミットに同期gng sync-issue --issue 456 --commit abc1234# 最近のコミットから関連する Issue を同期gng sync-recent --since HEAD~20# ドライラン(実際には書き込まない)gng sync --dry-run
オプション | 説明 | 使用可能なコマンド |
---|---|---|
--dry-run | 実際の書き込みを行わずに実行内容を表示 | すべて |
--pr <number> | PR 番号 | sync-pr |
--issue <number> | Issue 番号 | sync-issue |
--commit <sha> | コミット SHA | sync-issue |
--since <ref> | 同期開始位置の Git 参照(デフォルト: HEAD~10) | sync-recent |
--help, -h | ヘルプを表示 | すべて |
# すべての notes をリスト(形式: <note-object> <commit>)git notes --ref=github/issues listgit notes --ref=github/pulls list# 特定のコミットの notes を確認git notes --ref=github/issues show HEADgit notes --ref=github/pulls show HEAD# JSON を整形して表示git notes --ref=github/issues show HEAD| jq'.'
# コミットログと一緒に確認git log --oneline -5# 出力例: bfbc3a5 Test issue references# そのコミットの Issue 情報を確認git notes --ref=github/issues show bfbc3a5
同梱の表示スクリプトを使うと、notes を見やすく表示できます:
# 基本的な表示deno run -A examples/example-usage.ts# 詳細表示(最新5コミットの詳細情報)deno run -A examples/example-usage.ts --detail
このツールは、GitHub の Issues や Pull Requests の情報を git notes として保存し、コミットに紐づけて管理します。
- コミットに GitHub のコンテキストを追加
- オフラインでも Issue/PR の情報を確認可能
- リポジトリ内で完結する情報管理
refs/notes/github/issues
- Issue 情報refs/notes/github/pulls
- Pull Request 情報
Issue/PR の以下の情報が JSON 形式で保存されます:
- 番号、タイトル、本文
- 状態(open/closed)
- 作成者、作成日時、更新日時
- URL
- PR の場合は追加でマージ情報
Issue 参照の自動検出
- コミットメッセージから
#123
形式の参照を検出 fixes #123
,closes #123
,resolves #123
などのキーワードも認識
- コミットメッセージから
PR の同期
- PR に含まれるすべてのコミットに PR 情報を付与
- マージコミットにも情報を追加
データの永続化
- git notes として保存されるため、リポジトリと一緒に管理
- 将来的には push/fetch での共有も可能
git-notes-gh-sync/├── main.ts # CLI エントリーポイント(parseArgs 使用)├── lib/│ ├── git.ts # Git 操作のラッパー│ ├── github.ts # GitHub API クライアント(gh CLI 使用)│ └── sync.ts # 同期ロジック├── examples/│ └── example-usage.ts # notes 表示のサンプル(dax 使用)├── deno.json # Deno 設定ファイル└── README.md # このファイル
# タスクランナー経由での実行deno task sync [command] [options]# 開発モード(ファイル変更を監視)deno task dev# コードフォーマットdeno task fmt# リントdeno task lint# テストdeno tasktest
CLI (main.ts)
node:util
のparseArgs
を使用したコマンドライン解析- コマンドベースの構造
Git 操作 (lib/git.ts)
- git notes の CRUD 操作
- コミット履歴の取得
GitHub 連携 (lib/github.ts)
- gh CLI を使用した API アクセス
- Issue/PR データの取得
同期エンジン (lib/sync.ts)
- Issue 参照パターンの検出
- notes への変換と保存
- JSR (JavaScript Registry) へのリリース
- git notes の push/fetch 対応
- レビューコメントの同期
- Issue/PR のコメント同期
- 双方向同期(git notes から GitHub への反映)
- 設定ファイルのサポート
MIT
About
Experimental repository for syncing GitHub Issues/PRs with git notes
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published
Contributors2
Uh oh!
There was an error while loading.Please reload this page.