git-annex-shell
git-remote-annex
man
-git-union-merge
-git-union-merge.1
doc/.ikiwiki
html
*.tix
git-remote-annex: git-annex
ln -sf git-annex git-remote-annex
-# These are not built normally.
-git-union-merge.1: doc/git-union-merge.mdwn
- ./Build/mdwn2man git-union-merge 1 doc/git-union-merge.mdwn > git-union-merge.1
-git-union-merge:
- $(GHC) --make -threaded $@
-
install-mans: mans
install -d $(DESTDIR)$(PREFIX)/$(SHAREDIR)/man/man1
install -m 0644 man/*.1 $(DESTDIR)$(PREFIX)/$(SHAREDIR)/man/man1
doc/.ikiwiki html dist tags Build/SysConfig Build/Version \
Setup Build/InstallDesktopFile Build/Standalone \
Build/DistributionUpdate Build/BuildVersion Build/MakeMans \
- git-annex-shell git-remote-annex git-union-merge .tasty-rerun-log
+ git-annex-shell git-remote-annex .tasty-rerun-log
find . -name \*.o -exec rm {} \;
find . -name \*.hi -exec rm {} \;
ghc -Wall -fno-warn-tabs --make Build/DistributionUpdate -XLambdaCase -XPackageImports
./Build/DistributionUpdate
-.PHONY: git-annex git-union-merge tags
+.PHONY: git-annex tags
git-annex rules and is a marvelous tool.
I wanted to try the union merging to resolve merge conflicts on non-annexed files. It's not ideal, but might be better than repeated `git annex assist|sync` eventually adding the merge conflict markers `<<<<<<<<<` and the like to the files, breaking things like `.gitattributes` syntax which in turn has more devastating lockup consequences...
+
+> removed it, [[done]] --[[Joey]]
+++ /dev/null
-# NAME
-
-git-union-merge - Join branches together using a union merge
-
-# SYNOPSIS
-
-git union-merge ref ref newref
-
-# DESCRIPTION
-
-Does a union merge between two refs, storing the result in the
-specified newref.
-
-The union merge will always succeed, but assumes that files can be merged
-simply by concatenating together lines from all the oldrefs, in any order.
-So, this is useful only for branches containing log-type data.
-
-Note that this does not touch the checked out working copy. It operates
-entirely on git refs and branches.
-
-# EXAMPLE
-
- git union-merge git-annex origin/git-annex refs/heads/git-annex
-
-Merges the current git-annex branch, and a version from origin,
-storing the result in the git-annex branch.
-
-# BUGS
-
-File modes are not currently merged.
-
-# AUTHOR
-
-Joey Hess <id@joeyh.name>
-
-<http://git-annex.branchable.com/>
-
-Warning: Automatically converted into a man page by mdwn2man. Edit with care
objects.
The files stored in this branch are all designed to be auto-merged
-using git's [[union merge driver|git-union-merge]]. So each line
+by simply concacenating them together. So each line
has a timestamp, to allow the most recent information to be identified.
### `uuid.log`
+++ /dev/null
-{- git-union-merge program
- -
- - Copyright 2011 Joey Hess <id@joeyh.name>
- -
- - Licensed under the GNU AGPL version 3 or higher.
- -}
-
-import System.Environment
-
-import Common
-import qualified Git.UnionMerge
-import qualified Git.Config
-import qualified Git.CurrentRepo
-import qualified Git.Branch
-import qualified Git.Index
-import qualified Git
-import Utility.FileSystemEncoding
-
-header :: String
-header = "Usage: git-union-merge ref ref newref"
-
-usage :: IO a
-usage = error $ "bad parameters\n\n" ++ header
-
-tmpIndex :: Git.Repo -> FilePath
-tmpIndex g = Git.localGitDir g </> "index.git-union-merge"
-
-setup :: Git.Repo -> IO ()
-setup = cleanup -- idempotency
-
-cleanup :: Git.Repo -> IO ()
-cleanup g = nukeFile $ tmpIndex g
-
-parseArgs :: IO [String]
-parseArgs = do
- args <- getArgs
- if length args /= 3
- then usage
- else return args
-
-main :: IO ()
-main = do
- useFileSystemEncoding
- [aref, bref, newref] <- map Git.Ref <$> parseArgs
- g <- Git.Config.read =<< Git.CurrentRepo.get
- _ <- Git.Index.override (tmpIndex g) g
- setup g
- Git.UnionMerge.merge aref bref g
- _ <- Git.Branch.commit Git.Branch.ManualCommit False "union merge" newref [aref, bref] g
- cleanup g