When auto-upgrading a v3 remote, avoid upgrading to version 6, instead keep it at version 5.

Fixes a bug introduced with v6 mode that I didn't notice until now.
Probably not many v3 repos left out there, and upgrading them to v6 mode
is not disastrous, only a little premature.

This commit was sponsored by Riku Voipio
This commit is contained in:
Joey Hess 2016-10-05 16:23:09 -04:00
parent f23446b60e
commit f867fc157f
No known key found for this signature in database
GPG key ID: C910D9222512E3C7
6 changed files with 14 additions and 11 deletions

View file

@ -93,7 +93,8 @@ initialize' mversion = do
Database.Keys.scanAssociatedFiles Database.Keys.scanAssociatedFiles
v <- checkAdjustedClone v <- checkAdjustedClone
case v of case v of
NeedUpgradeForAdjustedClone -> void $ upgrade True NeedUpgradeForAdjustedClone ->
void $ upgrade True versionForAdjustedClone
InAdjustedClone -> return () InAdjustedClone -> return ()
NotInAdjustedClone -> NotInAdjustedClone ->
ifM (crippledFileSystem <&&> (not <$> isBareRepo)) ifM (crippledFileSystem <&&> (not <$> isBareRepo))

View file

@ -24,6 +24,9 @@ latestVersion = "6"
supportedVersions :: [Version] supportedVersions :: [Version]
supportedVersions = ["5", "6"] supportedVersions = ["5", "6"]
versionForAdjustedClone :: Version
versionForAdjustedClone = "6"
upgradableVersions :: [Version] upgradableVersions :: [Version]
#ifndef mingw32_HOST_OS #ifndef mingw32_HOST_OS
upgradableVersions = ["0", "1", "2", "3", "4", "5"] upgradableVersions = ["0", "1", "2", "3", "4", "5"]

View file

@ -23,6 +23,8 @@ git-annex (6.20160924) UNRELEASED; urgency=medium
were not limited to: were not limited to:
- git commit -a of a large unlocked file (in v5 mode) - git commit -a of a large unlocked file (in v5 mode)
- git-annex adjust when a large file was checked into git directly - git-annex adjust when a large file was checked into git directly
* When auto-upgrading a v3 remote, avoid upgrading to version 6,
instead keep it at version 5.
-- Joey Hess <id@joeyh.name> Mon, 26 Sep 2016 16:46:19 -0400 -- Joey Hess <id@joeyh.name> Mon, 26 Sep 2016 16:46:19 -0400

View file

@ -26,5 +26,5 @@ start = do
showStart "upgrade" "." showStart "upgrade" "."
whenM (isNothing <$> getVersion) $ do whenM (isNothing <$> getVersion) $ do
initialize Nothing Nothing initialize Nothing Nothing
r <- upgrade False r <- upgrade False latestVersion
next $ next $ return r next $ next $ return r

View file

@ -26,7 +26,7 @@ checkUpgrade = maybe noop error <=< needsUpgrade
needsUpgrade :: Version -> Annex (Maybe String) needsUpgrade :: Version -> Annex (Maybe String)
needsUpgrade v needsUpgrade v
| v `elem` supportedVersions = ok | v `elem` supportedVersions = ok
| v `elem` autoUpgradeableVersions = ifM (upgrade True) | v `elem` autoUpgradeableVersions = ifM (upgrade True defaultVersion)
( ok ( ok
, err "Automatic upgrade failed!" , err "Automatic upgrade failed!"
) )
@ -37,13 +37,14 @@ needsUpgrade v
" is not supported. " ++ msg " is not supported. " ++ msg
ok = return Nothing ok = return Nothing
upgrade :: Bool -> Annex Bool upgrade :: Bool -> Version -> Annex Bool
upgrade automatic = do upgrade automatic destversion = do
upgraded <- go =<< getVersion upgraded <- go =<< getVersion
when upgraded $ when upgraded $
setVersion latestVersion setVersion destversion
return upgraded return upgraded
where where
go (Just v) | v >= destversion = return True
#ifndef mingw32_HOST_OS #ifndef mingw32_HOST_OS
go (Just "0") = Upgrade.V0.upgrade go (Just "0") = Upgrade.V0.upgrade
go (Just "1") = Upgrade.V1.upgrade go (Just "1") = Upgrade.V1.upgrade

View file

@ -19,7 +19,6 @@ import qualified Annex.Queue
import qualified Git import qualified Git
import qualified Git.LsFiles as LsFiles import qualified Git.LsFiles as LsFiles
import Backend import Backend
import Annex.Version
import Utility.FileMode import Utility.FileMode
import Utility.Tmp import Utility.Tmp
import qualified Upgrade.V2 import qualified Upgrade.V2
@ -52,16 +51,13 @@ upgrade = do
showAction "v1 to v2" showAction "v1 to v2"
ifM (fromRepo Git.repoIsLocalBare) ifM (fromRepo Git.repoIsLocalBare)
( do ( moveContent
moveContent
setVersion latestVersion
, do , do
moveContent moveContent
updateSymlinks updateSymlinks
moveLocationLogs moveLocationLogs
Annex.Queue.flush Annex.Queue.flush
setVersion latestVersion
) )
Upgrade.V2.upgrade Upgrade.V2.upgrade