CI to automate build of cargo lockfiles on different Alpine releases for git-annex aports https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/community/git-annex
Find a file
Joey Hess ddd46db09a Fix a few bugs involving filenames that are at or near the filesystem's maximum filename length limit.
Started with a problem when running addurl on a really long url,
because the whole url is munged into the filename. Ended up doing
a fairly extensive review for places where filenames could get too large,
although it's hard to say I'm not missed any..

Backend.Url had a 128 character limit, which is fine when the limit is 255,
but not if it's a lot shorter on some systems. So check the pathconf()
limit. Note that this could result in fromUrl creating different keys
for the same url, if run on systems with different limits. I don't see
this is likely to cause any problems. That can already happen when using
addurl --fast, or if the content of an url changes.

Both Command.AddUrl and Backend.Url assumed that urls don't contain a
lot of multi-byte unicode, and would fail to truncate an url that did
properly.

A few places use a filename as the template to make a temp file.
While that's nice in that the temp file name can be easily related back to
the original filename, it could lead to `git annex add` failing to add a
filename that was at or close to the maximum length.

Note that in Command.Add.lockdown, the template is still derived from the
filename, just with enough space left to turn it into a temp file.
This is an important optimisation, because the assistant may lock down
a bunch of files all at once, and using the same template for all of them
would cause openTempFile to iterate through the same set of names,
looking for an unused temp file. I'm not very happy with the relatedTemplate
hack, but it avoids that slowdown.

Backend.WORM does not limit the filename stored in the key.
I have not tried to change that; so git annex add will fail on really long
filenames when using the WORM backend. It seems better to preserve the
invariant that a WORM key always contains the complete filename, since
the filename is the only unique material in the key, other than mtime and
size. Since nobody has complained about add failing (I think I saw it
once?) on WORM, probably it's ok, or nobody but me uses it.

There may be compatability problems if using git annex addurl --fast
or the WORM backend on a system with the 255 limit and then trying to use
that repo in a system with a smaller limit. I have not tried to deal with
those.

