Merge remote-tracking branch 'branchable/master'

This commit is contained in:
Joey Hess 2011-03-23 12:23:58 -04:00
commit e096c8278a
7 changed files with 146 additions and 1 deletions

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://joey.kitenet.net/"
nickname="joey"
subject="comment 2"
date="2011-03-23T15:05:12Z"
content="""
There's a simple test -- just configure annex.diskreserve to be say, 10 megabytes less than the total free space on your disk. Then try to git annex get a 11 mb file, and a 9 mb file. :)
"""]]

View file

@ -0,0 +1,25 @@
[[!comment format=mdwn
username="http://joey.kitenet.net/"
nickname="joey"
subject="comment 3"
date="2011-03-23T15:13:33Z"
content="""
Alternatively, you can just load it up in ghci and see if it reports numbers that make sense:
<pre>
joey@gnu:~/src/git-annex>make StatFS.hs
hsc2hs StatFS.hsc
perl -i -pe 's/^{-# INCLUDE.*//' StatFS.hs
joey@gnu:~/src/git-annex>ghci StatFS.hs
GHCi, version 6.12.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling StatFS ( StatFS.hs, interpreted )
Ok, modules loaded: StatFS.
*StatFS> s <- getFileSystemStats \".\"
Loading package bytestring-0.9.1.5 ... linking ... done.
*StatFS> s
Just (FileSystemStats {fsStatBlockSize = 4096, fsStatBlockCount = 7427989, fsStatByteCount = 30425042944, fsStatBytesFree = 2528489472, fsStatBytesAvailable = 2219384832, fsStatBytesUsed = 27896553472})
</pre>
"""]]

View file

@ -0,0 +1,30 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
nickname="Jimmy"
subject="comment 4"
date="2011-03-23T16:02:34Z"
content="""
Ok, well it looks like it isn't doing anything useful at all.
<pre>
jtang@x00:~/develop/git-annex $ make StatFS.hs
hsc2hs StatFS.hsc
perl -i -pe 's/^{-# INCLUDE.*//' StatFS.hs
jtang@x00:~/develop/git-annex $ ghci StatFS.hs
GHCi, version 6.12.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
[1 of 1] Compiling StatFS ( StatFS.hs, interpreted )
Ok, modules loaded: StatFS.
*StatFS> s <- getFileSystemStats \".\"
Loading package bytestring-0.9.1.7 ... linking ... done.
*StatFS> s
Just (FileSystemStats {fsStatBlockSize = 0, fsStatBlockCount = 1048576, fsStatByteCount = 0, fsStatBytesFree = 0, fsStatBytesAvailable = 0, fsStatBytesUsed = 0})
*StatFS> s <- getFileSystemStats \"/\"
*StatFS> s
Just (FileSystemStats {fsStatBlockSize = 0, fsStatBlockCount = 1048576, fsStatByteCount = 0, fsStatBytesFree = 0, fsStatBytesAvailable = 0, fsStatBytesUsed = 0})
*StatFS>
</pre>
"""]]

View file

@ -0,0 +1,59 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawkSq2FDpK2n66QRUxtqqdbyDuwgbQmUWus"
nickname="Jimmy"
subject="comment 5"
date="2011-03-23T16:14:22Z"
content="""
Actually I may have just been stupid and should have read the man page on statfs...
<pre>
jtang@x00:~/develop/git-annex $ git diff
diff --git a/StatFS.hsc b/StatFS.hsc
index 8b453dc..e10b2dd 100644
--- a/StatFS.hsc
+++ b/StatFS.hsc
@@ -53,7 +53,7 @@ import Foreign.C.String
import Data.ByteString (useAsCString)
import Data.ByteString.Char8 (pack)
-#if defined (__FreeBSD__)
+#if defined (__FreeBSD__) || defined (__APPLE__)
# include <sys/param.h>
# include <sys/mount.h>
#else
@@ -84,8 +84,8 @@ data CStatfs
#ifdef UNKNOWN
#warning free space checking code not available for this OS
#else
-#if defined(__FreeBSD__)
-foreign import ccall unsafe \"sys/mount.h statfs\"
+#if defined(__FreeBSD__) || defined (__APPLE__)
+foreign import ccall unsafe \"sys/mount.h statfs64\"
#else
foreign import ccall unsafe \"sys/vfs.h statfs64\"
#endif
</pre>
yields this...
<pre>
jtang@x00:~/develop/git-annex $ ghci StatFS.hs
GHCi, version 6.12.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
[1 of 1] Compiling StatFS ( StatFS.hs, interpreted )
Ok, modules loaded: StatFS.
*StatFS> s <- getFileSystemStats \".\"
Loading package bytestring-0.9.1.7 ... linking ... done.
*StatFS> s
Just (FileSystemStats {fsStatBlockSize = 4096, fsStatBlockCount = 244106668, fsStatByteCount = 999860912128, fsStatBytesFree = 423097798656, fsStatBytesAvailable = 422835654656, fsStatBytesUsed = 576763113472})
*StatFS>
</pre>
we could just stick another if defined (__APPLE__) instead of what I previously had and it looks like it will do the right thing on OSX.
"""]]

View file

@ -0,0 +1,12 @@
[[!comment format=mdwn
username="http://joey.kitenet.net/"
nickname="joey"
subject="comment 2"
date="2011-03-23T15:18:29Z"
content="""
Because I haven't learned Cabal yet.
But also because I've had bad experiences with both a) tying a particular program to a particular language's pet build system and then having to add ugliness when I later need to do something in the build that has nothing to do with that language and b) as a user, needing to deal with the pet build systems of languages when I just need to make some small change to the build process that is trivial in a Makefile.
With that said, I do have a configure program written in Haskell, so at least it doesn't use autotools. :)
"""]]

View file

@ -13,4 +13,7 @@ USB drive.
Notice that you had to git pull from laptop first, this lets git-annex know
what has changed in laptop, and so it knows about the files present there and
can get them.
can get them. The alternate approach is to set up a central bare repository,
and always push changes to it after committing them, then in the above,
you can just pull from the central repository to get synced up to all
repositories.

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://joey.kitenet.net/"
nickname="joey"
subject="comment 4"
date="2011-03-23T15:28:00Z"
content="""
I would not mind if the walkthrough documented the central git repo case. But I don't want to complicate it unduely (it's long enough), and it's important that the fully distributed case be shown to work, and I assume that people already have basic git knowledge, so documenting the details of set up of a bare git repo is sorta out of scope. (There are also a lot of way to do it, using github, or gitosis, or raw git, etc.)
"""]]