Commit graph

42030 commits

Author SHA1 Message Date
Joey Hess
1ddaf7a27f
decided this is not a problem 2022-06-15 14:00:56 -04:00
Joey Hess
f259be7f39
fix overwrite race with small file that got large
When adding a small file, it does not get locked down, so can be modified
after git-annex checks that it's small. The use of queued git add made the
race window nice and wide too.

Fixed by checking if the file has changed, and by not using git add.
Instead, have to recapitulate git add's handling of things like symlinks
and executable files.

Sponsored-by: Jochen Bartl on Patreon
2022-06-14 16:38:56 -04:00
Joey Hess
56e095aaf4
Merge branch 'master' of ssh://git-annex.branchable.com 2022-06-14 14:56:16 -04:00
yarikoptic
60a02af856 Added a comment: hold it... ;) 2022-06-14 18:47:25 +00:00
Joey Hess
78a3d44ea0
get rid of racy addLink
The remaining callers all did not rely on it checking gitignore, so were
easy to convert.

They were susceptable to the same overwrite race as add and fix,
although less likely to have it and a narrower window than add's race.

Command.Rekey in passing got an unncessary call to removeFile deleted.
addSymlink handles deleting any existing worktree file.
2022-06-14 14:47:15 -04:00
Joey Hess
7ace804d8e
avoid writing same symlink twice in a row
Oddly, the second write did not cause it to lose the mtime inherited
from the file being added, although the mtime was not provided to that
write but only to the first. I don't quite know why that worked before!
2022-06-14 14:30:12 -04:00
Joey Hess
64c7f60f7a
fixed overwrite race with git-annex fix
Similar to git-annex add, git-annex fix queued git add, so if a file
got modified before git add ran, the wrong content would be staged,
perhaps a large file content.

Sponsored-by: Brock Spratlen on Patreon
2022-06-14 14:19:58 -04:00
Joey Hess
e47219bcb5
bug report 2022-06-14 14:13:48 -04:00
Joey Hess
5ef79125ad
fix overwrite race with git-annex add of annex symlink
In the unlikely case where git-annex add is run on an annex symlink that
is not already added, and while it's processing it, the annex symlink is
overwritten with something else, avoid git-annex overwriting that with
the symlink again.

Sponsored-by: Jack Hill on Patreon
2022-06-14 14:00:13 -04:00
Joey Hess
dd6dec4eb1
fix add overwrite race with git-annex add to annex
This is not a complete fix for all such races, only the one where a
large file gets changed while adding and gets added to git rather than
to the annex.

addLink needs to go away, any caller of it is probably subject to the
same kind of race. (Also, addLink itself fails to check gitignore when
symlinks are not supported.)

ingestAdd no longer checks gitignore. (It didn't check it consistently
before either, since there were cases where it did not run git add!)
When git-annex import calls it, it's already checked gitignore itself
earlier. When git-annex add calls it, it's usually on files found
by withFilesNotInGit, which handles checking ignores.

There was one other case, when git-annex add --batch calls it. In that
case, old git-annex behaved rather badly, it would seem to add the file,
but git add would later fail, leaving the file as an unstaged annex symlink.
That behavior has also been fixed.

Sponsored-by: Brett Eisenberg on Patreon
2022-06-14 13:37:19 -04:00
Joey Hess
b471438c51
bug report
Sponsored-by: Luke Shumaker on Patreon
2022-06-14 12:51:09 -04:00
Joey Hess
b9e9ad1ffb
comment 2022-06-14 12:23:33 -04:00
Joey Hess
f7552e4e28
Merge branch 'master' of ssh://git-annex.branchable.com 2022-06-14 11:51:44 -04:00
KachoOji
216a78a3e9 Added a comment 2022-06-14 15:32:48 +00:00
yarikoptic
8916c818b4 Added a comment 2022-06-13 23:52:48 +00:00
yarikoptic
1524c5f2dd initial whining about type=git initremote stopped 2022-06-13 23:40:30 +00:00
Joey Hess
596ead85a1
add rf 2022-06-13 16:04:12 -04:00
Joey Hess
49ab467784
comment 2022-06-13 14:20:54 -04:00
Joey Hess
68810ddaf9
comment 2022-06-13 13:38:36 -04:00
Joey Hess
4f23931439
add todo based on forum post 2022-06-13 13:12:18 -04:00
Atemu
c0e648e921 2022-06-11 14:58:11 +00:00
KachoOji
6adaf94709 2022-06-10 23:04:09 +00:00
yarikoptic
c3f1509b9e Added a comment 2022-06-09 21:53:05 +00:00
Joey Hess
6d0b243d9d
avoid cleaning up move log when drop from remote fails
move: Improve resuming a move that succeeded in transferring the content,
but where dropping failed due to eg a network problem, in cases where
numcopies checks prevented the resumed move from dropping the object from
the source repository.

