diff options
author | 2016-04-13 13:34:24 -0400 | |
---|---|---|
committer | 2016-04-13 13:34:24 -0400 | |
commit | 57b41a1ee78f1181e603b5fd3c563e9b7793620f (patch) | |
tree | 3ce89f33b8419d28239069507c7897581a639a1c | |
parent | 28bdd2da48e3e7f1326cb34e38f3916bb09772a5 (diff) |
smudge: Print a warning when annex.thin is set, as git's smudge interface does not allow honoring that configuration.
-rw-r--r-- | Command/Smudge.hs | 3 | ||||
-rw-r--r-- | debian/changelog | 7 | ||||
-rw-r--r-- | doc/git-annex.mdwn | 4 | ||||
-rw-r--r-- | doc/tips/unlocked_files.mdwn | 13 |
4 files changed, 23 insertions, 4 deletions
diff --git a/Command/Smudge.hs b/Command/Smudge.hs index 6718b4908..1e169c1bf 100644 --- a/Command/Smudge.hs +++ b/Command/Smudge.hs @@ -8,6 +8,7 @@ module Command.Smudge where import Command +import qualified Annex import Annex.Content import Annex.Link import Annex.FileMatcher @@ -54,6 +55,8 @@ smudge file = do ifM (inAnnex k) ( do content <- calcRepo (gitAnnexLocation k) + whenM (annexThin <$> Annex.getGitConfig) $ + warning $ "Not able to honor annex.thin when git is checking out " ++ file ++ " (run git annex fix to re-thin files)" liftIO $ B.putStr . fromMaybe b =<< catchMaybeIO (B.readFile content) , liftIO $ B.putStr b diff --git a/debian/changelog b/debian/changelog index 05ee3dbd3..6a486b4bf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +git-annex (6.20160413) UNRELEASED; urgency=medium + + * smudge: Print a warning when annex.thin is set, as git's smudge + interface does not allow honoring that configuration. + + -- Joey Hess <id@joeyh.name> Wed, 13 Apr 2016 13:30:32 -0400 + git-annex (6.20160412) unstable; urgency=medium * adjust --unlock: Enters an adjusted branch in which all annexed files diff --git a/doc/git-annex.mdwn b/doc/git-annex.mdwn index 65b5dc701..b9d9221fd 100644 --- a/doc/git-annex.mdwn +++ b/doc/git-annex.mdwn @@ -932,8 +932,8 @@ Here are all the supported configuration settings. Set this to `true` to make unlocked files be a hard link to their content in the annex, rather than a second copy. (Only when supported by the file system, and only in repository version 6.) This can save considerable - disk space, but modification made to a file will lose the local (and - possibly only) copy of the old version. So, enable with care. + disk space, but when a modification is made to a file, you will lose the + local (and possibly only) copy of the old version. So, enable with care. After setting (or unsetting) this, you should run `git annex fix` to fix up the annexed files in the work tree to be hard links (or copies). diff --git a/doc/tips/unlocked_files.mdwn b/doc/tips/unlocked_files.mdwn index 20605b612..3a74043f0 100644 --- a/doc/tips/unlocked_files.mdwn +++ b/doc/tips/unlocked_files.mdwn @@ -135,6 +135,11 @@ make the second copy not be worth keeping: In situations like these, you may want to avoid the overhead of the second local copy of unlocked files. There's a config setting for that. +[[!template id=note text=""" +Note that setting annex.thin only has any effect on systems that support +hard links. It is supported on Windows, but not on FAT filesystems. +"""]] + git config annex.thin true After changing annex.thin, you'll want to fix up the work tree to @@ -142,8 +147,12 @@ match the new setting: git annex fix -Note that setting annex.thin only has any effect on systems that support -hard links. It is supported on Windows, but not on FAT filesystems. +Unfortunately, git's smudge interface does not let git-annex honor +the annex.thin configuration when git is checking out a file. +So, using `git checkout` to check out a different branch, or even +`git merge` can result in some non-thin files making their way into the +working tree, and using more disk space. A warning will be printed out in +this situation. You can always run `git annex fix` to re-thin such files. ## tradeoffs |