darcs 2.14.4 → 2.14.5
raw patch · 10 files changed
+73/−47 lines, 10 files
Files
- CHANGELOG +17/−0
- darcs.cabal +1/−1
- release/distributed-context +1/−1
- src/Darcs/Repository/Format.hs +3/−3
- tests/annotate.sh +4/−4
- tests/bad-format.sh +3/−5
- tests/issue1277-repo-format.sh +4/−4
- tests/log.sh +5/−0
- tests/patch-index-creation.sh +5/−10
- tests/repoformat.sh +30/−19
CHANGELOG view
@@ -1,3 +1,20 @@+Darcs 2.14.5, 6 August 2020++ * Resolve issue2650++ This is a stupid and rather unfortunate bug that affects all previous+ versions of the 2.12 and 2.14 branch. It can lead to corruption of the+ _darcs/format file in repos where *future* darcs versions add an+ alternative format property. The bug affects commands rebase suspend,+ rebase pull, and rebase apply.++ It is possible to manually fix the corruption by deleting from+ _darcs/format strings of the form "Unknown property: ". Future releases+ will contain a work-around that automatically fixes this particular kind+ of corruption when reading the format file, in case it should ever+ happen in practice. Nevertheless we strongly recommend to upgrade and+ avoid using the darcs versions affected by this bug.+ Darcs 2.14.4, 28 April 2020 * Restored the ability to run our shell tests, at least when building
darcs.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.24 Name: darcs-version: 2.14.4+version: 2.14.5 License: GPL-2 License-file: COPYING Author: David Roundy <droundy@darcs.net>, <darcs-devel@darcs.net>
release/distributed-context view
@@ -1,1 +1,1 @@-Just "\nContext:\n\n\n[TAG 2.14.4\nBen Franksen <ben.franksen@online.de>**20200429121444\n Ignore-this: 515570fbeb07f14bf8359f4c414b27f3b75f26d03b92c1b1e35b49e3bdd9efca3d444d36989d9434\n] \n"+Just "\nContext:\n\n\n[TAG 2.14.5\nBen Franksen <ben.franksen@online.de>**20200806192304\n Ignore-this: 2c4a08e40916e6c0e2dfde4eb66752af766640f92a4dbb847812e06fc0142c6da8592d68199f6985\n] \n"
src/Darcs/Repository/Format.hs view
@@ -63,7 +63,7 @@ show HashedInventory = hashedInventoryFormat show NoWorkingDir = noWorkingDirFormat show RebaseInProgress = rebaseInProgressFormat- show (UnknownFormat f) = "Unknown format: " ++ f+ show (UnknownFormat f) = f readRepoProperty :: String -> RepoProperty readRepoProperty input@@ -167,7 +167,7 @@ wp x = case partition isKnown x of (_, []) -> Nothing (_, unknowns) -> Just . unwords $- "Can't write repository format: " : map show unknowns+ "Can't write repository: unknown formats:" : map show unknowns -- | @'transferProblem' source target@ returns 'Just' an error message if we -- cannot transfer patches from a repo in format @source@ to a repo in format@@ -192,7 +192,7 @@ where rp x | any isKnown x = Nothing rp [] = impossible- rp x = Just . unwords $ "Can't understand repository format:" : map show x+ rp x = Just . unwords $ "Can't read repository: unknown formats:" : map show x -- |'findProblems' applies a function that maps format-entries to an optional -- error message, to each repoformat entry. Returning any errors.
tests/annotate.sh view
@@ -1,6 +1,7 @@ #!/usr/bin/env bash . lib +rm -rf temp1 darcs init temp1 cd temp1 mkdir a b@@ -12,9 +13,9 @@ darcs annotate c darcs annotate c | grep "a@b.com" cd ..-rm -rf temp1 # issue1473 annotate repodir+rm -rf temp1 mkdir temp1 cd temp1 darcs init@@ -31,9 +32,9 @@ diff inner outer cd ..-rm -rf temp1 # issue2207 : annotate on directories+rm -rf temp1 darcs init temp1 cd temp1 mkdir d@@ -41,12 +42,12 @@ darcs record -lam 'p1' darcs annotate d | grep 'p1' cd ..-rm -rf temp1 # issue1473 - check that annotate works with and without # repodir and with "." argument. It should fail with the empty string as # a single argument and without any arguments. +rm -rf temp1 darcs init temp1 cd temp1 echo 'Example content.' > f@@ -61,4 +62,3 @@ darcs annotate --repodir=temp1 f not darcs annotate --repodir=temp1 not darcs annotate --repodir=temp1 ''-rm -rf temp1
tests/bad-format.sh view
@@ -20,12 +20,10 @@ cat temp2/_darcs/format -rm -rf temp1+rm -rf temp3 -not darcs get temp2 temp1 2> err+not darcs get temp2 temp3 2> err cat err grep intentional-error err-grep 'understand repository format' err--rm -rf temp1 temp2+grep -i "read repository.*unknown format" err
tests/issue1277-repo-format.sh view
@@ -33,14 +33,14 @@ echo impossible >> _darcs/format echo 'Example content.' > f not darcs add f > log 2>&1- grep "Can't understand repository format" log+ grep -i "read repository.*unknown format" log not darcs whatsnew > log 2>&1- grep "Can't understand repository format" log+ grep -i "read repository.*unknown format" log not darcs init > log 2>&1 grep "You may not run this command in a repository" log- grep "Can't understand repository format" log+ grep -i "read repository.*unknown format" log cd .. not darcs whatsnew --repodir R2 > log 2>&1 grep "R2 looks like a repository directory," log- grep "Can't understand repository format" log+ grep -i "read repository.*unknown format" log cd ..
tests/log.sh view
@@ -62,6 +62,7 @@ # Some tests for the output of log when combined with move. +rm -rf temp2 darcs init temp2 cd temp2 date > foo@@ -95,6 +96,7 @@ # darcs changes should be able to pull up the history for a file # using its moved and not-yet recorded new name +rm -rf temp3 darcs init temp3 cd temp3 touch b@@ -107,6 +109,7 @@ ## Asking "darcs log" about an unrecorded file d/f will list the ## patch that creates the parent directory d/ (instead of no patches). +rm -rf temp4 darcs init temp4 cd temp4 mkdir d@@ -120,6 +123,7 @@ ## issue1632 - 'darcs changes d/f' should not list any changes, ## where d is part of the repo and f is a non-existent file. +rm -rf temp5 darcs init temp5 cd temp5 @@ -136,6 +140,7 @@ ## issue1888 - changes --context is broken when topmost patch ## is a clean tag. +rm -rf temp6 darcs init temp6 cd temp6
tests/patch-index-creation.sh view
@@ -32,32 +32,29 @@ ## SOFTWARE. . lib-rm -rf R S +rm -rf R darcs init --repo R cd R darcs show patch-index | grep 'Patch Index is not yet created.' # init- cd ..-rm -rf R +rm -rf R darcs init --repo R --with-patch-index cd R darcs show patch-index | grep 'Patch Index is in sync with repo.' # init --patch-index- cd .. +rm -rf S darcs clone R S cd S darcs show patch-index | grep 'Patch Index is not yet created.' # clone- cd ..-rm -rf S +rm -rf S darcs clone R S --with-patch-index cd S darcs show patch-index | grep 'Patch Index is in sync with repo.' # clone --patch-index- cd .. rm -rf repo repo2@@ -65,10 +62,9 @@ echo 'I understand the consequences of my action' | darcs convert darcs-2 repo repo2 cd repo2 darcs show patch-index | grep 'Patch Index is not yet created.' # convert- cd ..-rm -rf repo repo2 +rm -rf repo repo2 gunzip -c $TESTDATA/simple-v1.tgz | tar xf - echo 'I understand the consequences of my action' | darcs convert darcs-2 repo repo2 --with-patch-index cd repo2@@ -96,4 +92,3 @@ darcs show patch-index | grep 'Patch Index is not yet created.' # log -a file --no-patch-index cd ..-rm -rf R S repo repo2
tests/repoformat.sh view
@@ -2,13 +2,14 @@ . lib -rm -rf garbage future+rm -rf garbage mkdir garbage cd garbage-darcs init-echo gobbledygook > _darcs/format+darcs init+echo gobbledygook >> _darcs/format cd .. +rm -rf future mkdir future cd future darcs init@@ -21,25 +22,24 @@ EOF cd .. - # check the rules for reading and writing ## garbage repo: we don't understand anything-# get garbage repo+rm -rf temp1 not darcs get garbage temp1 2> log-grep -i "can't understand repository format" log-rm -rf temp1 log+grep -i "read repository.*unknown format" log # pull from garbage repo+rm -rf temp1 mkdir temp1 cd temp1 darcs init not darcs pull ../garbage 2> log-grep -i "can't understand repository format" log+grep -i "read repository.*unknown format" log cd ..-rm -rf temp1 # apply in garbage repo+rm -rf temp1 mkdir temp1 cd temp1 darcs init@@ -48,18 +48,23 @@ darcs send -a --context=empty-context -o ../bundle.dpatch . cd ../garbage not darcs apply ../bundle.dpatch 2> log-grep -i "can't understand repository format" log+grep -i "read repository.*unknown format" log cd ..-rm -rf temp1 bundle.dpatch # add in garbage repo cd garbage touch toto not darcs add toto 2> log-grep -i "can't understand repository format" log+grep -i "read repository.*unknown format" log cd .. -rm -rf garbage+# rebase suspend in garbage repo+cd garbage+not darcs rebase suspend --last=1 2> log+grep -i "read repository.*unknown format" log+# issue2650+not grep 'Unknown format' _darcs/format+cd .. ## future repo: we don't understand one@@ -70,6 +75,7 @@ # get future repo: ok # --to-match is needed because of bug###+rm -rf temp1 darcs get future temp1 --to-match "name titi" cd temp1 darcs changes@@ -77,18 +83,18 @@ darcs add toto darcs record -am 'blah' cd ..-rm -rf temp1 # pull from future repo: ok+rm -rf temp1 mkdir temp1 cd temp1 darcs init darcs pull ../future -a darcs changes | grep titi cd ..-rm -rf temp1 # apply in future repo: !ok+rm -rf temp1 mkdir temp1 cd temp1 darcs init@@ -98,15 +104,20 @@ cd ../future not darcs apply ../bundle.dpatch 2> log cat log-grep -i "can't write repository format" log+grep -i "write repository.*unknown format" log cd ..-rm -rf temp1 bundle.dpatch # record in future repo: !ok cd future touch toto not darcs add toto 2> log-grep -i "can't write repository format" log+grep -i "write repository.*unknown format" log cd .. -rm -rf future #No future!+# rebase suspend in future repo+cd future+not darcs rebase suspend --last=1 2> log+grep -i "write repository.*unknown format" log+# issue2650+not grep 'Unknown format' _darcs/format+cd ..