fix autoupgrade from v6 to go to v7, not v5
v3 and v4 still autoupgrade to v5 And a few more upgrade doc updates.
This commit is contained in:
parent
234842a347
commit
b996b38b4f
4 changed files with 25 additions and 10 deletions
|
@ -14,6 +14,8 @@ import Config
|
||||||
import Types.RepoVersion
|
import Types.RepoVersion
|
||||||
import qualified Annex
|
import qualified Annex
|
||||||
|
|
||||||
|
import qualified Data.Map as M
|
||||||
|
|
||||||
defaultVersion :: RepoVersion
|
defaultVersion :: RepoVersion
|
||||||
defaultVersion = RepoVersion 5
|
defaultVersion = RepoVersion 5
|
||||||
|
|
||||||
|
@ -33,8 +35,12 @@ upgradableVersions = map RepoVersion [0..6]
|
||||||
upgradableVersions = map RepoVersion [2..6]
|
upgradableVersions = map RepoVersion [2..6]
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
autoUpgradeableVersions :: [RepoVersion]
|
autoUpgradeableVersions :: M.Map RepoVersion RepoVersion
|
||||||
autoUpgradeableVersions = map RepoVersion [3, 4, 6]
|
autoUpgradeableVersions = M.fromList
|
||||||
|
[ (RepoVersion 3, RepoVersion 5)
|
||||||
|
, (RepoVersion 4, RepoVersion 5)
|
||||||
|
, (RepoVersion 6, RepoVersion 7)
|
||||||
|
]
|
||||||
|
|
||||||
versionField :: ConfigKey
|
versionField :: ConfigKey
|
||||||
versionField = annexConfig "version"
|
versionField = annexConfig "version"
|
||||||
|
|
|
@ -3,6 +3,9 @@ git-annex (7.20181025) UNRELEASED; urgency=medium
|
||||||
* Added v7 repository mode. v6 upgrades automatically to v7, but
|
* Added v7 repository mode. v6 upgrades automatically to v7, but
|
||||||
v5 is still the default for now. While v6 was always experimental
|
v5 is still the default for now. While v6 was always experimental
|
||||||
to some degree, its successor v7 is ready for production use!
|
to some degree, its successor v7 is ready for production use!
|
||||||
|
* Direct mode repositories are deprecated; they have many problems
|
||||||
|
that v7 fixes, so upgrading them now is recommended (but not yet
|
||||||
|
required): git annex upgrade --version=7
|
||||||
* At long last there's a way to hide annexed files whose content
|
* At long last there's a way to hide annexed files whose content
|
||||||
is missing from the working tree: git-annex adjust --hide-missing
|
is missing from the working tree: git-annex adjust --hide-missing
|
||||||
See https://git-annex.branchable.com/tips/hiding_missing_files/
|
See https://git-annex.branchable.com/tips/hiding_missing_files/
|
||||||
|
|
18
Upgrade.hs
18
Upgrade.hs
|
@ -22,18 +22,24 @@ import qualified Upgrade.V4
|
||||||
import qualified Upgrade.V5
|
import qualified Upgrade.V5
|
||||||
import qualified Upgrade.V6
|
import qualified Upgrade.V6
|
||||||
|
|
||||||
|
import qualified Data.Map as M
|
||||||
|
|
||||||
checkUpgrade :: RepoVersion -> Annex ()
|
checkUpgrade :: RepoVersion -> Annex ()
|
||||||
checkUpgrade = maybe noop giveup <=< needsUpgrade
|
checkUpgrade = maybe noop giveup <=< needsUpgrade
|
||||||
|
|
||||||
needsUpgrade :: RepoVersion -> Annex (Maybe String)
|
needsUpgrade :: RepoVersion -> Annex (Maybe String)
|
||||||
needsUpgrade v
|
needsUpgrade v
|
||||||
| v `elem` supportedVersions = ok
|
| v `elem` supportedVersions = ok
|
||||||
| v `elem` autoUpgradeableVersions = ifM (upgrade True defaultVersion)
|
| otherwise = case M.lookup v autoUpgradeableVersions of
|
||||||
( ok
|
Nothing
|
||||||
, err "Automatic upgrade failed!"
|
| v `elem` upgradableVersions ->
|
||||||
)
|
err "Upgrade this repository: git-annex upgrade"
|
||||||
| v `elem` upgradableVersions = err "Upgrade this repository: git-annex upgrade"
|
| otherwise ->
|
||||||
| otherwise = err "Upgrade git-annex."
|
err "Upgrade git-annex."
|
||||||
|
Just newv -> ifM (upgrade True newv)
|
||||||
|
( ok
|
||||||
|
, err "Automatic upgrade failed!"
|
||||||
|
)
|
||||||
where
|
where
|
||||||
err msg = return $ Just $ "Repository version " ++
|
err msg = return $ Just $ "Repository version " ++
|
||||||
show (fromRepoVersion v) ++
|
show (fromRepoVersion v) ++
|
||||||
|
|
|
@ -11,9 +11,9 @@ understand how to update its working tree.
|
||||||
|
|
||||||
## deprecated
|
## deprecated
|
||||||
|
|
||||||
Direct mode is deprecated! Intead, git-annex v6 repositories can simply
|
Direct mode is deprecated! Intead, git-annex v7 repositories can simply
|
||||||
have files that are unlocked and thus can be directly accessed and
|
have files that are unlocked and thus can be directly accessed and
|
||||||
modified. See [[upgrades]] for details about the transition to v6
|
modified. See [[upgrades]] for details about the transition to v7
|
||||||
repositories.
|
repositories.
|
||||||
|
|
||||||
## enabling (and disabling) direct mode
|
## enabling (and disabling) direct mode
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue