Merge branch 'master' into incrementalfsck

This commit is contained in:
Joey Hess 2013-10-11 14:21:06 -04:00
commit 7e723d2f56
41 changed files with 620 additions and 28 deletions

View file

@ -124,14 +124,16 @@ perform relaxed url file = ifAnnexed file addurl geturl
next $ return True
| otherwise = do
headers <- getHttpHeaders
ifM (Url.withUserAgent $ Url.check url headers $ keySize key)
( do
(exists, samesize) <- Url.withUserAgent $ Url.check url headers $ keySize key
if exists && samesize
then do
setUrlPresent key url
next $ return True
, do
warning $ "failed to verify url exists: " ++ url
else do
warning $ if exists
then "url does not have expected file size (use --relaxed to bypass this check) " ++ url
else "failed to verify url exists: " ++ url
stop
)
addUrlFile :: Bool -> URLString -> FilePath -> Annex Bool
addUrlFile relaxed url file = do

View file

@ -70,7 +70,7 @@ data StatInfo = StatInfo
type StatState = StateT StatInfo Annex
def :: [Command]
def = [command "status" paramPaths seek
def = [noCommit $ command "status" paramPaths seek
SectionQuery "shows status information about the annex"]
seek :: [CommandSeek]

View file

@ -241,7 +241,7 @@ inAnnex r key
where
checkhttp headers = do
showChecking r
ifM (anyM (\u -> Url.withUserAgent $ Url.check u headers (keySize key)) (keyUrls r key))
ifM (anyM (\u -> Url.withUserAgent $ Url.checkBoth u headers (keySize key)) (keyUrls r key))
( return $ Right True
, return $ Left "not found"
)

View file

@ -118,7 +118,7 @@ checkKey' key us = firsthit us (Right False) $ \u -> do
#endif
DefaultDownloader -> do
headers <- getHttpHeaders
Right <$> Url.withUserAgent (Url.check u' headers $ keySize key)
Right <$> Url.withUserAgent (Url.checkBoth u' headers $ keySize key)
where
firsthit [] miss _ = return miss
firsthit (u:rest) _ a = do

View file

@ -11,6 +11,7 @@ module Utility.Url (
URLString,
UserAgent,
check,
checkBoth,
exists,
download,
downloadQuiet
@ -32,12 +33,18 @@ type UserAgent = String
{- Checks that an url exists and could be successfully downloaded,
- also checking that its size, if available, matches a specified size. -}
check :: URLString -> Headers -> Maybe Integer -> Maybe UserAgent -> IO Bool
checkBoth :: URLString -> Headers -> Maybe Integer -> Maybe UserAgent -> IO Bool
checkBoth url headers expected_size ua = do
v <- check url headers expected_size ua
return (fst v && snd v)
check :: URLString -> Headers -> Maybe Integer -> Maybe UserAgent -> IO (Bool, Bool)
check url headers expected_size = handle <$$> exists url headers
where
handle (False, _) = False
handle (True, Nothing) = True
handle (True, s) = expected_size == s
handle (False, _) = (False, False)
handle (True, Nothing) = (True, True)
handle (True, s) = case expected_size of
Just _ -> (True, expected_size == s)
Nothing -> (True, True)
{- Checks that an url exists and could be successfully downloaded,
- also returning its size if available.

3
debian/changelog vendored
View file

@ -12,6 +12,9 @@ git-annex (4.20131003) UNRELEASED; urgency=low
appends stuff to it to make a temporary filename. Closes: #725512
* status: Fix space leak in local mode, introduced in version 4.20130920.
* import: Skip .git directories.
* Remove bogus runshell loop check.
* addurl: Improve message when adding url with wrong size to existing file.
* Fixed handling of URL keys that have no recorded size.
-- Joey Hess <joeyh@debian.org> Thu, 03 Oct 2013 15:41:24 -0400

View file

@ -34,6 +34,36 @@ git-annex folders. Just like that you can share files.
----
## Requirements
For local pairing to work, you must have sshd (ssh server daemon) installed and working on all machines involved. That means you must allow at least local connections to sshd. On most Linux distributions, sshd is packaged in either openssh (openSUSE) or openssh-server (Debian).
It is highly recommended that you disable root login, disable password login to sshd and just enable key based authentication instead. No one will be able to login without your key.
To disable root, after installing sshd, edit the sshd config (usually /etc/ssh/sshd_config file) and disable root login by adding:
PermitRootLogin no
Restart sshd. See man sshd_config for details.
To disable password login and enable key based authentication, edit the sshd config (just like above) by uncommenting and changing the following options:
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
PubkeyAuthentication yes
Restart sshd. See man sshd_config for details.
You can also restrict login to your local network only (not allow internet users from trying to log into your computer). Edit the hosts.deny file (usually /etc/hosts.deny) by adding the following:
sshd : ALL EXCEPT LOCAL
Do note that restricting login to your local network may or may not block git-annex. Also note that this will not work on Mac OSX because Apple decided to disable this feature and replace it with a crippled version made by Apple.
## Tips
Something to keep in mind, especially if pairing doesn't seem to be
working, is that the two computers need to be on the same network for this
pairing process to work. Sometimes a building will have more than one

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawmVV_nBwlsyCv53BXoJt8YpCX_wZPfzpyo"
nickname="Peter"
subject="Progress"
date="2013-10-10T01:17:08Z"
content="""
Is there any type of script / tool / patch which does the --fast but with a copy instead of only a hard link? Can someone point me towards how I'm supposed to do this? I'm a technical user, however I don't really fancy having try to go learn the source code of git-annex to fix this really bad flaw :-/
"""]]

View file

@ -0,0 +1,104 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawmVV_nBwlsyCv53BXoJt8YpCX_wZPfzpyo"
nickname="Peter"
subject="Productive Annoyance"
date="2013-10-10T04:30:47Z"
content="""
Ok, so I'm annoyed by this enough (and desperate enough to want to get my data back) that I wrote up a few scripts to help with this. I make no claims regarding how well these will work, but they seem to work with some minimal testing on a Fedora 17 machine.
READ THROUGH THESE SCRIPTS BEFORE RUNNING THEM TO MAKE SURE YOU ARE OK WITH WHAT THEY ARE DOING!!!
First, a script to create a bad git-annex: one with missing files (with a few corner case names) after a git unannex. Specify the directory you'd like to make the annex at the top of the file. ALL CONTENTS OF THIS DIRECTORY WILL BE REMOVED!!!
#!/bin/bash
#This is the folder you'd like to create and unannex
FOLDERTOUNANNEX='/tmp/badAnnex'
pushd .
if [ ! -d \"$FOLDERTOUNANNEX\" ] ; then
mkdir \"$FOLDERTOUNANNEX\"
fi
cd \"$FOLDERTOUNANNEX\"
rm -rf *
mkdir subdir
echo \"hi\" > 1one.txt
echo \"hi\" > 2two.txt
echo \"hi\" > \"3thr re ee.boo\"
echo \"hi\" > \"4f o u r.boo\"
echo \"hi\" > 5
echo \"hi\" > \"6\"
echo \"hi\" > \"subdir/7\"
echo \"hi\" > \"subdir/8.cat\"
echo \"hi\" > \"subdir/9.cat\"
echo \"* annex.backend=SHA512E\" > .gitattributes
chmod g-r 5 6
chmod o-r 6
ls -la
git init
git annex init \"stupid\"
git annex add *
ls -la
git annex unannex *
ls -la
popd
Then, a script to recover the files left missing by the above script. Note this might be very slow as it has to generate SHA512 hashes for all the files in your annex. Again, change the paths at the top of this file to work in your environment:
#!/bin/bash
#Set this to some place outside your annex, where we can store our hashes while we search for them
#It will be fastest if this is on a different physical disk than the annexed folder
#You can manually delete the file afterwards
HASHFILE='/backup3/tmp.sha'
#This is the folder you'd like to unannex
FOLDERTOUNANNEX='/tmp/badAnnex'
HASHLEN=128
pushd .
cd \"$FOLDERTOUNANNEX\"
find \"$FOLDERTOUNANNEX\" ! -path '*.git*' -exec sha512sum \{\} \; > \"$HASHFILE\"
find -L \"$FOLDERTOUNANNEX\" -type l | while read BROKENFILE; do
POINTSTO=`file \"$BROKENFILE\" | sed -r 's/^.*broken symbolic link to .(.*).$/\1/g'`
HASH=`echo \"$POINTSTO\" | sed -r \"s/^.*--([^-\/.]{$HASHLEN}).*$/\1/g\"`
EXT=`echo \"$POINTSTO\" | sed -r \"s/^.*--[^-\/.]{$HASHLEN}(.[^.]+)?$/\1/g\"`
echo \"-\"
echo \"FILE:$BROKENFILE\"
echo \"POINTSTO:$POINTSTO\"
echo \"HASH:$HASH\"
echo \"EXT:$EXT\"
SOURCEFILE=`grep $HASH $HASHFILE | grep -m 1 \"$EXT\" | sed -r \"s/^.{$HASHLEN} (.*)$/\1/g\"`
echo \"SOURCEFILE:$SOURCEFILE\"
if [ -f \"$SOURCEFILE\" ];
then
cp --backup --suffix=\"~GIT_ANNEX_IS_DANGEROUS~\" -a \"$SOURCEFILE\" \"$BROKENFILE\"
else
echo \"ERROR: Cant find sourcefile\"
fi
done;
popd
I have not yet run this repair script on my rather large broken annex. I cannot seem to figure out how to restore file ownership and permissions which seem to have been lost when the second file is just linked to the matching previously annexed file (note: this is visible after \"fixing\" the bad annex created by the first script above in that after \"fixing\" file \"6\" is readable by other, whereas originally he was NOT readable by other. The permissions of 6 have been copied from 5.) Any thoughts or improvements on this are appreciated.
"""]]

View file

@ -0,0 +1,30 @@
### Please describe the problem.
As described in [[tips/Internet_Archive_via_S3]], there is a problem using S3 with buckets that have capital letters. The bug lies either in the hS3 library or in archive.org itself.
### What steps will reproduce the problem?
Try to add an [[special_remotes/S3]] remote with capital letters in the bucket name.
### What version of git-annex are you using? On what operating system?
[[!format txt """
git-annex version: 4.20130921-g434dc22
build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP DNS Feeds Quvi
local repository version: 3
default repository version: 3
supported repository versions: 3 4
upgrade supported from repository versions: 0 1 2
"""]]
### Please provide any additional information below.
[[!format sh """
# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
anarcat@angela:video$ git annex initremote archive-moglenrepublica type=S3 host=s3.us.archive.org bucket=Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia
initremote archive-moglenrepublica (Internet Archive mode) git-annex: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. For more information, see REST Authentication and SOAP Authentication for details.
# End of transcript or log.
"""]]
Just thought it would be better to have a separate thread for this bug. :)

