Commit graph

79 commits

Author SHA1 Message Date
Joey Hess
10b5f79e2d
fix empty tree import when directory does not exist
Fix behavior when importing a tree from a directory remote when the
directory does not exist. An empty tree was imported, rather than the
import failing. Merging that tree would delete every file in the
branch, if those files had been exported to the directory before.

The problem was that dirContentsRecursive returned [] when the directory
did not exist. Better for it to throw an exception. But in commit
74f0d67aa3 back in 2012, I made it never
theow exceptions, because exceptions throw inside unsafeInterleaveIO become
untrappable when the list is being traversed.

So, changed it to list the contents of the directory before entering
unsafeInterleaveIO. So exceptions are thrown for the directory. But still
not if it's unable to list the contents of a subdirectory. That's less of a
problem, because the subdirectory does exist (or if not, it got removed
after being listed, and it's ok to not include it in the list). A
subdirectory that has permissions that don't allow listing it will have its
contents omitted from the list still.

(Might be better to have it return a type that includes indications of
errors listing contents of subdirectories?)

The rest of the changes are making callers of dirContentsRecursive
use emptyWhenDoesNotExist when they relied on the behavior of it not
throwing an exception when the directory does not exist. Note that
it's possible some callers of dirContentsRecursive that used to ignore
permissions problems listing a directory will now start throwing exceptions
on them.

The fix to the directory special remote consisted of not making its
call in listImportableContentsM use emptyWhenDoesNotExist. So it will
throw an exception as desired.

Sponsored-by: Joshua Antonishen on Patreon
2023-08-15 12:57:41 -04:00
Joey Hess
d8feda7a2f
added arm64-ancient build
Added arm64 build for ancient kernels, needed to support Android phones
whose kernels are too old to support kernels used by the current arm64
build.

Updated Android/git-annex-install to use it. (Also made it use i386-ancient
because that seems like a good idea.)

Sponsored-by: Noam Kremen on Patreon
2023-03-10 11:59:03 -04:00
Joey Hess
bc980815ee
fix build of helper program
broken by ba7ecbc6a9

Sponsored-by: Svenne Krap on Patreon
2022-11-03 14:11:49 -04:00
Joey Hess
ba7ecbc6a9
avoid flushing keys db queue after each Annex action
The flush was only done Annex.run' to make sure that the queue was flushed
before git-annex exits. But, doing it there means that as soon as one
change gets queued, it gets flushed soon after, which contributes to
excessive writes to the database, slowing git-annex down.
(This does not yet speed git-annex up, but it is a stepping stone to
doing so.)

Database queues do not autoflush when garbage collected, so have to
be flushed explicitly. I don't think it's possible to make them
autoflush (except perhaps if git-annex sqitched to using ResourceT..).
The comment in Database.Keys.closeDb used to be accurate, since the
automatic flushing did mean that all writes reached the database even
when closeDb was not called. But now, closeDb or flushDb needs to be
called before stopping using an Annex state. So, removed that comment.

In Remote.Git, change to using quiesce everywhere that it used to use
stopCoProcesses. This means that uses on onLocal in there are just as
slow as before. I considered only calling closeDb on the local git remotes
when git-annex exits. But, the reason that Remote.Git calls stopCoProcesses
in each onLocal is so as not to leave git processes running that have files
open on the remote repo, when it's on removable media. So, it seemed to make
sense to also closeDb after each one, since sqlite may also keep files
open. Although that has not seemed to cause problems with removable
media so far. It was also just easier to quiesce in each onLocal than
once at the end. This does likely leave performance on the floor, so
could be revisited.

In Annex.Content.saveState, there was no reason to close the db,
flushing it is enough.

The rest of the changes are from auditing for Annex.new, and making
sure that quiesce is called, after any action that might possibly need
it.

After that audit, I'm pretty sure that the change to Annex.run' is
safe. The only concern might be that this does let more changes get
queued for write to the db, and if git-annex is interrupted, those will be
lost. But interrupting git-annex can obviously already prevent it from
writing the most recent change to the db, so it must recover from such
lost data... right?

Sponsored-by: Dartmouth College's Datalad project
2022-10-12 14:12:23 -04:00
Joey Hess
a6ff335f0b
fix build 2022-07-25 14:10:30 -04:00
Joey Hess
35bbf4514c
fix build 2021-09-03 12:36:42 -04:00
Joey Hess
5990942b6c
don't use changelog version in commit message
changelog may have a new unreleased version open already
2021-08-09 12:31:48 -04:00
Joey Hess
122f166f2a
update for OSX catalina build 2021-07-14 12:22:34 -04:00
Joey Hess
fe4725d66e
switch to createrepo_c
createrepo used python2 and got removed from debian
2020-12-25 16:32:03 -04:00
Joey Hess
1a1d671dd2
fix build 2020-11-27 13:02:43 -04:00
Joey Hess
21ab496f6b
fix build 2020-11-16 09:56:03 -04:00
Joey Hess
e505c03bcc
more RawFilePath conversion
nukeFile replaced with removeWhenExistsWith removeLink, which allows
using RawFilePath. Utility.Directory cannot use RawFilePath since setup
does not depend on posix.

This commit was sponsored by Graham Spencer on Patreon.
2020-10-29 10:50:29 -04:00
Joey Hess
7a42a47902
renaming 2020-07-10 14:17:35 -04:00
Joey Hess
4489756e4e
fix build 2020-05-01 19:05:35 -04:00
Joey Hess
f83ead0240
fix cleanup of old rpms 2020-03-30 15:17:25 -04:00
Joey Hess
fcdd6d0c53
sync with archive.org always 2020-03-30 15:13:16 -04:00
Joey Hess
2f76717cfa
automate uploading released tarballs to archive.org 2020-03-04 12:35:20 -04:00
Joey Hess
85fc83eaf4
force move
Move will fail if the file is already on website and was re-downloaded
to generate rpms with, so force makes sure it moves.
2019-12-31 18:09:17 -04:00
Joey Hess
fa55a83206
update for RawFilePath changes 2019-12-31 18:01:53 -04:00
Joey Hess
9b29f0f5a3
more build fix 2019-12-18 14:37:59 -04:00
Joey Hess
7d82b6911b
build fixes 2019-12-18 14:36:19 -04:00
Joey Hess
a94d804f63
get any old rpms
to prevent makerepo from falling over on broken symlinks
2019-12-18 14:33:29 -04:00
Joey Hess
6b2e471330
only delete old rpms for arches that have a new rpm 2019-12-18 14:32:13 -04:00
Joey Hess
c9a3336235
remove old rpms
Don't want a mass of old versions of git-annex in rpm form cluttering up
my server.

Also, makerepo falls over when confronted with a dangling symlink.
2019-12-18 14:27:47 -04:00
Joey Hess
c4e34cf55d
fix build 2019-12-18 14:22:55 -04:00
Joey Hess
85c5e51c53
fix build after Utility.Url changes 2019-11-14 22:25:06 -04:00
Joey Hess
10fa8a8bee
reorg 2019-09-13 12:00:16 -04:00
Joey Hess
4508198507
building a standalone rpm from the standalone tarball
This allows the rpm to be built anywhere the necessary build deps are
available (including on debian) and the resulting package will work on as
broad a range of rpm distributions as the libc/kernel supports.

The DistributionUpdate changes to use the new script have not yet been
tested.
2019-09-13 11:53:17 -04:00
Joey Hess
fbe7db74af
remove unused import 2019-01-22 20:14:08 -04:00
Joey Hess
cbdb6671d6
remove old android app autobuild 2018-10-13 12:13:13 -04:00
Joey Hess
0240775f32
adding arm64 build, and improved termux installation process
* Added arm64 Linux standalone build. (No autobuilder yet.)
* Improved termux installation process.

Added git-annex-install.sh script to avoid user needing to type as much in
termux. The scope of this script is limited; runshell handles the rest.

Runshell runs termux-fix-shebang on the shell scripts. The problem is
the bundled bin/sh script, deleting that script also works, but then the
others probably use the system Android /bin/sh, which could be old or
broken or not posix or whatever. Using termux sh to run the scripts is
better.

This commit was sponsored by Eric Drechsel on Patreon.
2018-10-11 13:32:00 -04:00
Joey Hess
74890e1457
set 6.20180626 as urgent upgrade
This causes the webapp to tell the user's it's an urgent upgrade, which
this security fix is.
2018-06-25 21:52:02 -04:00
Joey Hess
a73d60785c
fix build 2018-04-27 12:59:09 -04:00
Joey Hess
9b8075e79f
fix build 2018-04-09 20:22:46 -04:00
Joey Hess
b47c23bb5c
fix build 2018-04-09 20:15:52 -04:00
Joey Hess
3fa8245df6
fix build some more 2018-01-15 12:18:00 -04:00
Joey Hess
ec5d89e72b
fix build 2018-01-15 12:17:09 -04:00
Joey Hess
27eca014be
fix up Read instance incompatability caused by recent commit
9c4650358c changed the Read instance for
Key.

I've checked all uses of that instance (by removing it and seeing what
breaks), and they're all limited to the webapp, except one.
That is GitAnnexDistribution's Read instance.

