have init --version fail when repo is already initialized with other version

init: When the repo is already initialized, and --version requests a
different version, error out rather than silently not changing the version.
This commit is contained in:
Joey Hess 2019-08-08 14:12:46 -04:00
parent 65f34ffb4c
commit 70b71bf660
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 15 additions and 0 deletions

View file

@ -15,6 +15,9 @@ git-annex (7.20190731) UNRELEASED; urgency=medium
since it needs 64 bit git now.
* Build with silently-1.2.5.1 on Windows; the old one used "NUL" which
is not supported with recent versions of ghc.
* init: When the repo is already initialized, and --version requests a
different version, error out rather than silently not changing the
version.
-- Joey Hess <id@joeyh.name> Thu, 01 Aug 2019 00:11:56 -0400

View file

@ -51,6 +51,12 @@ start os = starting "init" (ActionItemOther (Just $ initDesc os)) $
perform :: InitOptions -> CommandPerform
perform os = do
case initVersion os of
Nothing -> noop
Just wantversion -> getVersion >>= \case
Just v | v /= wantversion ->
giveup $ "This repository is already a initialized with version " ++ show (fromRepoVersion v) ++ ", not changing to requested version."
_ -> noop
initialize
(if null (initDesc os) then Nothing else Just (initDesc os))
(initVersion os)

View file

@ -9,3 +9,9 @@ I have not managed to reproduce this outside of the test suite.
I wonder if perhaps the environment variable that the test suite sets
to communicate with itself is not working on Windows, which sometimes
has gotchas around environment variables. --[[Joey]]
Hmm, I reordered the direct mode tests to come first, and the failure went
away. Think that .t/repo gets reused, and being already a v7 repo, git annex
init --version=7 silently did not change it. (Made that error out.)
So the test suite should use different paths for the base repo in each test
pass.