View file

@ -0,0 +1,59 @@
### What steps will reproduce the problem?
[[!format sh """
C:\Users\Bruno>mkdir annex
C:\Users\Bruno>cd annex
C:\Users\Bruno\annex>git init
Initialized empty Git repository in C:/Users/Bruno/annex/.git/
C:\Users\Bruno\annex>git annex init
init
Detected a crippled filesystem.
Enabling direct mode.
Detected a filesystem without fifo support.
Disabling ssh connection caching.
ok
(Recording state in git...)
C:\Users\Bruno\annex>echo test > test
C:\Users\Bruno\annex>git annex add .
add test (checksum...) ok
(Recording state in git...)
C:\Users\Bruno\annex>git commit -a -m added
[master (root-commit) 2eea610] added
1 file changed, 1 insertion(+)
create mode 120000 test
C:\Users\Bruno\annex>git annex sync
(Recording state in git...)
fatal: unable to access '../../../../C:\Users\Bruno\annex\.git/config': Invalid argument
git-annex: user error (xargs ["-0","git","--git-dir=C:\\Users\\Bruno\\annex\\.git","--work-tree=C:\\Users\\Bruno\\annex","add","-f"] exited 123)
failed
git-annex: sync: 1 failed
"""]]
### What version of git-annex are you using? On what operating system?
Windows 8 (64 bits)
git version 1.8.4.msysgit.0
[[!format sh """
git-annex version: 4.20131008-ge115441
build flags: Pairing Testsuite S3 WebDAV DNS Feeds Quvi TDFA CryptoHash
key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SKEIN256E SKEIN512E SHA256 SHA1 SHA512 SHA224 SHA384 SKEIN256 SKEIN512 WORM URL
remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
local repository version: 4
default repository version: 3
supported repository versions: 3 4
upgrade supported from repository versions: 2
"""]]
### Please provide any additional information below.
C:\Users\Bruno\annex\.git\config exists

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawknwkXgi8SnK4QT32ANl3GMKvFLyQGeHqo"
nickname="Florian"
subject="comment 7"
date="2013-10-08T16:18:07Z"
content="""
Any comment from on this from one of the maintainers would be great. Apparently this was not fixed in the latest (2013-10-02 18:46) build.
"""]]