So, 9c4650358c would have broken upgrades
of git-annex from downloads.kitenet.net. Once the .info files there got
updated for a new release, old releases would have failed to parse them
and never upgraded.

To fix this, I found a way to make the .info files that contain
GitAnnexDistribution values be readable by the old version of git-annex.

This commit was sponsored by Ewen McNeill.
2017-02-24 18:59:12 -04:00
Joey Hess
8484c0c197
Always use filesystem encoding for all file and handle reads and writes.
This is a big scary change. I have convinced myself it should be safe. I
hope!
2016-12-24 14:46:31 -04:00
Joey Hess
8bed51ae95
use clamav to check builds for viruses before adding them
Had to workaround various problems in clamscan. Increased its max filesize
a lot, because it's too small to check git-annex. Manual unpacking seemed
to be needed for dmg and tar.gz.
2016-03-07 15:54:27 -04:00
Joey Hess
737e45156e
remove 163 lines of code without changing anything except imports 2016-01-20 16:36:33 -04:00
Joey Hess
9240c02fd1
fix build of DistributionUpdate 2016-01-14 15:55:37 -04:00
Joey Hess
1c98029bb0 add i386-ancient build 2015-09-23 13:36:45 -04:00
Joey Hess
eb33569f9d remove Params constructor from Utility.SafeCommand
This removes a bit of complexity, and should make things faster
(avoids tokenizing Params string), and probably involve less garbage
collection.

In a few places, it was useful to use Params to avoid needing a list,
but that is easily avoided.

Problems noticed while doing this conversion:

	* Some uses of Params "oneword" which was entirely unnecessary
	  overhead.
	* A few places that built up a list of parameters with ++
	  and then used Params to split it!

Test suite passes.
2015-06-01 13:52:23 -04:00
Joey Hess
2cb8fc5fee another fix 2015-04-20 16:09:24 -04:00
Joey Hess
cd2541f729 fix 2015-04-20 16:08:12 -04:00
Joey Hess
667e16f1b9 use signingKey 2015-04-06 18:56:38 -04:00
Joey Hess
b857253ae9 reorder params 2015-04-06 18:38:34 -04:00
Joey Hess
21cab904a9 remove now duplicate import 2015-02-19 18:45:07 -04:00
Joey Hess
349eefc768 make commits to downloads repo with the git-annex distribution signing key 2015-01-21 21:27:12 -04:00