Commit graph

44167 commits

Author SHA1 Message Date
nobodyinperson
bdcc2fc93e removed 2023-12-27 07:51:54 +00:00
nobodyinperson
90d967ce05 removed 2023-12-27 07:51:34 +00:00
nobodyinperson
ba85d3e165 Added a comment: Try annex.queuesize and --not --in 2023-12-27 07:51:00 +00:00
nobodyinperson
59b62e13f9 Added a comment: Try anex.queuesize and --not --in 2023-12-27 07:50:49 +00:00
nobodyinperson
10237a7c67 Added a comment: Try anex.queuesize and --not --in 2023-12-27 07:50:38 +00:00
psxvoid
a9a96d3a44 Added a comment: The issue with slow connection and huge repo - no batches 2023-12-27 06:08:59 +00:00
Joey Hess
325b3d5c9c
avoid build warnings 2023-12-26 19:39:01 -04:00
Joey Hess
8a3beabf35
use RawFilePath for opening sqlite databases
Fix a crash opening sqlite databases when run in a non-unicode locale,
with a remote that uses a non-unicode filepath. In that situation
converting to Text fails.

The fix needs git-annex to be built with persistent-sqlite 2.13.3.
Building against older versions still works, but that version is used when
building with stack.

Database.RawFilePath is a lot of code copied from persistent-sqlite and
lightly modified, since only 1 function in persistent-sqlite was made to
support RawFilePath. This is a bit of a pain, and I hope that
persistent-sqlite will eventually switch to using OsPath, allowing this
module to be removed from git-annex.

Sponsored-by: k0ld on Patreon
2023-12-26 18:31:52 -04:00
Joey Hess
6d789c9c81
sync, push: Avoid trying to send individual files to special remotes configured with importtree=yes exporttree=no
That will always fail. It already skipped doing this when exporttree=yes.
2023-12-26 15:56:58 -04:00
Joey Hess
766dfc794a
Merge branch 'master' of ssh://git-annex.branchable.com 2023-12-26 15:41:03 -04:00
Joey Hess
aec7bed1aa
prepping for release 2023-12-26 15:40:55 -04:00
Joey Hess
92f16d2316
update to lts-22.3 2023-12-26 12:56:59 -04:00
Atemu
f58d629b95 Added a comment 2023-12-25 13:37:58 +00:00
Atemu
2fe31d81d3 Added a comment 2023-12-25 13:03:50 +00:00
Atemu
98cfd88eaa Added a comment 2023-12-25 12:21:58 +00:00
Joey Hess
3b888369d3
comment 2023-12-20 15:56:36 -04:00
Joey Hess
d7ca716759
response 2023-12-20 13:12:56 -04:00
Joey Hess
da5726e790
Merge branch 'master' of ssh://git-annex.branchable.com 2023-12-20 12:52:46 -04:00
jkniiv
6c0259018a close bug as notabug due to user error 2023-12-19 23:12:21 +00:00
jkniiv
191dde2857 Added a comment: my report was actually a User Failure on my part 2023-12-19 23:02:16 +00:00
unqueued
09acfef0b6 Added a comment 2023-12-19 18:50:08 +00:00
Joey Hess
c64db46b7f
refactor 2023-12-18 21:35:00 -04:00
lemondata
19edfc69a7 2023-12-19 00:17:00 +00:00
Joey Hess
9a67ed0f10
importtree: support preferred content expressions needing keys
When importing from a special remote, support preferred content expressions
that use terms that match on keys (eg "present", "copies=1"). Such terms
are ignored when importing, since the key is not known yet.

When "standard" or "groupwanted" is used, the terms in those
expressions also get pruned accordingly.

This does allow setting preferred content to "not (copies=1)" to make a
special remote into a "source" type of repository. Importing from it will
import all files. Then exporting to it will drop all files from it.

In the case of setting preferred content to "present", it's pruned on
import, so everything gets imported from it. Then on export, it's applied,
and everything in it is left on it, and no new content is exported to it.

