Skip to content
  • Joey Hess's avatar
    add git-union-merge · c835166a
    Joey Hess authored
    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.
    c835166a