diffdriver --text support options for diff

Sponsored-by: KDM on Patreon
This commit is contained in:
Joey Hess 2023-07-05 15:43:29 -04:00
parent 4195acc012
commit 3d810726af
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 11 additions and 6 deletions

View file

@ -70,7 +70,9 @@ serializeReq req@(Req {}) = map Param
parseReq :: Options -> (Req, Differ) parseReq :: Options -> (Req, Differ)
parseReq opts parseReq opts
| textDiff opts = (mk (restOptions opts), textDiffer) | textDiff opts = case separate (== "--") (restOptions opts) of
(_,[]) -> (mk (restOptions opts), textDiffer [])
(ps,rest) -> (mk rest, textDiffer ps)
| otherwise = case separate (== "--") (restOptions opts) of | otherwise = case separate (== "--") (restOptions opts) of
(c:ps, l) -> (mk l, externalDiffer c ps) (c:ps, l) -> (mk l, externalDiffer c ps)
([],_) -> badopts ([],_) -> badopts
@ -117,13 +119,13 @@ fixupReq req@(Req {}) =
externalDiffer :: String -> [String] -> Differ externalDiffer :: String -> [String] -> Differ
externalDiffer c ps = \req -> boolSystem c (map Param ps ++ serializeReq req ) externalDiffer c ps = \req -> boolSystem c (map Param ps ++ serializeReq req )
textDiffer :: Differ textDiffer :: [String] -> Differ
textDiffer req = do textDiffer diffopts req = do
putStrLn ("diff a/" ++ rPath req ++ " b/" ++ rPath req) putStrLn ("diff a/" ++ rPath req ++ " b/" ++ rPath req)
-- diff exits nonzero on difference, so ignore exit status -- diff exits nonzero on difference, so ignore exit status
void $ boolSystem "diff" void $ boolSystem "diff" $
[ Param "-u" [ Param "-u"
, Param (rOldFile req) , Param (rOldFile req)
, Param (rNewFile req) , Param (rNewFile req)
] ] ++ map Param diffopts
return True return True

View file

@ -4,7 +4,7 @@ git-annex diffdriver - git diff driver
# SYNOPSIS # SYNOPSIS
git annex diffdriver --text git annex diffdriver --text [-- --opts --]
git annex diffdriver `-- cmd --opts --` git annex diffdriver `-- cmd --opts --`
@ -42,6 +42,7 @@ set `GIT_EXTERNAL_DIFF="git-annex diffdriver -- j-c-diff --"`
# OPTIONS # OPTIONS
To diff text files with diff(1), use the "--text" option. To diff text files with diff(1), use the "--text" option.
To pass additional options to diff(1), use eg "--text -- --color --"
To use an external diff driver command, the options must start with To use an external diff driver command, the options must start with
"--" followed by the diff driver command, its options, and another "--" "--" followed by the diff driver command, its options, and another "--"

View file

@ -28,3 +28,5 @@ How about having `git annex diffdriver --text` always using `diff --text`? That
Thanks again a ton for git-annex, the Tübix2023-Workshop was well appreciated and lots of fun. 👍 Thanks again a ton for git-annex, the Tübix2023-Workshop was well appreciated and lots of fun. 👍
Yann Yann
> [[done]] --[[Joey]]