Since the old behavior on these preferred content expressions was for
importtree to error out, there's no backwards compatability to worry about.
Except that sync/pull/etc will now import where before it errored out.
2023-12-18 16:27:59 -04:00
Joey Hess
0e161a7404
comment 2023-12-18 13:56:08 -04:00
Joey Hess
93e0810ad5
comment 2023-12-18 13:49:53 -04:00
Joey Hess
f79685f05e
fix a typo 2023-12-18 13:40:23 -04:00
Joey Hess
0a9c5724c1
Merge branch 'master' of ssh://git-annex.branchable.com 2023-12-18 12:37:57 -04:00
Atemu
4dbbc45b4d Added a comment 2023-12-18 12:08:08 +00:00
nobodyinperson
526545bf48 Added a comment: numcopies is no the target 2023-12-17 19:04:41 +00:00
Atemu
43262855e2 2023-12-17 16:28:19 +00:00
oadams
7c108335eb Added a comment 2023-12-16 21:37:22 +00:00
Joey Hess
e777ad9e87
Merge branch 'master' of ssh://git-annex.branchable.com 2023-12-16 17:07:11 -04:00
aaa
b09c85bf1a Added a comment: Key permissions 2023-12-12 22:29:24 +00:00
jkniiv
986b9caa80 Added a comment 2023-12-12 19:25:17 +00:00
Joey Hess
9f17383c00
Merge branch 'master' of ssh://git-annex.branchable.com 2023-12-12 10:49:46 -04:00
imlew
488ffce640 Added a comment 2023-12-12 13:36:21 +00:00
imlew
261bd2af55 Added a comment 2023-12-12 13:32:17 +00:00
nobodyinperson
7aebfd6068 Added a comment 2023-12-12 12:44:38 +00:00
imlew
bee99dc1a4 Added a comment 2023-12-12 11:56:06 +00:00
Joey Hess
eb59da9dd2
Lower precision of timestamps in git-annex branch
This can reduce the size of the branch by up to 8%. My test was
running git-annex add 1000 times on one file each.
Lots of different high-resolution timestamps were recorded before
and eliminating those, after packing, the git repo was 8% smaller.

Due to the use of vector clocks, high resolution timestamps are
not necessary to make clear which information is most recent when
eg, a value is changed repeatedly in the same second. In such a
case, the vector clock will be advanced to the next second after
the last modification. For example, running
git-annex numcopies 1; git-annex numcopies 2
The first will record the current second, while the next records
the second after that even if it runs in the same second.

As for conflicting information written to two different clones of the
repository, this will make git-annex sometimes pick information that
was written earlier in a second over information written later in the
same second. Usually git-annex does not write conflicting information,
but there are some cases where it could. Eg, storing an object on a remote
can update the remote state log with some state. If two repos both store the
same object, and end up storing different remote state for some reason,
this can result in one that ran a tiny bit later winning. Such a situation
seems unlikely to be user visible. And a small amount of clock skew could
already result in such things.

The only case I can think of where this might be a user visible change
is if a configuration command like git-annex numcopies is being run
in 2 clones of a repository on the same machine at very
close to the same time. Then the user will know which they ran last,
and git-annex won't.

If that did become a problem, this could be dialed back to eg log
milliseconds with still some space saving.
2023-12-11 15:04:06 -04:00
Joey Hess
86dbe9a825
migrate: support adding size back to URL keys
migrate: Support adding size to URL keys that were added with --relaxed, by
running eg: git-annex migrate --backend=URL foo

Since url keys cannot be generated, that used to fail. Make it notice that
the backend is not changed, and just get the size of the content.

Sponsored-by: Brock Spratlen on Patreon
2023-12-08 16:22:14 -04:00
Joey Hess
cb9bb2027c
update for distributed migration 2023-12-08 14:39:38 -04:00
Joey Hess
60d00fdd33
Merge branch 'master' of ssh://git-annex.branchable.com 2023-12-08 14:26:26 -04:00
Joey Hess
362a2808a5
split out todo for special remotes and close the main todo 2023-12-08 14:26:08 -04:00
Joey Hess
76e11e4458
Merge branch 'master' into distributedmigration 2023-12-08 14:18:23 -04:00
Joey Hess
257f01729c
distributed migration for pull and sync --content
pull, sync: When operating on content, automatically hard link objects
that have been migrated.

Added annex.syncmigrations config that can be set to false to prevent
pull and sync from migrating object content.

I think that true is a good default for this config, because it avoids
users having to re-download migrated content or learning about migration.
But, some users will surely not like it, whether because it does take some
time (especially for the first git-annex branch scan when there is a long
history), or because they want to deal with it manually, or because their
filesystem doesn't support hard links and they don't want it to copy
objects.

Sponsored-by: k0ld on Patreon
2023-12-08 14:18:18 -04:00
Joey Hess
4ed71b34de
migrate --apply
And avoid migrate --update/--aply migrating when the new key was already
present in the repository, and got dropped. Luckily, the location log
allows distinguishing from the new key never having been present!

That is mostly useful for --apply because otherwise dropped files would
keep coming back until the old objects were reaped as unused. But it
seemed to make sense to also do it for --update. for consistency in edge
cases if nothing else. One case where --update can use it is when one
branch got migrated earlier, and we dropped the file, and now another
branch has migrated the same file.

Sponsored-by: Jack Hill on Patreon
2023-12-08 13:23:46 -04:00
Joey Hess
51b974d9f0
skip distributed migration to insecure key when annex.securehashesonly is set
This only avoids extra work and a warning messsage. It seems likely that
in such a situation, the user does not want migrations to insecure
hashes, and so best to ignore them as much as possible. If
the user merges a branch that switches annexed files to an insecure
hash, they will notice that the file contents are unavailable,
and git-annex get will tell them the problem then. So it does not seem
useful to have migrate --update also complain about it.
2023-12-08 12:41:50 -04:00
jkniiv
9189c41dde report on the 'Production' build flag not producing a binary that passes the test suite 2023-12-08 16:38:12 +00:00