summaryrefslogtreecommitdiff
path: root/Upgrade/V1.hs
Commit message (Collapse)AuthorAge
* extend Git.Queue to be able to queue more than simple git commandsGravatar Joey Hess2012-06-07
| | | | | | While I was in there, I noticed and fixed a bug in the queue size calculations. It was never encountered only because Queue.add was only ever run with 1 file in the list.
* 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.
* display "Recording state in git..." when staging the journalGravatar Joey Hess2012-04-27
| | | | | | | | A bit tricky to avoid printing it twice in a row when there are queued git commands to run and journal to stage. Added a generic way to run an action that may output multiple side messages, with only the first displayed.
* noopGravatar Joey Hess2012-04-21
|
* removed another 10 lines via ifMGravatar Joey Hess2012-03-16
|
* IO exception reworkGravatar Joey Hess2012-02-03
| | | | | | ghc 7.4 comaplains about use of System.IO.Error to catch exceptions. Ok, use Control.Exception, with variants specialized to only catch IO exceptions.
* type alias cleanupGravatar Joey Hess2011-12-31
|
* more partial function removalGravatar Joey Hess2011-12-15
| | | | | Left a few Prelude.head's in where it was checked not null and too hard to remove, etc.
* lintGravatar Joey Hess2011-11-11
|
* 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.
* clean up read/show abuseGravatar Joey Hess2011-11-08
| | | | | | | Avoid ever using read to parse a non-haskell formatted input string. show :: Key is arguably still show abuse, but displaying Keys as filenames is just too useful to give up.
* 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
* refactorGravatar Joey Hess2011-09-23
|
* go go gadget hlintGravatar Joey Hess2011-09-20
|
* code simplification thanks to applicative functorsGravatar Joey Hess2011-08-25
|
* split groups of related functions out of UtilityGravatar Joey Hess2011-08-22
|
* Fix broken upgrade from V1 repository. Closes: #638584Gravatar Joey Hess2011-08-19
| | | | | Had forgotten to keep several old versions of functions needed during this upgrade.
* 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/*
* unannex: Clean up use of git commit -a.Gravatar Joey Hess2011-07-14
| | | | | | | | This was more complex than would be expected. unannex has to use git commit -a since it's removing files from git; git commit filelist won't do. Allow commands to be added to the Git queue that have no associated files, and run such commands once.
* remove unused backend machineryGravatar Joey Hess2011-07-05
| | | | | | | | | | | | | The only remaining vestiage of backends is different types of keys. These are still called "backends", mostly to avoid needing to change user interface and configuration. But everything to do with storing keys in different backends was gone; instead different types of remotes are used. In the refactoring, lots of code was moved out of odd corners like Backend.File, to closer to where it's used, like Command.Drop and Command.Fsck. Quite a lot of dead code was removed. Several data structures became simpler, which may result in better runtime efficiency. There should be no user-visible changes.
* renamed GitRepo to GitGravatar Joey Hess2011-06-30
| | | | It was always imported qualified as Git anyway
* factor out file list stuff from GitRepoGravatar Joey Hess2011-06-29
| | | | | GitRepo is getting too large an interface; these all fit nicely into a submodule.
* remove stateDirGravatar Joey Hess2011-06-23
|
* v3 upgrade code worksGravatar Joey Hess2011-06-23
| | | | but write the index file a lot, so slow
* fixed logFileGravatar Joey Hess2011-06-22
|
* stop changing gitattributes on update from v1Gravatar Joey Hess2011-06-22
| | | | gitattributes changes are not needed, and will be removed in the v2 upgrade
* move LocationLog into Annex monad from IOGravatar Joey Hess2011-06-22
| | | | It will need to run in Annex so it can use Branch
* rename modules for data types into Types/ directoryGravatar Joey Hess2011-06-01
|
* Periodically flush git command queue, to avoid boating memory usage too much.Gravatar Joey Hess2011-04-07
| | | | | | | Since the queue is flushed in between subcommand actions being run, there should be no issues with actions that expect to queue up some stuff and have it run after they do other stuff. So I didn't have to audit for such assumptions.
* Bugfix: Keys could be received into v1 annexes from v2 annexes, via v1 ↵Gravatar Joey Hess2011-03-28
| | | | git-annex-shell. This results in some oddly named keys in the v1 annex. Recognise and fix those keys when upgrading, instead of crashing.
* responseGravatar Joey Hess2011-03-27
|
* typoGravatar Joey Hess2011-03-21
|
* upgrade messagesGravatar Joey Hess2011-03-21
|
* don't crash on upgrade if .git-annex DNEGravatar Joey Hess2011-03-19
|
* set version before running operation that can commitGravatar Joey Hess2011-03-16
|
* add explicit upgrade commandGravatar Joey Hess2011-03-16
|
* use queue when upgrading, flushing every so oftenGravatar Joey Hess2011-03-16
| | | | | | | | | | | | | | | | | Added a cheap way to query the size of a queue. runQueueAt is not the default yet only because there may be some code that expects to be able to queue some suff, do something else, and run the whole queue at the end. 10240 is an arbitrary size for the queue. If we assume annexed filenames are between 10 and 255 characters long, then the queue will build up between 100kb and 2550kb long commands. The max command line length on linux is somewhere above 20k, so this is a fairly good balance -- the queue will buffer only a few megabytes of stuff and a minimal number of commands will be run by xargs. Also, insert queue items strictly, this should save memory.
* bare repo upgrade supportGravatar Joey Hess2011-03-16
|
* don't use queue when upgradingGravatar Joey Hess2011-03-16
| | | | In a large repo, just queuing the things to do used a lot of ram.
* improve upgradeGravatar Joey Hess2011-03-16
|
* upgrades seem to fully workGravatar Joey Hess2011-03-16
|
* v1 -> v2 upgrade partially workingGravatar Joey Hess2011-03-16
| | | | still need to move location log files, and auto-commit
* upgrade groundworkGravatar Joey Hess2011-03-16
pulled in old versions of functions for working with keys Wrote a parser from old key filenames to new keys.