summaryrefslogtreecommitdiff
path: root/Upgrade/V2.hs
Commit message (Collapse)AuthorAge
* Clean up handling of git directory and git worktree.Gravatar Joey Hess2012-05-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Avoid repeated location log commits when a remote is receiving files.Gravatar Joey Hess2012-01-28
| | | | | | | | | Done by adding a oneshot mode, in which location log changes are written to the journal, but not committed. Taking advantage of git-annex's existing ability to recover in this situation. This is used by git-annex-shell and other places where changes are made to a remote's location log.
* split out Git/Command.hsGravatar Joey Hess2011-12-14
|
* split out Git/Ref.hsGravatar Joey Hess2011-12-12
|
* hslintGravatar Joey Hess2011-12-09
|
* improve type signatures with a Ref newtypeGravatar Joey Hess2011-11-16
| | | | | | | | | | | In git, a Ref can be a Sha, or a Branch, or a Tag. I added type aliases for those. Note that this does not prevent mixing up of eg, refs and branches at the type level. Since git really doesn't care, except rare cases like git update-ref, or git tag -d, that seems ok for now. There's also a tree-ish, but let's just use Ref for it. A given Sha or Ref may or may not be a tree-ish, depending on the object type, so there seems no point in trying to represent it at the type level.
* factored out some useful error catching methodsGravatar Joey Hess2011-11-10
|
* reorder repo parameters lastGravatar Joey Hess2011-11-08
| | | | | | | | | | | | | Many functions took the repo as their first parameter. Changing it consistently to be the last parameter allows doing some useful things with currying, that reduce boilerplate. In particular, g <- gitRepo is almost never needed now, instead use inRepo to run an IO action in the repo, and fromRepo to get a value from the repo. This also provides more opportunities to use monadic and applicative combinators.
* sheesh. seriously?Gravatar Joey Hess2011-10-29
|
* broke up UtilityGravatar Joey Hess2011-10-16
|
* reorganize log modulesGravatar Joey Hess2011-10-15
| | | | no code changes
* renameGravatar Joey Hess2011-10-05
|
* renameGravatar Joey Hess2011-10-04
|
* factor out common importsGravatar Joey Hess2011-10-03
| | | | no code changes
* improved git-annex branch changingGravatar Joey Hess2011-10-03
| | | | | | | | | | All changes to files in the branch are now made via pure functions that transform the old file into the new. This will allow adding locking to prevent read/write races. It also makes the code nicer, and purer. I noticed a behavior change, really a sort of bug fix. Before, 'git annex untrust foo --trust bar' would change both trust levels permanantly, now the --trust doesn't get stored.
* more newline fixesGravatar Joey Hess2011-09-09
| | | | | | | | | | Adds a missing newline when a longnote is followed by a endresult. Multiple longnotes in a row will now be separated by a blank line, which could be a bug or a feature depending on taste. Removed several places where newlines were explicitly displayed after longnotes.
* split groups of related functions out of UtilityGravatar Joey Hess2011-08-22
|
* unify elipsis handlingGravatar Joey Hess2011-07-19
| | | | | And add a simple dots-based progress display, currently only used in v2 upgrade.
* hlint tweaksGravatar Joey Hess2011-07-15
| | | | Did all sources except Remotes/* and Command/*
* make upgrade more robustGravatar Joey Hess2011-07-05
| | | | don't remove .git-annex until state has been succeffully saved
* add hashing to web log filesGravatar Joey Hess2011-07-01
|
* renamed GitRepo to GitGravatar Joey Hess2011-06-30
| | | | It was always imported qualified as Git anyway
* generalized safeWriteFile to viaTmpGravatar Joey Hess2011-06-30
|
* fix upgrade when .git-annex has already been entirely convertedGravatar Joey Hess2011-06-24
|
* better setup of git-annex branch pushing on upgradeGravatar Joey Hess2011-06-24
|
* save state before messageGravatar Joey Hess2011-06-24
| | | | to avoid long delay after
* more upgrades fixes for bare reposGravatar Joey Hess2011-06-24
|
* fixes for upgrading bare reposGravatar Joey Hess2011-06-24
|
* layoutGravatar Joey Hess2011-06-23
|
* improve post-upgrade push instructionsGravatar Joey Hess2011-06-23
|
* remove stateDirGravatar Joey Hess2011-06-23
|
* v3 upgrade code worksGravatar Joey Hess2011-06-23
| | | | but write the index file a lot, so slow
* docsGravatar Joey Hess2011-06-22
|
* stub in v2 upgradeGravatar Joey Hess2011-06-22
|
* fixed logFileGravatar Joey Hess2011-06-22
|
* stop undoing gitattributes on uninitGravatar Joey Hess2011-06-22
v2 upgrade will undo them