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 38e9ea8497
one-way escaping of newlines in uuid.log
A repository can have a newline in its description due to being in a
directory containing a newline, or due to git-annex describe being
passed a string with a newline in it for some reason. Putting that
newline in uuid.log breaks its format.

So, escape the newline when it enters uuid.log, to \n

This is a one-way escaping, it is not converted back to a newline
when reading the log. If it were, commands like git-annex info and
whereis would display a multi-line description, which could be confusing
to read.

And, implementing roundtripping would necessarily cause problems if an
old version of git-annex were used to set a description that contained
whatever special character is used to escape the \n. Eg, a \ or if
it used the ! prefix before base64 data that is used in some other logs,
the ! character. Then the description set by the old git-annex would not
roundtrip.

There just doesn't seem to be any benefit of roundtripping newlines through,
so why bother? And, git often displays \n for newline when a filename
contains a newline, so git-annex doing it in this case seems sorta ok
by analogy to git.

(Some other git-annex logs can also have newlines put into them if the
user really wants to break git-annex. For example:
git-annex config annex.largefiles "foo
bar"
The full list is probably config.log, remote.log, group.log,
preferred-content.log, required-content.log,
group-preferred-content.log, schedule.log. Probably there is no
good reason to use a newline in any of these, and the breakage is
probably limited to the bad data the user put in not coming back out.
And users can write any garbage to log files themselves manually in any
case. So, I am not going to address all of those at this time. If a
problem such as this one with the newline in the repository path comes
up, it can be dealt with on a case by case basis.)

Sponsored-by: Dartmouth College's Datalad project
2023-03-13 14:19:32 -04:00
Annex Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Assistant fix build on OSX 2023-03-03 13:20:49 -04:00
Backend Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Build added arm64-ancient build 2023-03-10 11:59:03 -04:00
CmdLine Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Command importfeed: Display feed title 2023-03-11 13:52:45 -04:00
Config use status --ignore-submodules in configureSmudgeFilter 2022-12-20 16:02:42 -04:00
Database Improve error message when unable to read a sqlite database due to permissions problem 2023-02-23 15:28:22 -04:00
debian add m68k to arch lists for webapp build deps 2023-02-23 14:26:20 -04:00
doc one-way escaping of newlines in uuid.log 2023-03-13 14:19:32 -04:00
Git make hashFile support paths with newlines 2023-03-13 13:43:40 -04:00
Limit new matching options --want-get-by and --want-drop-by 2022-07-28 13:26:03 -04:00
Logs one-way escaping of newlines in uuid.log 2023-03-13 14:19:32 -04:00
Messages factor out Utility.Aeson.textKey 2022-03-02 18:24:06 -04:00
P2P small RawFilePath optimisation 2023-03-02 10:53:12 -04:00
Remote fix build on windows 2023-03-03 12:58:39 -04:00
RemoteDaemon remove support code for ancient git-annex-shell version 2021-10-11 16:07:08 -04:00
standalone Revert "Removed the vendored git-lfs and the GitLfs build flag" 2023-01-04 17:33:29 -04:00
static Revert "remove newlines from static js and css" 2014-06-13 02:20:39 -04:00
templates cache the serialization of a Key 2019-11-22 17:49:16 -04:00
Test Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Types one-way escaping of newlines in uuid.log 2023-03-13 14:19:32 -04:00
Upgrade Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Utility fix OSx build better 2023-03-09 11:43:55 -04:00
.ghci turn of PackageImports in cabal file 2022-02-25 13:16:36 -04:00
.gitattributes update changelog location 2016-08-22 23:54:11 -04:00
.gitignore ignore git-annex-build-deps files from dpkg-genbuilddeps 2023-01-29 11:29:51 -04:00
.mailmap alias for Yaroslav @ yahoo to mailmap 2015-09-09 12:38:59 -04:00
Annex.hs avoid flushing keys db queue after each Annex action 2022-10-12 14:12:23 -04:00
Assistant.hs assistant: Fix a crash on startup by avoiding using forkProcess 2021-05-12 15:08:03 -04:00
Backend.hs move several readonly values to AnnexRead 2022-06-28 15:40:19 -04:00
bash-completion.bash bash completion fix 2018-11-12 13:23:05 -04:00
Benchmark.hs --size-limit exit 101 2021-06-04 16:43:47 -04:00
BuildFlags.hs show when build with Benchmark build flag 2022-08-29 14:55:58 -04:00
BuildInfo.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
CHANGELOG one-way escaping of newlines in uuid.log 2023-03-13 14:19:32 -04:00
CmdLine.hs avoid flushing keys db queue after each Annex action 2022-10-12 14:12:23 -04:00
Command.hs add FIELD?=GLOB to git-annex view usage 2023-02-07 18:09:10 -04:00
Common.hs Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Config.hs added an optional cost= configuration to all special remotes 2023-01-12 13:42:28 -04:00
COPYRIGHT general copyright year bump 2023-01-09 15:05:27 -04:00
Creds.hs avoid getting creds from environment during autoenable 2021-03-17 09:41:12 -04:00
Crypto.hs avoid setEnv while testing gpg 2022-05-18 16:05:11 -04:00
git-annex.cabal factor out convertToWindowsNativeNamespace into its own module 2023-03-01 13:28:39 -04:00
git-annex.hs include git-annex-shell back in 2019-12-02 11:51:52 -04:00
git-union-merge.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Git.hs use getSymbolicLinkStatus not getFileStatus to avoid crash on broken symlink 2022-09-05 13:46:32 -04:00
Key.hs convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
Limit.hs Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Logs.hs filter-branch working aside from some edge cases 2021-05-17 13:24:58 -04:00
Makefile Added libgcc_s.so.1 to the linux standalone build so pthread_cancel will work 2022-12-22 15:15:25 -04:00
Messages.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
NEWS complete annex.skipunknown transition 2022-02-18 13:18:05 -04:00
README improve description 2022-01-06 12:24:27 -04:00
Remote.hs better handling of multiple repositories with the same name 2023-02-13 14:31:09 -04:00
Setup.hs Added git-remote-tor-annex, which allows git pull and push to the tor hidden service. 2016-11-21 17:27:38 -04:00
stack.yaml Revert "stack.yaml: Update to lts-19.33 and aws-0.24" 2023-02-20 15:15:06 -04:00
Test.hs Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Types.hs plumb VerifyConfig into retrieveKeyFile 2021-08-17 12:43:13 -04:00
Upgrade.hs handle upgrading repositories initialized with --version=9 2022-09-26 12:59:51 -04:00

git-annex allows managing large files with git, without storing the file
contents in git. It can sync, backup, and archive your data, offline
and online. Checksums and encryption keep your data safe and secure. Bring
the power and distributed nature of git to bear on your large files with
git-annex.

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