Please describe the problem.
I think I have done everything nice and clean to sync things up etc... but now assistant just does not care to add/commit new files.
excerpt from full daemon.log:
fd:31: hPutBuf: resource vanished (Broken pipe)
fd:31: hPutBuf: resource vanished (Broken pipe)
(recording state in git...)
On branch master
Your branch is up to date with 'typhon/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
Videos/2026/01/2026.01.31-13.19.02.455--2026.01.31-13.19.18.475.mkv
Videos/2026/01/2026.01.31-13.19.02.455--2026.01.31-13.19.18.475.mkv.duct_info.json
Videos/2026/01/2026.01.31-13.19.02.455--2026.01.31-13.19.18.475.mkv.duct_usage.json
Videos/2026/01/2026.01.31-13.19.02.455--2026.01.31-13.19.18.475.mkv.log
events-micropython/2026-01-31T12:20:42-05:00.csv
logs/2026-01-14T09:33-05:00.log
logs/timesync-stimuli/2026.01.31-13.19.05.339--.log
nothing added to commit but untracked files present (use "git add" to track)
Everything up-to-date
Everything up-to-date
What version of git-annex are you using? On what operating system?
well -- ideally that daemon.log should inform us that and potentially other details to help troubleshoot it. I think (since there could be multiple):
reprostim@reproiner:/data/reprostim$ ps auxw | grep assist
reprost+ 1989627 0.0 0.0 9892 3896 ? Ss 13:12 0:00 /usr/bin/git annex assistant --foreground
reprost+ 1989628 2.8 0.8 1074363924 270904 ? Ssl 13:12 0:19 /usr/lib/git-annex.linux/exe/git-annex --library-path /usr/lib/git-annex.linux//lib/x86_64-linux-gnu: /usr/lib/git-annex.linux/shimmed/git-annex/git-annex assistant --foreground
reprostim@reproiner:/data/reprostim$ /usr/lib/git-annex.linux/git-annex version | head
git-annex version: 10.20251114-1~ndall+1
This is due to the assistant not supporting submodules. Nothing has ever been done to make it support them.
When
git check-ignore --stdinis passed a path in a submodule, it exits. We can see this happen near the top of the log:The subseqent "resource vanished (Broken pipe)" are each time git-annex tries to talk to git check-ignore.
Indeed, looking at the source code to check-ignore, if it's passed a path inside a submodule, it errors out, and so won't be listening to stdin for any more paths:
And I was able to reproduce this by having a submodule with a file in it, and starting the assistant.
In some cases, the assistant still added files despite check-ignore having crashed. (It will even add gitignored files when check-ignore has crashed.) In other cases not. The problem probably extends beyond check-ignore to also staging files. Eg, "git add submodule/foo bar" will error out on the file in the submodule and not ever get to the point of adding the second file.
Fixing this would need an inexpensive way to query git about whether a file is in a submodule. Passing the files that the assistant gathers through
git ls-files --modified --othersmight be the only way to do that.Using that at all efficiently would need some other changes, because it needs to come before the ignore check, which it currently does for each file event. The ignore check would need to be moved to the point where a set of files has been gathered, so ls-files can be run once on the set of files.