This was earlier done for moves that got interrupted during the drop stage.

Sponsored-by: Svenne Krap on Patreon
2022-06-09 15:26:25 -04:00
Joey Hess
13fc6a9b6a
fix to use 1 chunk for empty file
Fix retrival of an empty file that is stored in a special remote with
chunking enabled.

The speculative chunk stuff caused a reversion by adding an empty list for
the empty file. Which is just wrong; the empty file is still stored on the
remote, and should be retrieved like any other file. It uses 1 chunk, so
`max 1` is the simple fix.

Sponsored-by: Noam Kremen on Patreon
2022-06-09 14:24:56 -04:00
Joey Hess
f30532614f
fix typo 2022-06-09 13:40:05 -04:00
Joey Hess
53d289c6c1
comment 2022-06-09 13:38:37 -04:00
Joey Hess
9ef90aa738
comment 2022-06-09 13:32:07 -04:00
Joey Hess
bfdbf59536
close as not a bug 2022-06-09 13:23:33 -04:00
Joey Hess
9f1765b32a
Merge branch 'master' of ssh://git-annex.branchable.com 2022-06-09 13:18:10 -04:00
yarikoptic
1a2bff370d initial report on difficulty with 0 length file 2022-06-09 17:17:56 +00:00
Joey Hess
14584e7a38
initremote type=git probe uuid
rather than matching path of an existing remote to find the uuid.

The main benefit of this is that locations not using ssh:// will work
now, including both paths and host:/path

The other benefit is that it's a simpler interface, no need to have an
existing remote with the same url and some other name. Although that
will still work of course.

This does rely on tryGitConfigRead working when given a Git.Repo that is
not a remote. Luckily, it works fine that way.

Also, tryGitConfigRead will auto-init a local repo that has a git-annex
branch. I did not enable auto-init of ssh repos though.

The uuid discovery actually happens twice; initremote discovers it,
and uses it to store the special remote config, but does not set it in the
git remote it creates. So the next run of git-annex does uuid discovery
again, and caches it that time. This could be improved for a tiny
speedup, but I didn't want to complicate things for that in this
commit.

Sponsored-by: Dartmouth College's DANDI project
2022-06-09 13:16:50 -04:00
Joey Hess
2f509e529e
bug report 2022-06-09 13:16:39 -04:00
mih
2d4126e742 2022-06-09 11:43:47 +00:00
jkniiv
4d3178b8ea Added a comment 2022-06-09 02:32:19 +00:00
Joey Hess
5b7a5eedb6
analysis 2022-06-08 15:44:28 -04:00
Joey Hess
676d46032a
comment 2022-06-08 12:54:28 -04:00
yarikoptic
7ecb4a34cc initial whining about type=git initremote 2022-06-08 15:42:58 +00:00
yarikoptic
bbf7459fe1 initial report on addurls issue 2022-06-08 14:05:56 +00:00
Atemu
9cf6feb46d Added a comment 2022-06-07 12:07:30 +00:00
yarikoptic
e796080f32 Added a comment 2022-06-06 17:22:41 +00:00
Joey Hess
21cf33a881
comment 2022-06-06 12:37:40 -04:00
Joey Hess
5da1a78508
add debugging around commits to sqlite dbs 2022-06-06 12:36:55 -04:00
Joey Hess
a57ad1e226
comment 2022-06-06 12:19:28 -04:00
Joey Hess
331c97df88
fix MVar deadlock when sqlite commit fails
The database queue was left empty, which caused subsequent calls to
flushDbQueue to deadlock.

Sponsored-by: Dartmouth College's Datalad project
2022-06-06 12:16:55 -04:00
Joey Hess
7851d8fb42
Merge branch 'master' of ssh://git-annex.branchable.com 2022-06-06 11:55:02 -04:00
yarikoptic
79446f47c5 Added a comment 2022-06-06 14:50:16 +00:00
yarikoptic
89034adc44 Added a comment 2022-06-06 14:00:05 +00:00
aurelia@b44312a63326710de6cea9c43290e5debbd55607
4150433ef4 Added a comment 2022-06-06 12:38:26 +00:00
Joey Hess
659572ea17
update 2022-06-05 10:37:32 -04:00