summaryrefslogtreecommitdiff
path: root/git-union-merge.hs
Commit message (Collapse)AuthorAge
* go go gadget hlintGravatar Joey Hess2011-09-20
|
* make gitDir absoluteGravatar Joey Hess2011-08-19
|
* hlint tweaksGravatar Joey Hess2011-07-15
| | | | Did all sources except Remotes/* and Command/*
* rename GitUnionMerge to Git.UnionMergeGravatar Joey Hess2011-06-30
| | | | Also, moved commit function into Git proper, it's not union merge specific.
* renamed GitRepo to GitGravatar Joey Hess2011-06-30
| | | | It was always imported qualified as Git anyway
* add journaling to speed up changes to the git-annex branchGravatar Joey Hess2011-06-23
| | | | | | | | git is slow when the index file is large and has to be rewritten each time a file is changed. To speed this up, added a journal where changes are recorded before being fed into the index file and committed to the git-annex branch. The entire journal can be fed into git with just 2 commands, and only one write of the index file.
* allow for union merges between a tree and the content in the indexGravatar Joey Hess2011-06-21
| | | | | | | | | | | | | | | This is needed for robust handling of the git-annex branch. Since changes are staged to its index as git-annex runs, and committed at the end, it's possible that git-annex is interrupted, and leaves a dirty index. When it next runs, it needs to be able to merge the git-annex branch as necessary, without losing the existing changes in the index. Note that this assumes that the git-annex branch is only modified by git-annex. Any changes to it will be lost when git-annex updates the branch. I don't see a good, inexpensive way to find changes in the git-annex branch that arn't in the index, and union merging the git-annex branch into the index every time would likewise be expensive.
* export the commit function and generalizeGravatar Joey Hess2011-06-21
|
* Branch module completeGravatar Joey Hess2011-06-21
| | | | Refactored some code that it needs into GitRepo.
* refactorGravatar Joey Hess2011-06-21
|
* moved to libraryGravatar Joey Hess2011-06-21
|
* typoGravatar Joey Hess2011-06-20
|
* reorder git-union-merge paramsGravatar Joey Hess2011-06-20
|
* allow git-union-merge to write to any refGravatar Joey Hess2011-06-20
| | | | Not just refs/heads/* branches.
* sped up git-union-mergeGravatar Joey Hess2011-06-20
| | | | | | | | Avoided the slow git add, instead inject content directly into git and populate the index all in one pass. Now this runs on my large real-world repo in 10 seconds, which is acceptable. Also lots of code cleanups.
* add git-union-mergeGravatar Joey Hess2011-06-20
This is a new git subcommand, that does a generic union merge operation between two refs, storing the result in a branch. It operates efficiently without touching the working tree. It does need to write out a temporary index file, and may need to write out some other temp files as well. This could be useful for anything that stores data in a branch, and needs to merge changes into that branch without actually checking the branch out. Since conflict handling can't be done without a working copy, the merge type is always a union merge, which is fine for data stored in log format (as git-annex does), or in non-conflicting files (as pristine-tar does). This probably belongs in git proper, but it will live in git-annex for now. --- Plan is to move .git-annex/ to a git-annex branch, and use git-union-merge to handle merging changes when pulling from remotes. Some preliminary benchmarking using real .git-annex/ data indicates that it's quite fast, except for the "git add" call, which is as slow as "git add" tends to be with a big index.