aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-13 21:09:04 +0000
committertv <tv@krebsco.de>2026-11-13 22:14:38 +0100
commit0273a55087e2614323d6ebd145b08c56b370a483 (patch)
tree14c5e7ea01a862d2d359319236c54d9760ea1ddd /README.md
parentc3ca6d4b991ea24192ac4ddec156d0530b462c3e (diff)
populate: check the hooks and submodules of Git work trees
git submodule update uses the .git of a submodule as it finds it in the work tree: a repository of its own, with configuration that runs commands, or a file naming a repository elsewhere. So git_problems also requires each .git below the work tree to be a file naming a repository in .git/modules. And it refuses hooks in .git/hooks, which populate's Git doesn't run, but Nix's does, writing the lock file of a flake in a git source. It's a shell function now, taking the work tree at run time, so drawing inputs can use it too. git-submodule plants a submodule's .git in the work tree: a repository of its own whose configuration names a filter, and a file naming a repository elsewhere. The fixture withsub has gitsrc as its submodule sub.
Diffstat (limited to 'README.md')
-rw-r--r--README.md6
1 files changed, 4 insertions, 2 deletions
diff --git a/README.md b/README.md
index 3bef68c..7344135 100644
--- a/README.md
+++ b/README.md
@@ -316,8 +316,10 @@ everything else. It doesn't change or remove anything outside:
`git` source as well.
* A `git` source only uses a work tree whose `.git` directory contains no
- symlinks, no `commondir` file and no linked work trees, and only the
- configuration that `git clone` and populate write. Otherwise Git's
+ symlinks, no `commondir` file, no linked work trees, and no hooks, and
+ only the configuration that `git clone` and populate write, and in which
+ each `.git` of a submodule is a file naming a repository in
+ `.git/modules`. Otherwise Git's
commands could change what's elsewhere, or run commands, so populating
fails, telling what's wrong, unless the source's `reclone` is set. Git
runs no hooks.