gfold
gfold は複数の Git リポジトリを管理するのに役立つ CLI ツールです。
クラシック表示モードをデフォルトで使用し、毎回フラグを設定する手間を避けたい場合は、設定ファイルで設定できます(Usage セクション参照)。
お知らせ (2025年2月)
すべてのリリースは、2025.2.1 から始まる CalVer バージョニングスキームに従います。
この変更は、最初のリリースからバージョン 4.6.0 まで使用されていた セマンティックバージョニング スキームと前後互換性があります。
バージョニングスキームの変更に関して、エンドユーザーによる特別な操作は必要ありません。
このお知らせは最終的にこの README から削除され、CHANGELOG に移されます。
説明
このアプリは、一つまたは複数のディレクトリ内にある複数の Git リポジトリに関する関連情報を表示します。 ファイルシステムから読み取るのみで、書き込みは一切行いません。 このツールは用途が限定されているように見えるかもしれませんが、それは設計上の意図です。
デフォルトでは、gfold はカレント作業ディレクトリからのトラバーサルによってすべての Git リポジトリを検出します。
別のディレクトリを対象にしたい場合は、そのパス(相対または絶対)を最初の引数として渡すか、設定ファイルでデフォルトパスを変更できます。
トラバーサル後、gfold は rayon を活用して検出されたすべての Git リポジトリの並行かつ読み取り専用の解析を行います。
解析は git2-rs ライブラリを利用して実施されます。
使い方
このアプリケーションのすべてのオプションを見るには、-h/--help フラグを指定してください。
# Operate in the current working directory or in the location provided by a config file, if one exists.
gfoldOperate in the parent directory.
gfold ..Operate in the home directory (first method).
gfold $HOMEOperate in the home directory (second method).
gfold ~/Operate with an absolute path.
gfold /this/is/an/absolute/pathOperate with a relative path.
gfold ../../this/is/a/relative/pathOperate with three paths.
gfold ~/src ~/projects ~/code
設定ファイル
同じ引数を頻繁に指定する場合は、設定ファイルを作成して使用することができます。
gfold はデフォルトで設定ファイルを持っておらず、設定ファイルの使用は完全に任意です。
どのように機能するのか?
実行時に gfold は以下のパス(順番に)で設定ファイルを探します:
$XDG_CONFIG_HOME/gfold.toml$XDG_CONFIG_HOME/gfold/config.toml$HOME/.config/gfold.toml
$XDG_CONFIG_HOME は文字通り XDG_CONFIG_HOME 環境変数を指しますが、未設定の場合は適切なOS固有のパスにフォールバックします(詳細は user_dirs を参照)。設定ファイルが見つかると、gfold はそれを読み込み、指定されたオプションを使用します。
設定ファイルの作成には、--dry-run フラグを使って有効なTOMLを出力できます。
以下はmacOS、Linuxおよび類似プラットフォームでの設定ファイル作成の例です:
gfold -d classic -c never ~/ --dry-run > $HOME/.config/gfold.toml以下は、生成された設定ファイルの内容です:
paths = ['/home/neloth']
display_mode = 'Classic'
color_mode = 'Never'たとえば、設定ファイルを作成したが、まったく異なる設定で gfold を実行したい場合、かつ設定ファイルからオプションを誤って継承しないようにしたい場合があります。
そのような場合は、-i フラグを使用して設定ファイルを無視することができます。
gfold -i
同じフラグを使用して、設定ファイルをデフォルトに戻すことができます。gfold -i > $HOME/.config/gfold.toml
さらに、既存の設定ファイルを無視し、特定のオプションを設定し、指定されていないオプションにはすべてデフォルト値を使用することができます。
以下は、クラシックディスプレイモードを使用し、他のすべての設定をデフォルト値で上書きしたい場合の例です:
gfold -i -d classic > $HOME/.config/gfold.toml設定ファイルをバックアップし、その履歴を git で追跡できます。
macOS、Linux、およびほとんどのシステムでは、ファイルを git リポジトリにリンクできます。
ln -s /gfold.toml $HOME/.config/gfold.toml
今、リポジトリ内の設定ファイルを更新し、環境設定ワークフローの一部としてリンクを含めることができます。インストール
Homebrew(macOSおよびLinux)
Homebrewを使用して、コアフォーミュラからgfoldをインストールできます。
ただし、macOSでbrewを使ってcoreutilsがインストールされている場合、名前の衝突が発生することがあります。
詳細および回避策については、トラブルシューティングセクションを参照してください。
brew install gfoldArch Linux
extraリポジトリからgfoldをインストールするには、pacmanを使用できます。
pacman -S gfoldNix と NixOS
gfold は nixpkgs からインストールできます:
nix-env --install gfoldもしflakesを使用している場合は、nixコマンドを直接使ってインストールできます。
nix profile install "nixpkgs#gfold"Cargo
ほぼすべてのプラットフォームでcrateをインストールするために、cargoを使用できます。
cargo install gfoldCargo.lockを使用する場合は、--lockedフラグを使用してください。
cargo install --locked gfoldクレートを最新の状態に保つのは、cargo-update を使えば簡単です。
cargo install cargo-update
cargo install-update -a
バイナリのダウンロード
上記のインストール方法を使用したくない場合やリポジトリをクローンしたくない場合は、リリースページからバイナリをダウンロードできます。 その方法の例については、マニュアルインストールガイドを参照してください。
ソースからのビルド
ソースからビルドする方法の例については、マニュアルインストールガイドを参照してください。
廃止予定: Homebrew Tap(macOSのみ)
nickgerace/homebrew-nickgerace にある tapは廃止されました。 代わりに前述の Homebrew のコアパッケージを使用してください。
推奨されるインストール方法がリストにない?
ぜひイシューを投稿してください!
互換性
gfold は _すべての_ tier one Rust 🦀 ターゲットで動作することを意図しています。
対応していないプラットフォームがある場合は、イシューを投稿してください。
トラブルシューティングと既知の問題
予期しない動作やバグに遭遇し、詳細を確認したい場合は、詳細出力を増やして実行してください。
gfold -vvv
問題が解決しない場合は、issueを報告してください。
問題解決のために、実行時の関連ログを_機微な部分を伏せて_添付してください。macOSでのCoreutilsの衝突
macOSにbrewでGNU Coreutilsのfoldがインストールされると、名前はgfoldになります。
この衝突はシェルエイリアス、シェル関数、またはPATHの変更で回避可能です。
以下はgfoldからoを外した例です:
alias gfld=$HOME/.cargo/bin/gfoldコミュニティ
詳細情報およびユーザーや「コミュニティ」全体への感謝については、COMMUNITY THANKS ファイルを参照してください。
- NixOS、Arch Linuxなどのパッケージ
gfoldを取り上げた記事「One Hundred Rust Binaries」gfold用のneovimプラグイン [nvim-gfold.lua _(Reddit発表投稿)_]