This commit was sponsored by Alexander Brem. Thanks!
2013-07-30 19:18:29 -04:00
Annex Fix a few bugs involving filenames that are at or near the filesystem's maximum filename length limit. 2013-07-30 19:18:29 -04:00
Assistant assistant: Fix bug that caused it to stall when adding a very large number of files at once (around 5 thousand). 2013-07-27 17:42:18 -04:00
Backend Fix a few bugs involving filenames that are at or near the filesystem's maximum filename length limit. 2013-07-30 19:18:29 -04:00
Build linux standalone auto-install icons 2013-07-09 20:50:41 -04:00
Command Fix a few bugs involving filenames that are at or near the filesystem's maximum filename length limit. 2013-07-30 19:18:29 -04:00
Common Use lower case hash directories for storing files on crippled filesystems, same as is already done for bare repositories. 2013-04-04 15:46:33 -04:00
Config webapp: When the user switches to display a different repository, that repository becomes the default repository to be displayed next time the webapp gets started. 2013-06-11 00:06:06 -04:00
debian Fix a few bugs involving filenames that are at or near the filesystem's maximum filename length limit. 2013-07-30 19:18:29 -04:00
doc Merge branch 'master' of ssh://git-annex.branchable.com 2013-07-30 17:14:19 -04:00
Git importfeed: git-annex becomes a podcatcher in 150 LOC 2013-07-28 16:55:42 -04:00
GitAnnex Make --numcopies override annex.numcopies set in .gitattributes. 2013-07-09 12:05:56 -04:00
Logs importfeed: git-annex becomes a podcatcher in 150 LOC 2013-07-28 16:55:42 -04:00
Messages hlint 2013-04-03 03:52:41 -04:00
Remote directory special remote: Fix checking that there is enough disk space to hold an object, was broken when using encryption. 2013-07-20 16:30:49 -04:00
standalone OSX: Make git-annex-webapp run in the background, so that the app icon can be clicked on the open a new webapp when the assistant is already running. 2013-07-30 15:04:31 -04:00
static animate syncing and other activity icons 2013-04-08 22:54:02 -04:00
templates try to adjust wording based on feedback 2013-07-25 15:52:48 -04:00
Types layout 2013-07-04 02:45:46 -04:00
Upgrade rename module 2013-05-12 19:19:28 -04:00
Utility Fix a few bugs involving filenames that are at or near the filesystem's maximum filename length limit. 2013-07-30 19:18:29 -04:00
.ghci workaround for ghci fragility in reusing objects compiled with ghc 2012-10-20 16:20:42 -04:00
.gitattributes decruft 2011-06-22 18:56:08 -04:00
.gitignore re-enable .o and .hi exclusion 2013-06-26 11:43:45 -04:00
Annex.hs Make --numcopies override annex.numcopies set in .gitattributes. 2013-07-09 12:05:56 -04:00
Assistant.hs assistant: Work around git-cat-file's not reloading the index after files are staged. 2013-05-25 00:37:41 -04:00
Backend.hs hlint 2013-04-03 03:52:41 -04:00
BuildFlags.hs add build flags to version output 2013-03-09 14:57:23 -04:00
CHANGELOG symlinks 2010-10-27 15:14:59 -04:00
Checks.hs direct, indirect: Refuse to do anything when the assistant or git-annex watch daemon is running. 2013-04-22 16:41:46 -04:00
CmdLine.hs annex.debug can now be set to enable debug logging by default. The webapp's debugging check box does this. 2013-06-17 20:41:27 -04:00
Command.hs Make --numcopies override annex.numcopies set in .gitattributes. 2013-07-09 12:05:56 -04:00
Common.hs fix the day's windows permissions damage 2013-05-12 19:09:48 -04:00
Config.hs split cost out into its own module 2013-03-13 16:30:34 -04:00
configure.hs Rewrote free disk space checking code 2012-03-22 17:32:47 -04:00
COPYRIGHT Add link COPYRIGHT -> debian/copyright; add COPYRIGHT to sdist. 2012-06-11 23:27:00 -07:00
Creds.hs fix permission damage (thanks, Windows) 2013-05-11 23:54:25 -04:00
Crypto.hs Generate ciphers with a better entropy. 2013-04-06 16:09:51 -04:00
Fields.hs safe recv-key in direct mode 2013-01-11 16:03:45 -04:00
ghci brought back fast ghci 2013-02-27 21:38:01 -04:00
git-annex.cabal importfeed: git-annex becomes a podcatcher in 150 LOC 2013-07-28 16:55:42 -04:00
git-annex.hs try building test suite on windows 2013-05-17 16:45:44 -04:00
git-union-merge.hs factor out nukeFile 2012-06-06 13:13:13 -04:00
Git.hs fix permission damage (thanks, Windows) 2013-05-11 23:54:25 -04:00
GitAnnex.hs importfeed: git-annex becomes a podcatcher in 150 LOC 2013-07-28 16:55:42 -04:00
GitAnnexShell.hs fix permission damage (thanks, Windows) 2013-05-11 23:54:25 -04:00
Init.hs detect system with no dot in FQDN, where git commit will fail, and workaround 2013-07-05 12:24:28 -04:00
INSTALL symlinks 2010-10-27 15:14:59 -04:00
Limit.hs fix Android build, broken for 2 days 2013-05-26 18:14:03 -04:00
Locations.hs fuzz tester 2013-05-23 19:00:46 -04:00
Makefile got hdevtools working again 2013-07-27 13:00:49 -04:00
Messages.hs annex.debug can now be set to enable debug logging by default. The webapp's debugging check box does this. 2013-06-17 20:41:27 -04:00
NEWS update NEWS 2012-01-19 15:27:39 -04:00
Option.hs annex.debug can now be set to enable debug logging by default. The webapp's debugging check box does this. 2013-06-17 20:41:27 -04:00
README add README 2011-05-13 19:20:54 -04:00
Remote.hs expose Control.Monad.join 2013-04-22 20:24:53 -04:00
Seek.hs moved AssociatedFile definition 2013-07-04 02:36:02 -04:00
Setup.hs split out library 2013-04-17 12:02:44 -04:00
Test.hs regression test for 7b0970b340 2013-07-30 17:04:05 -04:00
Types.hs moved AssociatedFile definition 2013-07-04 02:36:02 -04:00
Upgrade.hs fix permission damage (thanks, Windows) 2013-05-11 23:54:25 -04:00
Usage.hs content: New command line way to view and configure a repository's preferred content settings. 2013-05-25 12:44:58 -04:00

git-annex allows managing files with git, without checking the file
contents into git. While that may seem paradoxical, it is useful when
dealing with files larger than git can currently easily handle, whether due
to limitations in memory, checksumming time, or disk space.

For documentation, see doc/ or <http://git-annex.branchable.com/>