Upgrading a direct mode repository to v6 has changed to enter an adjusted unlocked branch.

This makes the direct mode to v6 upgrade able to be performed in one clone
of a repository without affecting other clones, which can continue using v5
and direct mode.
This commit is contained in:
Joey Hess 2016-04-04 13:17:24 -04:00
parent c7b06b879b
commit c3e0859846
Failed to extract signature
7 changed files with 54 additions and 43 deletions

View file

@ -347,7 +347,6 @@ into adjusted view worktrees.]
## TODOs
* Interface in webapp to enable adjustments.
* Upgrade from direct mode to v6 in unlocked branch.
* Honor annex.thin when entering an adjusted branch.
* Cloning a repo that has an adjusted branch checked out gets into an ugly
state.

View file

@ -45,47 +45,38 @@ The upgrade events, so far:
## v5 -> v6 (git-annex version 6.x)
The upgrade from v5 to v6 is handled manually. Run `git-annex upgrade`
performs the upgrade.
The upgrade from v5 to v6 is handled manually for now.
Run `git-annex upgrade` to perform the upgrade.
Warning: All places that a direct mode repository is cloned to should be
running git-annex version 6.x before you upgrade the repository.
This is necessary because the contents of the repository are changed
in the upgrade, and the old version of git-annex won't be able to
access files after the repo is upgraded.
This upgrade does away with the direct mode/indirect mode distinction.
A v6 git-annex repository can have some files locked and other files
A v6 git-annex repository can have some files locked while other files are
unlocked, and all git and git-annex commands can be used on both locked and
unlocked files. (Although for locked files to work, the filesystem
must support symbolic links..)
unlocked files. (Although for locked files to be accessible, the filesystem
must support symbolic links..
Direct mode repositories are upgraded to instead use the new
[[adjusted branches feature|git-annex-adjust]], which transparently unlocks
all locked files in the local repository.
The behavior of some commands changes in an upgraded repository:
* `git add` will add files to the annex, in unlocked mode, rather than
adding them directly to the git repository. To cause some files to be
added directly to git, you can configure `annex.largefiles`. For
example:
* `git add` will add files to the annex, rather than adding them directly
to the git repository. To cause some files to be added directly
to git, you can configure `annex.largefiles`. For example:
git config annex.largefiles "largerthan=100kb and not (include=*.c or include=*.h)"
* `git annex unlock` and `git annex lock` change how the pointer to
the annexed content is stored in git.
There is also a new `annex.thin` setting, which makes unlocked files in v6 repositories
be hard linked to their content, instead of a copy. This saves disk
space but means any modification of an unlocked file will lose the local
(and possibly only) copy of the old version.
There is also a new `annex.thin` setting, which makes unlocked files in v6
repositories be hard linked to their content, instead of a copy. This saves
disk space but means any modification of an unlocked file will lose the
local (and possibly only) copy of the old version. This is automatically
enabled when upgrading a direct mode repository, since direct mode made the
same tradeoff.
On upgrade, all files in a direct mode repository will be converted to
unlocked files with the `annex.thin` setting enabled.
The upgrade will stage changes to all annexed files in
the git repository, which you can then commit.
If a repository has some clones using direct mode and some using indirect
mode, all the files will end up unlocked in all clones after the upgrade.
See [[tips/unlocked_files/]] for more details about locked files and thin mode.
See [[tips/unlocked_files/]] for more details about locked files and thin
mode.
## v4 -> v5 (git-annex version 5.x)