Commit graph

12745 commits

Author SHA1 Message Date
ewen
2cb359b672 Added a comment: Cross link to importfeed parsing 2025-09-28 22:49:31 +00:00
ewen
3f6940ab37 Added a comment: Feed seems to now be parsed as UTF-8 characters, not binary mode 2025-09-28 22:42:32 +00:00
ewen
b0ae77a7dd Added a comment: importfeed: utf-8 XML is (now?) parsed into 8-bit characters 2025-09-28 22:24:23 +00:00
ewen
4b84dd3a53 Added a comment: Example still working feed 2025-09-28 22:05:57 +00:00
ewen
3fd99653f4 Added a comment: Debug output 2025-09-28 21:58:18 +00:00
ewen
c7db175180 Added a comment: Previous working build was 20250828 2025-09-28 21:35:08 +00:00
ewen
8ecae11f7c importfeed: Enum.toEnum{Word8}: tag (8217) is outside of bounds (0,255) 2025-09-28 21:32:35 +00:00
yarikoptic
0439c3aae3 missing build dep for debian? 2025-09-27 12:19:14 +00:00
caleb@2b0d6f0eabf955cc8fd04c634b09f0ca4aad9233
699c75f637 2025-09-25 23:04:55 +00:00
Joey Hess
23509bad54
fixed 2025-09-24 12:03:18 -04:00
Joey Hess
2f910640b1
Merge branch 'master' of ssh://git-annex.branchable.com 2025-09-23 12:54:33 -04:00
Joey Hess
ff65cd6954
invalidate recorded content identifier tree when export changes
Fix bug that made changes to a special remote sometimes be missed when
importing a tree from it. The diff import would miss when a change was
exported, then manually undone on the special remote (eg deleting a newly
exported file). A full import is needed to catch such changes.

After upgrading, any such missed changes will be included in the next
tree imported from a special remote. This happens because the previously
recorded content identifier tree does not have export information included,
so it is treated as invalid, and a full import is done.

Fixes reversion introduced in version 10.20230626, commit
40017089f2

Unfortunately, this does mean that after each export, the next import will
be a full import. Which can take significantly longer than the diff import
does, when there are a lot of files in the tree.

It would be better if exporting also update the content identifier tree.
However, I don't know if that can be done inexpensively. It would be future
optimisation work, in any case.

(That could only be done for an export that is run in the same
repository as the import. When an export is run in a different repository,
the export.log gets updated, and that propagates to the repository where
import is later run. At that point, a full import is done.)

Sponsored-by: Luke T. Shumaker
2025-09-23 12:52:55 -04:00
yarikoptic
c552ea8108 2025-09-23 14:26:07 +00:00
yarikoptic
1c38869e32 Windows still FTBFS 2025-09-23 14:24:30 +00:00
Joey Hess
478f42d3f3
thought 2025-09-22 23:57:30 -04:00
Joey Hess
3d1c871b8d
worse 2025-09-22 23:48:46 -04:00
Joey Hess
2323579068
promote forum post to bug, analysis 2025-09-22 19:30:23 -04:00
Joey Hess
16d7432a2f
prevent deadlock when reconcileStaged runs restagePointerFiles
Fix hang that could occur when using git-annex adjust on a branch with a
number of files greater than annex.queuesize. Or potentially other
commands.

When reconcileStaged is running, the database is being opened. But
restagePointerFiles closes the database, and later writes to it. So it will
deadlock if called by reconcileStaged.

The deadlock occurred when the git queue happened to be full, causing
adding a call to restagePointerFiles to it to flush the queue and
restagePointerFiles to run at the wrong time.

Fixed by making reconcileStaged, when it populates or depopulates a pointer
file, arrange for restagePointerFiles to be run as a cleanup action, rather
than from the git queue.

But, what if restagePointerFiles is already in the git queue before
reconcileStaged is run? If it adds anything else to the git queue, causing
the queue to flush, it would still deadlock. To avoid this hypothetical
situation, added a Annex.inreconcilestaged, and made restagePointerFiles
check it and not do anything.

Note that, I did consider the simpler approach of only running
restagePointerFiles as a cleanup action, rather than from the git queue.
But see commit 6a3bd283b8 for why it was made
to use the queue in the first place. I wanted to avoid tying this bug fix
to a behavior change.

Sponsored-by: mycroft
2025-09-22 14:56:50 -04:00
Joey Hess
ada2664b9c
update 2025-09-22 12:07:16 -04:00
Joey Hess
75c7800424
comment 2025-09-22 11:19:13 -04:00
Joey Hess
d99380be85
comment 2025-09-22 11:15:32 -04:00
Joey Hess
dfbf76e2ca
enableremote: Disallow using type= to attempt to change the type of an existing remote
Changing the type out from under an existing special remote exposes the
existing config to something that may interpret it wildly differently. As
seen in the bug report, this can even result in behavior that makes
git-annex say it's buggy. So prevent the user from doing this. --sameas is
the better way.

