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 bb4f31a0ee Clean up handling of git directory and git worktree.
Baked into the code was an assumption that a repository's git directory
could be determined by adding ".git" to its work tree (or nothing for bare
repos). That fails when core.worktree, or GIT_DIR and GIT_WORK_TREE are
used to separate the two.

This was attacked at the type level, by storing the gitdir and worktree
separately, so Nothing for the worktree means a bare repo.

A complication arose because we don't learn where a repository is bare
until its configuration is read. So another Location type handles
repositories that have not had their config read yet. I am not entirely
happy with this being a Location type, rather than representing them
entirely separate from the Git type. The new code is not worse than the
old, but better types could enforce more safety.

Added support for core.worktree. Overriding it with -c isn't supported
because it's not really clear what to do if a git repo's config is read, is
not bare, and is then overridden to bare. What is the right git directory
in this case? I will worry about this if/when someone has a use case for
overriding core.worktree with -c. (See Git.Config.updateLocation)

Also removed and renamed some functions like gitDir and workTree that
misused git's terminology.

One minor regression is known: git annex add in a bare repository does not
print a nice error message, but runs git ls-files in a way that fails
earlier with a less nice error message. This is because before --work-tree
was always passed to git commands, even in a bare repo, while now it's not.
2012-05-18 17:03:12 -04:00
Annex Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
Backend handle really long urls 2012-02-16 02:05:06 -04:00
Build Revert "avoid rewriting SysConfig.hs with identical contents" 2012-03-23 12:43:21 -04:00
Command Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
Common lint 2011-11-11 01:52:58 -04:00
debian Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
doc add 2012-05-16 15:19:39 -04:00
Git Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
Logs use strict insertWith 2012-05-04 00:44:11 -04:00
Messages find --json 2011-12-23 01:08:19 -04:00
Remote Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
Types Added shared cipher mode to encryptable special remotes. 2012-04-29 14:02:43 -04:00
Upgrade Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
Utility Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
.ghci autoload Common too in ghci 2012-03-24 17:25:47 -04:00
.gitattributes decruft 2011-06-22 18:56:08 -04:00
.gitignore update 2012-04-30 14:23:18 -04:00
Annex.hs fix test suite build 2012-04-30 13:59:05 -04:00
Backend.hs Fix use of several config settings 2012-05-05 20:16:56 -04:00
CHANGELOG symlinks 2010-10-27 15:14:59 -04:00
Checks.hs layout 2012-01-06 21:53:47 -04:00
CmdLine.hs noop 2012-04-21 23:32:33 -04:00
Command.hs added ifM and nuked 11 lines of code 2012-03-14 17:43:34 -04:00
Common.hs factor out Utility.FileSystemEncoding 2012-03-09 19:08:10 -04:00
Config.hs Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
configure.hs Rewrote free disk space checking code 2012-03-22 17:32:47 -04:00
Crypto.hs refactor 2012-04-29 14:33:07 -04:00
git-annex.cabal releasing version 3.20120511 2012-05-11 12:37:26 -04:00
git-annex.hs shave some 12 mb from the installed size 2012-03-15 12:00:19 -04:00
git-union-merge.hs Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
Git.hs Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
GitAnnex.hs addunused: New command, the opposite of dropunused, it relinks unused content into the git repository. 2012-05-02 14:59:05 -04:00
GitAnnexShell.hs noop 2012-04-21 23:32:33 -04:00
GPL symlinks 2010-10-27 15:14:59 -04:00
Init.hs Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
INSTALL symlinks 2010-10-27 15:14:59 -04:00
Limit.hs rename readMaybe to readish 2012-01-23 17:00:10 -04:00
Locations.hs Clean up handling of git directory and git worktree. 2012-05-18 17:03:12 -04:00
Makefile use LANGUAGE CPP pragma, avoids running cpp on all the other sources 2012-04-17 18:37:40 -04:00
mdwn2man mwdn2man: Fix a bug in newline supression. Closes: #606578 2010-12-10 17:27:02 -04:00
Messages.hs display "Recording state in git..." when staging the journal 2012-04-27 13:54:33 -04:00
NEWS update NEWS 2012-01-19 15:27:39 -04:00
Option.hs fix test suite build 2012-04-30 13:59:05 -04:00
README add README 2011-05-13 19:20:54 -04:00
Remote.hs noop 2012-04-21 23:32:33 -04:00
Seek.hs bugfix: Adding a dotfile also caused all non-dotfiles to be added. 2012-04-08 12:25:54 -04:00
Setup.hs cabal now installs git-annex-shell as a symlink to git-annex. 2012-04-14 14:01:14 -04:00
test.hs fix build 2012-05-05 20:11:08 -04:00
Types.hs tweak 2012-01-06 10:57:57 -04:00
Upgrade.hs tweaks 2012-01-11 00:06:54 -04:00
Usage.hs addunused: New command, the opposite of dropunused, it relinks unused content into the git repository. 2012-05-02 14:59:05 -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/>