Dan77 downloadsReplace git submodules with plain nested git repos, ignored via .gitignore and tracked via folder-note frontmatter.
An Obsidian plugin that replaces git submodules with
plain nested git repos - ignored via .gitignore and tracked with a simple
YAML frontmatter convention on folder notes, instead of .gitmodules.
Submodules are brittle, especially on mobile and when using Obsidian with iOS through terminal emulators such as iSH. This plugin avoids them entirely: nested repos are just ordinary git repositories living inside your vault, ignored by the vault's own repo, and declared in your notes so they're easy to find, clone, and sync.
A nested repo lives in a folder named <repo-name>-git-repo.
The vault's .gitignore gets a *-git-repo/ line so nested repos are
never tracked by the vault's own git history.
A "folder note" (a markdown file with the same name as its parent
folder - matching the folder-notes
plugin's insideFolder convention) declares the repos that live under
it via a git_repos frontmatter key:
---
git_repos:
- https://github.com/danrfletcher/obsidian-inline-agents.git
- https://github.com/danrfletcher/obsidian-not-submodules.git
---
git init for the vault itself, if
it isn't a git repository yet.*-git-repo/ to the
vault's .gitignore (creating it if needed).-git-repo folder
(with an autocomplete path picker) and it declares it in the right
folder note automatically, creating the folder note - and, if the repo
sits at the vault root, a dedicated parent folder for it - when needed.This plugin is desktop-only (isDesktopOnly: true), since it shells out
to your local git.
Manual installation: copy main.js, manifest.json, and styles.css
from a release into
<your-vault>/.obsidian/plugins/not-submodules/, then enable it in
Obsidian's Community plugins settings.
npm install
npm run dev # watch build
npm run build # type-check + production build
MIT