Sponsored-by: Kevin Mueller
2025-09-22 10:54:16 -04:00
Joey Hess
e1c6a48f96
comment 2025-09-22 10:27:28 -04:00
Joey Hess
b397e71341
Add git-remote-p2p-annex and git-remote-tor-annex to standalone builds 2025-09-22 10:20:36 -04:00
matrss
94163be1d7 2025-09-20 17:54:22 +00:00
Joey Hess
60985889a9
fix windows build 2025-09-18 11:59:22 -04:00
Joey Hess
d8042850e6
response 2025-09-18 11:54:51 -04:00
yarikoptic
19c8fef45e FTBFS on Windows 2025-09-16 20:48:22 +00:00
yarikoptic
101c054835 Added a comment 2025-09-16 19:34:27 +00:00
yarikoptic
cf024862c2 Added a comment 2025-09-16 19:33:40 +00:00
Joey Hess
378541cc78
fixed 2025-09-16 12:47:21 -04:00
Joey Hess
6f954bfe76
close 2025-09-16 11:00:30 -04:00
Joey Hess
b129c95145
comment 2025-09-16 10:44:04 -04:00
yarikoptic
3b70bd683a Added a comment 2025-09-16 00:40:22 +00:00
Joey Hess
3e9807bc03
work around file-io not setting locale encoding when opening a Handle
Works around this bug https://github.com/haskell/file-io/issues/45

The fix is in Utility.FileIO.CloseOnExec because all use of file-io is
already wrapped through that module. Although perhaps that ought to be
refactored at this point.

I'd hope that file-io will eventually fix this bug, and also provide
CloseOnExec variants of its functions. That would allow depending on the
fixed version, and removing this ugly code.

Note that, functions like readFile that don't care about the encoding
due to reading/writing a ByteString were kept optimally fast by not
setting the encoding. This avoids an IORef read and write per open.

Sponsored-by: Graham Spencer
2025-09-15 19:25:03 -04:00
Joey Hess
0e7d469f89
bug 2025-09-15 18:50:42 -04:00
Joey Hess
e85ca915fb
comment 2025-09-15 16:13:25 -04:00
Joey Hess
6ef3cc834c
update 2025-09-15 14:27:45 -04:00
Joey Hess
7222941aa5
comment 2025-09-15 14:25:08 -04:00
Joey Hess
11e7211d7b
drop problem end characters from filename operating on String not RawFilePath
Fix bug that could cause an invalid utf-8 sequence to be used in a
temporary filename when the input filename was valid utf-8.

Sponsored-by: k0ld
2025-09-15 13:42:50 -04:00
yarikoptic
707d4e5fac Added a comment 2025-09-15 17:11:51 +00:00
Joey Hess
a9bf5cfcf3
comment 2025-09-15 12:15:51 -04:00
Joey Hess
d46c445e24
reopen 2025-09-15 12:07:29 -04:00
yarikoptic
3209cf25e0 Added a comment 2025-09-11 15:46:53 +00:00
yarikoptic
379b380507 Added a comment 2025-09-11 12:30:50 +00:00
git-annex.branchable.com-2746523870@d0bf050902d9409ff6e93b060e84e482d7e91e7f
84926d1659 2025-09-11 12:25:06 +00:00
git-annex.branchable.com-2746523870@d0bf050902d9409ff6e93b060e84e482d7e91e7f
dd43d49d1e 2025-09-11 12:23:36 +00:00
Joey Hess
38786a4e5e
noCreateProcessWhile to fix close-on-exec races
Sponsored-by: the NIH-funded NICEMAN (ReproNim TR&D3) project
2025-09-10 14:29:15 -04:00
Joey Hess
4fd71c125e
Improve performance when used with a local git remote that has a large working tree
git write-tree was being run once per file git-annex acts on when eg,
getting files, which is slow when the remote repository has a large
tree.

onLocal calls quiesce after each action, and quiesce closes the keys db
since [[!commit ba7ecbc6a9c]]. Which has a relevant comment about
performance. I have not addressed that, the keys db still gets closed and
reopened after each file.

Turns out that, since git write-tree was run by each call to
reconcileStaged, the .git/annex/keysdb.cache value was never the
same as the git index's inode. Because git write-tree updates the index's
mtime even when no changes have been made.

And so, when the database got closed and reopened, reconcileStaged would
see a changed index, and run git write-tree again. Over and over.

I considered writing the index's new inodecache after write-tree to the
keysdb.cache, but that would be vulnerable to a race, if the index was
changed just after write-tree.

The fix was to stop using keysb.cache at all. When the database is closed
and later reopened by the same process, avoid re-doing reconcileStaged.

Now that .git/annex/keysdb.cache is no longer used. It could be removed,
but the time overhead of removing it would be more than the space overhead
of keeping it. Defferred removal to the v11 upgrade.

Sponsored-by: unqueued
2025-09-10 12:08:11 -04:00
Joey Hess
16c54d458a
Merge branch 'master' of ssh://git-annex.branchable.com 2025-09-10 10:22:10 -04:00