View file

@ -0,0 +1,56 @@
### Please describe the problem.
When cloning/syncing a repository (and probably doing some nono's in the process),
git annex will happily delete files.
This cost me several files, which just by coincidence were not totally important, still its *very* unsettling.
### What steps will reproduce the problem?
I did not try to exactly reproduce it yet (sorry, no time right now), but here is vaguley what I did (sorry its been a process spread over
several hours and i was doing lots of other things in parallel so I'm fuzzy about details):
* have a repository in direct mode on your local harddrive, say ~/myannex
* git clone ~/myannex to /usbhd/myannex, git annex init.
The usbhd is a FAT, git annex recognizes it as "crippled filessytem".
* Git annex get all from ~/myannex. So far, so good.
* create several files on ~/myannex, git annex add them
* do a git annex add on them, abort it (realizing SHA256E takes forever, so changing to WORM), repeat add
(not sure wheter i did a git annex sync here)
* create several files on /usbhd/myannex, git annex add them
(not sure wheter i did a git annex sync here again)
All repos are in direct mode.
From here on i don't remember the exact order of events, one definite -- probably important -- nono i did,
was:
I executed a git annex sync/get on the usbhd in a sub-directory (i.e. not in the git base dir), say /usbhd/myannex/foo/bar/,
so it went on creating /usbhd/myannex/foo/bar/foo, which of course was not intended.
However /usbhd/myannex/foo/bar/foo contained FAT-crippled-symlinks to the new files in ~/myannex (good).
In order to avoid a potential messy situation i just renamed /usbhd/myannex/foo to /usbhd/myannex/foo_bak
(which I just realize while writing this, saved me the hash values of my files, yay :))
However when I tried to repeat the procedure, it seems that the new files would not appear on the usbhd (for a reason i totally don't get, maybe I synced back before realizing my sub-foo mistake).
When I synced usbhd -> ~/myannex again, git-annex happily deleted my new files there which obviously quite upset me.
Again, sorry for this horribly chaotic description,
I'll try and deliver a more reproducible description, but for the next 2 weeks at least I'm too busy for that.
### What version of git-annex are you using? On what operating system?
Archlinux,
3.9.2-1-ARCH #1 SMP PREEMPT Sat May 11 20:31:08 CEST 2013 x86_64 GNU/Linux
aur/git-annex-bin 4.20131002-1
### Please provide any additional information below.
[[!format sh """
# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
# End of transcript or log.
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://droggl.myopenid.com/"
ip="92.76.150.86"
subject="comment 1"
date="2013-10-08T07:46:35Z"
content="""
Just in case you wonder: the most important (in the sense of not backupped elswhere) files where some scripts which i did hash with SHA256E and not with WORM.
"""]]

View file

@ -0,0 +1,14 @@
[[!comment format=mdwn
username="http://cstork.org/"
nickname="Chris Stork"
subject="git annex get/sync don't delete files"
date="2013-10-10T11:43:29Z"
content="""
AFAIU it's impossible for the 'get' subcommand to delete anything because it only copies files to .git/annex/objects.
'sync' should also never delete files because it only adds files to the annex (i.e. checksums them and sets up the links and directories in .git/annex), commits things to git and pulls/pushes the git-annex specific branches to/from other repos.
So I think some other 'nono' must have messed up your files.
If you ever used (maybe unintentionally) used indirect mode there seem to be a rather high chance that some of your otherwise lost content is still in .git/annex/objects. Did you check if there's are any files in .git/annex/objects ?
"""]]

View file

@ -0,0 +1,24 @@
### Please describe the problem.
I could not find a way to abort the addition of a new remote repository.
### What steps will reproduce the problem?
- start adding a remote repository (unencrypted, with git-annex installed);
- forget to create the folder on the remote host;
- navigate away from the repository page;
- the dashboard says the repository is partially set-up, and the only thing one can do is look at the log (which says the folder is missing).
I was able to solve it by creating another repository with the exact same data.
### What version of git-annex are you using? On what operating system?
Version: 4.20131002-gf25991c on OS X 10.8.5
### Please provide any additional information below.
[[!format sh """
# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
# End of transcript or log.
"""]]

View file

@ -24,17 +24,17 @@ check that nothing else is using it, fix the problem, and redo the commit.
## incremental fsck
Add webapp UI to enable incremental fsck, and choose when to start and how
long to run each day, and what the goal is (ie, to fsck all files once
per month).
TODO: Add webapp UI to enable incremental fsck
Of course, incremental fsck will run as an niced (and ioniced) background
job. There will need to be a button in the webapp to stop it, in case it's
annoying.
annoying. **done**
When fsck finds a damanged file, queue a download of the file from a
remote. If no accessible remote has the file, prompt the user to eg, connect
a drive containing it.
remote. **done**
TODO: If no accessible remote has the file, prompt the user to eg, connect
a drive containing it
## git-annex-shell remote fsck

View file

@ -5,7 +5,7 @@ Now in the
(starting September 2013).
* Month 1 [[!traillink assistant/encrypted_git_remotes]]
* Month 2 [[!traillink assistant/disaster_recovery]]
* **Month 2 [[!traillink assistant/disaster_recovery]]**
* Month 3 user-driven features and polishing
* Month 4 improve special remote interface & git-annex enhancement contest
* Month 5 [[!traillink assistant/xmpp_security]]

View file

@ -0,0 +1,10 @@
Spent most of the day building some generic types for scheduling recurring
events. Not sure if rolling my own was a good idea, but that's what I did.
In the incrementalfsck branch, I have hooked this up in `git-annex vicfg`,
which now accepts and parses scheduled events like
"fsck self every day at any time for 60 minutes" and
"fsck self on day 1 of weeks divisible by 2 at 3:45 for 120 minutes", and
stores them in the git-annex branch. The exact syntax is of course subject
to change, but also doesn't matter a whole lot since the webapp will have
a better interface.

View file

@ -0,0 +1,17 @@
Lots of progress from yesterday's modest start of building data types for
scheduling. Last night I wrote the hairy calendar code to calculate when
next to run a scheduled event. (This is actually quite superior to `cron`,
which checks every second to see if it should run each event!) Today I
built a "Cronner" thread that handles spawning threads to handle each
scheduled event. It even notices when changes have been made to the its
schedule and stops/starts event threads appropriately.
Everything is hooked up, building, and there's a good chance it works
without too many bugs, but while I've tested all the pure code (mostly
automatically with quickcheck properties), I have not run the Cronner
thread at all. And there is some tricky stuff in there, like noticing
that the machine was asleep past when it expected to wake up, and deciding
if it should still run a scheduled event, or should wait until next time.
So tomorrow we'll see..
Today's work was sponsored by Ethan Aubin.

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="http://nullroute.eu.org/~grawity/"
nickname="Mantas"
subject="comment 1"
date="2013-10-09T06:04:15Z"
content="""
The SysV Unix *cron* learned this same thing [in 1979][1].
[1]: http://en.wikipedia.org/wiki/Cron#Multi-user_capability
"""]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.4.22"
subject="comment 2"
date="2013-10-11T17:07:24Z"
content="""
However, if you strace a traditional cron, you will be sad at how it's implemented. So much statting of files, and checking of entries every second..
0 polling or redundant calulcation in my code!
"""]]

View file

@ -0,0 +1,17 @@
Some neat stuff is coming up, but today was a pretty blah day for me.
I did get the Cronner tested and working (only had a few little bugs). But
I got stuck for quite a while making the Cronner stop `git-annex fsck`
processes it was running when their jobs get removed. I had some code to do
this that worked when run standalone, but not when run from git-annex.
After considerable head-scratching, I found out this was due to
`forkProcess` masking aync exceptions, which seems to be probably
[a bug](http://ghc.haskell.org/trac/ghc/ticket/8433). Luckily was able to
work around it. Async exceptions continue to strike me as the worst part of
the worst part of Haskell (the worst part being exceptions in general).
Was more productive after that.. Got the assistant to automatically queue
re-downloads of any files that fsck throws out due to having bad contents,
and made the webapp display an alert while fscking is running, which will
go to the page to configure fsck schedules. Now all I need to do is
build the UI of that page.

View file

@ -0,0 +1,12 @@
Hello,
I went through several of the questions on the forum but could not find the answer to this. I have the following scenario, which seems very similar to the nomad case.
I have a server at home with many big media files. I want to keep a subset of these files on my laptop, to watch when I travel. When I'm done watching the files, I want to either delete them (i.e, they should no longer be on any machine) or archive them (i.e., they should remain on the server, but no longer be on the laptop). I think I know how to do this from the command line, but I still have a few questions.
- How do I drop a file from _every_ repository? If I understood correctly, `git annex drop foo` will only drop foo locally.
- Is it possible to follow this use case using the assistant, or should I use the command line instead (which would be very fine with me)? In particular, how do I choose the file I want to put on the laptop? (It seems `git annex get` is the command line way, is there an assistant equivalent?)
- Can I use both the assistant and the command line at the same time? Is there a description of the command-line version of what the assistant is doing behind the scenes?
- Can the server repository be both a "transfer" repository (to hold the files I haven't watch) and an "archive" repository (to keep the files I've watched and decided to keep), or do I need two repositories (on the server) for that?
Thanks a lot for any suggestion.

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="ringprince"
ip="134.76.140.110"
subject="comment 1"
date="2013-10-10T07:08:21Z"
content="""
I hope it is. I'd love to use it.
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="https://id.koumbit.net/anarcat"
ip="72.0.72.144"
subject="comment 2"
date="2013-10-10T09:22:00Z"
content="""
it is, please publish.
"""]]

View file

@ -0,0 +1,22 @@
I've set up git annex on my laptop and on a remote server using the gitolite v3 git-annex branch.
When I 'git annex sync' from my laptop (mac OSX) to the server, and 'git annex copy . --to server' all works fine.
Later, I tried to clone the repository on another machine (linux 2.6.32). again all is well. I 'git annex init' in the new clone and then try to 'git annex sync' -- now I run into problems.
Specifically, the first request for the configlist (when I do 'git annex --debug sync' all is fine until the configlist request) somehow breaks and my ssh session shows:
muxserver_listen bind(): Input/output error
This seems to confuse the client, who now believes that git annex is not installed on the server (it is).
If I issue the same command as git annex via ssh, all seems to work ok with the caveats below:
I have a feeling it's related to the -o 'ControlPersist=yes' argument that git-annex appears to be giving ssh. If I include this option when I run via ssh, ssh dies:
>ssh git@server -o "ControlMaster=auto" -o "ControlPersist=yes" "git-annex-shell 'configlist' '/~/PRJ'"
command-line: line 0: Bad configuration option: ControlPersist
(note that it appears to be ok to leave "ControlMaster=auto" in).
any thoughts?

View file

@ -31,4 +31,4 @@ of Bath CS department.
Eskild Hustvedt has contributed a
[gitannex-install](https://github.com/zerodogg/scriptbucket/blob/master/gitannex-install)
script to manage keeping up to date with new releases using the standalone
built.
build.

View file

@ -0,0 +1,11 @@
[[!comment format=mdwn
username="https://openid.stackexchange.com/user/2eeca722-8d1c-41fe-8fda-13af7eaff6ae"
nickname="Diggory"
subject="Outdated in 13.04"
date="2013-10-08T16:36:10Z"
content="""
13.04 Raring also has fairly outdated packages: 3.20121112ubuntu4
Is there a PPA or some such for this? I suppose since Saucy will be out soon this is less critical, but would still be useful.
These don't have direct mode, which (I think; I haven't tested it yet) is the feature I've been waiting for.
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawlkA6XinbeOdnEDxEGQUWyjqPGh0kdMXr4"
nickname="Blake"
subject="Updating git-annex via cabal"
date="2013-10-09T21:21:22Z"
content="""
What is the best way to update git-annex and the dependencies via cabal? Just the `$ cabal install *` commands again?
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.4.22"
subject="comment 21"
date="2013-10-11T17:09:33Z"
content="""
If you run the \"cabal update\" command followed by the \"cabal install\" command it'll upgrade git-annex.
"""]]

View file

@ -0,0 +1,27 @@
Thanks to my recent successful git-annex
[crowdfunding campaign](http://campaign.joeyh.name/), $1000 has been set
aside to award others for their contributions to git-annex by
the end of 2013. This is not a lot of money, but I hope that the
reward and recognition will encourage some more people to work on git-annex.
You don't need to know Haskell! You could contribute some interesting and
useful special remote hooks, or write better documentation.
On the other hand, if you have learned Haskell, this might be your first
chance to make some money with it! Some ideas for things to work on that
would be particularly award-worthy:
* Port git-annex to IOS, using [ghc-ios](https://github.com/ghc-ios).
I don't plan to ever do this myself, but you could make it happen.
* Get the git-annex assistant working in Windows, building on the existing
port to Windows. Otherwise, this is on my roadmap for February.
* Solve existing [[bugs]] or [[todo]] items. There are more than I can
keep up with.
The amount of the awards will vary depending on the size of the
contribution. Since this is getting started later than is ideal,
I reserve the right to extend it past the end of the year if I don't get
enough participants.
If you'd like to participate in this program, just email me at
<id@joeyh.name>. --[[Joey]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.4.22"
subject="comment 10"
date="2013-10-11T17:12:00Z"
content="""
Georg, `drop --auto` will only drop files that are not preferred content. I'd need to know what preferred content expression you're using to say more.
"""]]

View file

@ -0,0 +1,13 @@
[[!comment format=mdwn
username="https://www.google.com/accounts/o8/id?id=AItOawkC0W3ZQERUaTkHoks6k68Tsp1tz510nGo"
nickname="Georg"
subject="drop only files located in archive"
date="2013-10-08T17:53:08Z"
content="""
Is there a way to drop only the files that are located in an \"archive\" directory?
I want to drop all files when calling
git annex drop --auto
if I move them to the archive. But I want to keep the files that are outside of the archive, even if they are already present in other repos. As far as I have seen and tested, as soon as I have the files in an other repo all files get dropped, also the ones outside the archive directory. Or do I have to increase \"numcopies\" in order to circumvent the \"(not copies=semitrusted+:1)\" case?
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="http://elmimmo.myopenid.com/"
nickname="chocolate.camera"
subject="How to sync content with git-annex, not assistant"
date="2013-10-11T09:58:12Z"
content="""
Sure assistant can sync git-annex data across remotes. But how do I tell a repo to sync git-annex data, but not so manually as to having to know what exactly needs to be copied from/to where?
"""]]

View file

@ -31,7 +31,7 @@ specify `x-archive-meta*` headers to add metadata as explained in their
[documentation](http://www.archive.org/help/abouts3.txt).
[[!template id=note text="""
/!\ There seems to be a bug in either hS3 or the archive that breaks
/!\ There seems to be a [[bug|bugs/S3 buckets with capital letters breaks authentication]] in either hS3 or the archive that breaks
authentication when the bucket name contains spaces or upper-case letters..
use all lowercase and no spaces when making the bucket with `initremote`.
"""]]

View file

@ -0,0 +1,34 @@
[[!comment format=mdwn
username="https://id.koumbit.net/anarcat"
ip="72.0.72.144"
subject="how to use with simply addurl?"
date="2013-10-09T22:27:27Z"
content="""
It doesn't seem like git annex addurl by itself supports the archive.org urls...
[[!format txt \"\"\"
anarcat@marcos:presentations$ git annex addurl --file=re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm http://archive.org/download/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
addurl re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
failed to verify url exists: http://archive.org/download/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
failed
git-annex: addurl: 1 failed
\"\"\"]]
I also tried the \"details\" url (<http://archive.org/details/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia>) - but that just downloads the webpage, not the video either...
Even the ultimate video URL doesn't work:
[[!format txt \"\"\"
anarcat@marcos:presentations$ git annex addurl --debug --file=re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm http://ia601009.us.archive.org/9/items/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
[2013-10-09 18:26:30 EDT] call: quvi [\"-v\",\"mute\",\"--support\",\"http://ia601009.us.archive.org/9/items/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm\"]
addurl re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm [2013-10-09 18:26:30 EDT] read: curl [\"-s\",\"--head\",\"-L\",\"http://ia601009.us.archive.org/9/items/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm\",\"-w\",\"%{http_code}\"]
failed to verify url exists: http://ia601009.us.archive.org/9/items/Republica2012-EbenMoglen-FreedomOfThoughtRequiresFreeMedia/re_publica_2012___Eben_Moglen___Freedom_of_Thought_Requires_Free_Media.webm
failed
git-annex: addurl: 1 failed
\"\"\"]]
... even though that URL actually gives out a proper 200 OK response code.
Any ideas? --[[anarcat]]
"""]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="http://joeyh.name/"
ip="4.154.4.22"
subject="comment 2"
date="2013-10-11T17:08:27Z"
content="""
This was a misleading error message. The url you are trying to add to the file does not match the size recorded for the file already in the annex. (Or possibly the file's key has no recorded size). If you really want to add the url to the file despite it being a different encoding, you can use --relaxed, although fsck may not like the result if you ever end up downloading that url..
(Please file bug reports for problems in the future, rather than posting comments on only vaguely related pages which as we can see here can turn out to be entirely offtopic.)
"""]]

View file

@ -8,10 +8,14 @@ Here are some ways you can use this awesome stuff..
[[!toc ]]
This page will show how to set it up at the command line, but the git-annex
[[assistant]] can also be used to help you set up encrypted git
repositories.
## prerequisites
* Install
[git-remote-gcrypt](https://github.com/blake2-ppc/git-remote-gcrypt/)
[git-remote-gcrypt](https://github.com/joeyh/git-remote-gcrypt/)
* Install git-annex version 4.20130909 or newer.
## encrypted backup drive

View file

@ -19,9 +19,6 @@ if [ ! -e "$base/bin/git" ]; then
echo "** base directory $base does not contain bin/git" >&2
exit 1
fi
if [ -n "$GIT_ANNEX_STANDLONE_ENV" ]; then
echo "** runshell loop detected!" >&2
fi
# Get absolute path to base, to avoid breakage when things change directories.
orig="$(pwd)"

View file

@ -21,9 +21,6 @@ if [ ! -e "$bundle/git" ]; then
echo "** bundle directory $bundle does not contain git" >&2
exit 1
fi
if [ -n "$GIT_ANNEX_STANDLONE_ENV" ]; then
echo "** runshell loop detected!" >&2
fi
# Get absolute path to base, to avoid breakage when things change directories.
orig="$(pwd)"