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 12243d2279 Flush json output, avoiding a buffering problem that could result in doubled output.
The bug was that with --json, output lines were sometimes doubled. For
example, git annex init --json would output two lines, despite only running
one thing. Adding to the weirdness, this only occurred when the output
was redirected to a pipe or a file.

Strace showed two processes outputting the same buffered output.
The second process was this writer process (only needed to work around
bug #624389):

                _ <- forkProcess $ do
                        hPutStr toh $ unlines paths
                        hClose toh
                        exitSuccess

The doubled output occurs when this process exits, and ghc flushes the
inherited stdout buffer. Why only when piping? I don't know, but ghc may
be behaving differently when stdout is not a terminal.

While this is quite possibly a ghc bug, there is a nice fix in git-annex.
Explicitly flushing after each chunk of json is output works around the
problem, and as a side effect, json is streamed rather than being output
all at the end when performing an expensive operaition.

However, note that this means all uses of putStr in git-annex must be
explicitly flushed. The others were, already.
2011-11-25 11:51:06 -04:00
Annex tweaks 2011-11-19 15:57:08 -04:00
Backend reorder repo parameters last 2011-11-08 16:27:20 -04:00
Build moved files around 2011-08-20 16:11:42 -04:00
Command find: Support --print0 2011-11-22 14:06:31 -04:00
Common lint 2011-11-11 01:52:58 -04:00
debian Flush json output, avoiding a buffering problem that could result in doubled output. 2011-11-25 11:51:06 -04:00
doc Merge branch 'master' of ssh://git-annex.branchable.com 2011-11-24 11:57:22 -04:00
Git improve type signatures with a Ref newtype 2011-11-16 02:41:46 -04:00
Logs status: Include all special remotes in the list of repositories. 2011-11-18 13:22:48 -04:00
Messages status --json --fast for esc 2011-11-14 19:27:22 -04:00
Remote Put a workaround in the directory special remote for strange behavior with VFAT filesystems on Linux (mounted with shortname=mixed) 2011-11-22 18:21:28 -04:00
Types When not run in a git repository, git-annex can still display a usage message, and "git annex version" even works. 2011-11-16 00:49:09 -04:00
Upgrade improve type signatures with a Ref newtype 2011-11-16 02:41:46 -04:00
Utility Avoid excessive escaping for rsync special remotes that are not accessed over ssh. 2011-11-18 12:53:48 -04:00
.gitattributes decruft 2011-06-22 18:56:08 -04:00
.gitignore split groups of related functions out of Utility 2011-08-22 16:14:12 -04:00
Annex.hs find: Support --print0 2011-11-22 14:06:31 -04:00
Backend.hs reorder repo parameters last 2011-11-08 16:27:20 -04:00
CHANGELOG symlinks 2010-10-27 15:14:59 -04:00
Checks.hs lint 2011-11-11 01:52:58 -04:00
CmdLine.hs When not run in a git repository, git-annex can still display a usage message, and "git annex version" even works. 2011-11-16 00:49:09 -04:00
Command.hs tweak 2011-11-19 15:27:10 -04:00
Common.hs lint 2011-11-11 01:52:58 -04:00
Config.hs tweaks 2011-11-19 15:57:08 -04:00
configure.hs lint 2011-11-11 01:52:58 -04:00
Crypto.hs factored out some useful error catching methods 2011-11-10 20:57:28 -04:00
git-annex-shell.hs When not run in a git repository, git-annex can still display a usage message, and "git annex version" even works. 2011-11-16 00:49:09 -04:00
git-annex.cabal releasing version 3.20111122 2011-11-22 14:40:11 -04:00
git-annex.hs renamed GitRepo to Git 2011-06-30 13:21:39 -04:00
git-union-merge.hs improve type signatures with a Ref newtype 2011-11-16 02:41:46 -04:00
Git.hs improve type signatures with a Ref newtype 2011-11-16 02:41:46 -04:00
GitAnnex.hs find: Support --print0 2011-11-22 14:06:31 -04:00
GPL symlinks 2010-10-27 15:14:59 -04:00
Init.hs reorder repo parameters last 2011-11-08 16:27:20 -04:00
INSTALL symlinks 2010-10-27 15:14:59 -04:00
Limit.hs playing with >=> 2011-10-31 23:39:55 -04:00
Locations.hs reorder repo parameters last 2011-11-08 16:27:20 -04:00
Makefile add make fast target 2011-11-10 03:10:17 -04:00
mdwn2man mwdn2man: Fix a bug in newline supression. Closes: #606578 2010-12-10 17:27:02 -04:00
Messages.hs Flush json output, avoiding a buffering problem that could result in doubled output. 2011-11-25 11:51:06 -04:00
Options.hs refactoring and cleanup 2011-10-30 00:28:22 -04:00
README add README 2011-05-13 19:20:54 -04:00
Remote.hs status: Include all special remotes in the list of repositories. 2011-11-18 13:22:48 -04:00
Seek.hs lint 2011-11-11 01:52:58 -04:00
Setup.hs cabal can now be used to build git-annex. 2011-06-30 14:55:03 -04:00
test.hs add a UUID type 2011-11-07 15:59:16 -04:00
Types.hs add a UUID type 2011-11-07 15:59:16 -04:00
Upgrade.hs rename 2011-10-05 16:02:51 -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/>