git-annex/Git
Joey Hess 2aae6e84af
Support newlines in filenames.
Work around git cat-file --batch's protocol not supporting newlines by
running git cat-file not batched and passing the filename as a
parameter.

Of course this is quite a lot less efficient, especially because it
currently runs it multiple times to query for different pieces of
information.

Also, it has subtly different behavior when the batch process was
started and then some changes were made, in which case the batch process
sees the old index but this workaround sees the current index. Since
that batch behavior is mostly a problem that affects the assistant and has
to be worked around in it, I think I can get away with this difference.

I don't know of any other problems with newlines in filenames, everything
else in git I can think of supports -z. And git-annex's json output
supports newlines in filenames so downstream parsers from git-annex will be ok.
git-annex commands that use --batch themselves don't support newlines
in input filenames; using --json --batch is currently a way around that
problem.

This commit was sponsored by Ewen McNeill on Patreon.
2018-09-20 13:45:44 -04:00
..
Command update my email address and homepage url 2015-01-21 12:50:09 -04:00
Remote desc 2015-04-19 08:18:17 -04:00
AutoCorrect.hs Avoid backtraces on expected failures when built with ghc 8; only use backtraces for unexpected errors. 2016-11-15 21:29:54 -04:00
Branch.hs Pass -S to git commit-tree when commit.gpgsign is set and when making a non-automatic commit, in order to preserve current behavior when used with git 1.9, which has stopped doing this itself. 2016-06-02 15:07:20 -04:00
BuildVersion.hs fold Build/SysConfig.hs into BuildInfo via include 2017-12-14 12:46:57 -04:00
CatFile.hs Support newlines in filenames. 2018-09-20 13:45:44 -04:00
CheckAttr.hs restart coprocess in raw mode 2016-11-01 14:03:59 -04:00
CheckIgnore.hs restart coprocess in raw mode 2016-11-01 14:03:59 -04:00
Command.hs Support newlines in filenames. 2018-09-20 13:45:44 -04:00
Config.hs Improve startup time for commands that do not operate on remotes 2018-01-09 16:22:07 -04:00
ConfigTypes.hs post-recive hook to make updateInstead work in direct mode and adjusted branches 2017-02-17 14:04:43 -04:00
Construct.hs Support working trees set up by git-worktree. 2018-07-18 14:27:26 -04:00
CurrentRepo.hs fix reversions due to undocumented and buggy git behavior 2018-09-11 15:54:21 -04:00
DiffTree.hs unused: Improved memory use significantly when there are a lot of differences between branches. 2017-01-31 19:42:00 -04:00
DiffTreeItem.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Env.hs Optimisations to git-annex branch query and setting, avoiding repeated copies of the environment. 2016-09-29 13:36:48 -04:00
FileMode.hs fix various build warnings, mostly on Windows 2015-10-13 13:24:44 -04:00
Filename.hs fix failing quickcheck properties 2017-06-17 16:48:00 -04:00
FilePath.hs --branch, stage 2 2016-07-20 15:23:43 -04:00
Fsck.hs Fix build with ghc 8.4+, which broke due to the Semigroup Monoid change 2018-05-30 12:28:43 -04:00
GCrypt.hs Avoid backtraces on expected failures when built with ghc 8; only use backtraces for unexpected errors. 2016-11-15 21:29:54 -04:00
HashObject.hs Always use filesystem encoding for all file and handle reads and writes. 2016-12-24 14:46:31 -04:00
Hook.hs Windows: Handle shebang in external special remote program. 2016-09-05 12:09:23 -04:00
Index.hs avoid update-index race 2018-08-17 16:03:40 -04:00
LockFile.hs finally really add back custom-setup stanza 2017-12-31 16:36:39 -04:00
LsFiles.hs reuse hashes of dotfiles/dirs/submodules when entering view 2018-05-14 15:35:20 -04:00
LsTree.hs adjust: Fix behavior when used in a repository that contains submodules. 2017-02-20 13:44:55 -04:00
Merge.hs --allow-unrelated-histories will be in git 2.9.0, not 2.8.2 2016-04-27 13:54:46 -04:00
Objects.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Queue.hs queueing of internal IO actions on files 2018-08-17 13:28:21 -04:00
Ref.hs typo fix 2017-10-30 12:28:44 -04:00
RefLog.hs Only look at reflogs for relevant branches, not for git-annex branches 2015-07-07 17:36:30 -04:00
Remote.hs Improve startup time for commands that do not operate on remotes 2018-01-09 16:22:07 -04:00
Repair.hs rename BlobType and add submodule to it 2018-05-14 14:45:41 -04:00
Sha.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Ssh.hs avoid the dashed ssh hostname class of security holes 2017-08-17 22:11:31 -04:00
Status.hs Don't allow entering a view with staged or unstaged changes. 2018-05-14 16:51:06 -04:00
Tree.hs graft exported tree into git-annex branch 2017-08-31 18:06:49 -04:00
Types.hs rename BlobType and add submodule to it 2018-05-14 14:45:41 -04:00
UnionMerge.hs rename BlobType and add submodule to it 2018-05-14 14:45:41 -04:00
UpdateIndex.hs avoid update-index race 2018-08-17 16:03:40 -04:00
Url.hs update my email address and homepage url 2015-01-21 12:50:09 -04:00
Version.hs more {-# OPTIONS_GHC -fno-warn-tabs #-} ... Forcing people who have what is merely a difference of opinion to you to do this is a bit of an asshole move. Just saying. 2015-05-10 16:38:49 -04:00