fix obviously wrong attoparsec parser
takeByteString can only be used at the end of a parser, not before other input. This was a dumb enough mistake that I audited the rest of the code base for similar mistakes. Pity that attoparsec cannot avoid it at the type level. Fixes git-annex forget propagation between repositories. (reversion introduced in version 7.20190122) Sponsored-by: Brock Spratlen on Patreon
This commit is contained in:
parent
65ca0b49d6
commit
6992250d63
5 changed files with 31 additions and 1 deletions
|
@ -2,6 +2,8 @@ git-annex (10.20220128) UNRELEASED; urgency=medium
|
|||
|
||||
* adb: Avoid find failing with "Argument list too long"
|
||||
* Pass --no-textconv when running git diff internally.
|
||||
* Fix git-annex forget propagation between repositories.
|
||||
(reversion introduced in version 7.20190122)
|
||||
|
||||
-- Joey Hess <id@joeyh.name> Mon, 31 Jan 2022 13:14:42 -0400
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ import Annex.CatFile
|
|||
|
||||
import qualified Data.Set as S
|
||||
import Data.Either
|
||||
import Data.Char
|
||||
import Data.ByteString (ByteString)
|
||||
import Data.ByteString.Builder
|
||||
import qualified Data.ByteString.Lazy as L
|
||||
|
@ -82,7 +83,7 @@ parseTransitionsStrictly source b =
|
|||
|
||||
transitionLineParser :: A.Parser TransitionLine
|
||||
transitionLineParser = do
|
||||
t <- (parsetransition <$> A.takeByteString)
|
||||
t <- parsetransition <$> A.takeTill (== sp)
|
||||
_ <- A8.char ' '
|
||||
c <- vectorClockParser
|
||||
return $ TransitionLine c t
|
||||
|
@ -90,6 +91,7 @@ transitionLineParser = do
|
|||
parsetransition b = case readish (decodeBS b) of
|
||||
Just t -> Right t
|
||||
Nothing -> Left b
|
||||
sp = fromIntegral (ord ' ')
|
||||
|
||||
combineTransitions :: [Transitions] -> Transitions
|
||||
combineTransitions = S.unions
|
||||
|
|
|
@ -31,3 +31,5 @@ Reproduction script:
|
|||
git-annex log foo
|
||||
|
||||
--[[Joey]]
|
||||
|
||||
> [[fixed|done]] --[[Joey]]
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 1"""
|
||||
date="2022-02-07T17:49:37Z"
|
||||
content="""
|
||||
Reversion introduced in [[!commit 2eadb6cd68073a905e8ff32cc8093a43d0b05c81]].
|
||||
Parsing of the transitions log silently failed, so all propagation of
|
||||
transitions was broken.
|
||||
"""]]
|
|
@ -0,0 +1,15 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 2"""
|
||||
date="2022-02-07T16:43:26Z"
|
||||
content="""
|
||||
I'm sure this used to work, but I've confirmed it no longer does
|
||||
and opened a bug report [[sync_does_not_propagate_forgetfulness]]
|
||||
|
||||
Update: The bug I found is fixed. I'm fairly sure it caused the problem you
|
||||
saw as well, although I have not tried to reproduce your exact situation.
|
||||
|
||||
Once you upgrade to the next release of git-annex (or tomorrow's daily
|
||||
build), you will need to re-run the git-annex forget command, and then it
|
||||
should propagate that new forgetting properly.
|
||||
"""]]
|
Loading…
Reference in a new issue