How octadira/obsidian-folder-git works
Folder Git is an Obsidian plugin for managing independent Git repositories per vault folder. Users add or clone a repository, inspect its status, stage and commit changes, then fetch, pull, push, or sync; they can also browse history and diffs, edit ignore rules, and configure automatic commits. The registry is the central Git-operation and per-repository lifecycle layer. The README documents capabilities whose implementation details are not present in the sampled excerpts, so uncertain internal wiring is omitted.
Main entry points: repoRegistry.ts Repository registry · main.ts Plugin entry · settingsTab.ts Plugin settings · addRepoModal.ts Add repository
Components 18
Plugin Control
- Plugin entry
src/main.ts - Plugin settings
src/settingsTab.ts - Add repository
src/modals/addRepoModal.ts
Repository Operations
- Repository registry
src/repoRegistry.ts - Node Git access
src/nodeApi.ts
Git Interfaces
- Source control
src/views/sourceControlView.ts - History view
src/views/historyView.ts - Diff viewer
src/views/diffModal.ts - Ignore editor
src/modals/gitignoreModal.ts
Hosting Integration
- Hosting provider factory
src/hosting/hostingService.ts - GitHub API client
src/hosting/githubService.ts - Forgejo API client
src/hosting/forgejoService.ts
Other components
- Vault user
- Obsidian
- Git executable
- GitHub API
- Forgejo API
- Folder repositories
Connections 26
- Vault user → Obsidian: uses plugin
- Obsidian → Plugin entry: loads
- Plugin entry → Repository registry: initializes and refreshes
- Plugin entry → Source control: opens and refreshes
- Plugin entry → Add repository: opens
- Vault user → Source control: uses
- Vault user → Add repository: configures repository
- Vault user → Plugin settings: configures
- Add repository → Repository registry: adds or clones
- Add repository → Hosting provider factory: requests provider
- Plugin settings → GitHub API client: validates token
- Plugin settings → Forgejo API client: validates token
- Hosting provider factory → GitHub API client: creates client
- Hosting provider factory → Forgejo API client: creates client
- GitHub API client → GitHub API: sends API requests
- Forgejo API client → Forgejo API: sends API requests
- Repository registry → Node Git access: uses filesystem access
- Repository registry → Git executable: runs Git operations
- Repository registry → Folder repositories: manages status and history
- Folder repositories → Repository registry: returns Git results
- Source control → Repository registry: requests Git actions
- History view → Repository registry: requests commit history and diffs
- History view → Diff viewer: opens commit diff
- Source control → Diff viewer: opens file diff
- Ignore editor → Repository registry: reads and writes ignore rules
- Plugin entry → Plugin settings: registers settings