summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-04-13 13:34:24 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-04-13 13:34:24 -0400
commit57b41a1ee78f1181e603b5fd3c563e9b7793620f (patch)
tree3ce89f33b8419d28239069507c7897581a639a1c
parent28bdd2da48e3e7f1326cb34e38f3916bb09772a5 (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.hs3
-rw-r--r--debian/changelog7
-rw-r--r--doc/git-annex.mdwn4
-rw-r--r--doc/tips/unlocked_files.mdwn13
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