From 396e5cff54d23a035aa3b7c199ee609b7f7bda65 Mon Sep 17 00:00:00 2001 From: Mirek Kratochvil Date: Sun, 13 Jul 2025 22:30:41 +0200 Subject: [PATCH] readme skeleton --- Opts.hs | 4 ++-- README.md | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 README.md diff --git a/Opts.hs b/Opts.hs index 1901c53..761bda0 100644 --- a/Opts.hs +++ b/Opts.hs @@ -188,10 +188,10 @@ cmd = $ mconcat [ command "merge" $ info cmdDiff3 - $ progDesc "diff3-style merge of changes" + $ progDesc "diff3-style merge of two changesets" , command "git" $ info cmdGitMerge - $ progDesc "try to merge unmerged git tree" + $ progDesc "automerge unmerged files in git conflict" ] parseOpts :: IO (Config, Command) diff --git a/README.md b/README.md new file mode 100644 index 0000000..caec0e4 --- /dev/null +++ b/README.md @@ -0,0 +1,71 @@ + +# werge (merge weird stuff) + +This is a partial work-alike of `diff3` and `git merge` and other merge-y tools that is capable of + +- merging token-size changes instead of line-size ones +- largely ignoring changes in blank characters + +These properties are great for several use-cases: + +- merging free-flowing text changes (such as in TeX) irrespective of linebreaks + etc, +- merging of changesets that use different code formatters +- minimizing the conflict size of tiny changes to a few characters, making them + easier to resolve + +Better docs is WIP + +## Installation + +```sh +cabal install +``` + +## Help & features + +``` +werge -- blanks-friendly mergetool for tiny interdwindled changes + +Usage: werge [(-F|--tok-filter FILTER) | (-i|--simple-tokens) | + (-I|--full-tokens)] [-s|--spaces (normal|conflict|my|old|your)] + [-C|--expand-context N] [--no-zeal | (-z|--zeal)] + [--label-start STRING] [--label-mo STRING] [--label-oy STRING] + [--label-end STRING] [--conflict-overlaps] [--conflict-separate] + COMMAND + +Available options: + -F,--tok-filter FILTER external program to separate the text to tokens + -i,--simple-tokens use wider character class to separate the tokens + (results in larger tokens and ignores case) + -I,--full-tokens separate characters by all known character classes + (default) + -s,--spaces (normal|conflict|my|old|your) + mode of merging the space-only changes; instead of + usual resolution one may choose to always conflict or + to default the space from the source files (default: + normal) + -C,--expand-context N Consider changes that are at most N tokens apart to + be a single change. Zero may cause bad resolutions of + near conflicting edits. (default: 1) + --no-zeal avoid zealous mode (default) + -z,--zeal try to zealously minify conflicts, potentially + resolving them + --label-start STRING label for beginning of the conflict + (default: "<<<<<") + --label-mo STRING separator of local edits and original + (default: "|||||") + --label-oy STRING separator of original and other people's edits + (default: "=====") + --label-end STRING label for end of the conflict (default: ">>>>>") + --conflict-overlaps do not resolve overlapping changes + --conflict-separate do not resolve separate (non-overlapping) changes + -h,--help Show this help text + --version Show version information + +Available commands: + merge diff3-style merge of two changesets + git automerge unmerged files in git conflict + +werge is a free software, use it accordingly. +```