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. since it needs 64 bit git now.
* Build with silently-1.2.5.1 on Windows; the old one used "NUL" which * Build with silently-1.2.5.1 on Windows; the old one used "NUL" which
is not supported with recent versions of ghc. 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 -- 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 :: InitOptions -> CommandPerform
perform os = do 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 initialize
(if null (initDesc os) then Nothing else Just (initDesc os)) (if null (initDesc os) then Nothing else Just (initDesc os))
(initVersion 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 I wonder if perhaps the environment variable that the test suite sets
to communicate with itself is not working on Windows, which sometimes to communicate with itself is not working on Windows, which sometimes
has gotchas around environment variables. --[[Joey]] 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.