code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.64"
 subject="comment 1"
 date="2013-11-24T16:04:23Z"
 content="""
can you post an example line from /proc/mounts for one of these devices?
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmyEv6SesaYeke389mHdiHlavirPkGHzHI"
 nickname="Albin"
 subject="comment 2"
 date="2013-11-26T14:35:58Z"
 content="""
I missed your reply on IRC. Sorry for that!

Here's an example from /proc/mounts:

   /dev/sdf1 /media/SoderUSB ext4 rw,nosuid,nodev,noexec,relatime,errors=remount-ro,data=ordered 0 0

"""]]

repo_name: kakafarm/git

license: unknown


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.64"
 subject="comment 3"
 date="2013-11-26T19:59:42Z"
 content="""
Hmm, that looks fine.

Perhaps the user you're running git-annex as cannot write to `/media/SoderUSB` ? The webapp avoids listing places you can't write, since it would fail to make a repository there. (Also because this is an easy way for it to avoid listing `/`, `/usr`, or whatever other OS-level mounts a system might have..)
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmyEv6SesaYeke389mHdiHlavirPkGHzHI"
 nickname="Albin"
 subject="comment 4"
 date="2013-11-27T17:33:22Z"
 content="""
Actually, that (write permissions) seems to have been the problem. Thanks! Can't imagine why pmount would not mount a device writable by my user, though.
"""]]


code:
I'm using git-annex to manage my photos on my laptop, and have my NAS (which is just a debian linux system with lots of disks) as one of my remotes. I use my NAS as a backup, and to free up space on my laptop.

But somehow I now have lots of directories in my main root directory of the photos directory. it looks like [0-9a-f][0-9a-f][0-9a-f], so I have 000, ... a00, ... ddd, ..., all the way to fff. Thousands of them. Each one has a few directories that also match [0-9a-f][0-9a-f][0-9a-f], and each one has a file with names of the git annex object filename.

e.g.:

    $ cat e1d/760/SHA256-s4061375--7909e266f340ff8bc692e073e776ceda267042adf790275a2d851f2c7eb1ca83.log
    1338931894.759394s 1 1adfa84c-af51-11e1-b075-0b1206d553bc
    1338992164.202818s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
    1339862991.346546s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
    1339946933.224915s 1 224d85b4-b86f-11e1-b11e-3333ce526126
    1339964057.205993s 1 224d85b4-b86f-11e1-b11e-3333ce526126
    1343495865.083951s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
    1344788941.403528s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
    1351802706.679542s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05
    1362423729.820711s 1 721d82ae-afbb-11e1-b78f-f396ebf52c05

My remote (NAS) has these files & directories as well as my laptop. The regular photo directory hierarchy is there as well, the files work, can be copied etc. "git status" say nothing has changed. Those files are tracked by git (they have lot messages). Everything just works, it's just that there's loads of these directories? Can I remove them? How can I clear it up? I can't remember when these directories/files were added, I only noticed it today.

I don't know if I had my remote (NAS) as a bare git repo and used it as that, then somehow used it as a non-bare one, would that cause this?

Can I remove them? Where did they come from? What's going on?


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.2"
 subject="comment 1"
 date="2014-07-10T19:50:38Z"
 content="""
The files that you describe are normally tucked away on the git-annex branch of the git repository, where they're neither seen nor heard.

The most likely cause of your problem would be if you have done a \"git checkout git-annex\"  ... or worse, a \"git merge git-annex\".

So, check what branch you have checked out, and if it's the git-annex branch, you'll want to change back to master. If you've got master checked out and have these files, you can use `git log --stat` and see if there's a commit that added a bunch of these files to your master branch. Then you can revert that commit.
"""]]


code:
I'm unable to set up a standard architecture: 2 computers sharing some files, talking via a jabber account and transferring files via e.g. box.com.
Steps:

Computer 1:
a) Install git-annex, open up the assistant, create a new repository, add a jabber account
b) Add a box.com account using
WEBDAV_USERNAME=[username] WEBDAV_PASSWORD=[password] git annex initremote box.com type=webdav url=https://dav.box.com/dav/git-annex chunksize=75mb encryption=pubkey keyid=[key id].
All seemed fine.

Computer 2:
a) same
b) at this point I saw the option of adding box.com as a cloud storage. I clicked enable and got the message

user error (gpg ["--quiet","--trust-model","always","--decrypt"] exited 2)

In the meantime, on Computer 1 I saw the same option. I clicked enable and got the same message.

It all works fine if I use shared encryption.


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="108.236.230.124"
 subject="comment 1"
 date="2014-05-16T18:22:26Z"
 content="""
Which is why the assistant uses shared encryption by default..

You have set up a webdav repository using a gpg key that is on computer 1. To be able to access this repository on computer 2 you'll need to either copy the gpg private key from computer 1, or give computer 2 its own key and, on computer 1, add that key as one that can access the webdav repository.
"""]]


code:
[[!comment format=mdwn
 username="hyperio"
 ip="62.31.92.216"
 subject="Still not working"
 date="2014-05-17T12:22:17Z"
 content="""
Thank you for your reply. I copied over the public key from computer 2 to computer 1 and tried to add it using git annex enableremote box.com keyid+=[keyid]. I am then asked for the passphrase for my private key on computer 1. Afterwards I am asked for the passphrase for the private key on computer 2... why? Obviously I don't have it so I get

gpg: can't query passphrase in batch mode
gpg: decryption failed: secret key not available

git-annex: user error (gpg [\"--quiet\",\"--trust-model\",\"always\",\"--batch\",\"--decrypt\"] exited 2)

Why would I need computer 2's secret key? Or I might just get it completely wrong.
Also, can the passphrase be remembered somewhere, so that I can use the assistant? (otherwise I think it won't work, because I would have to type the passphrase at every synchronisation attempt).

Sorry for my confusion, thanks for your support.
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="216.145.95.162"
 subject="comment 3"
 date="2014-05-17T17:02:15Z"
 content="""
I dont think it's possible for gpg to prompt for a passphrase when all it has is a public key, so I think you copied the private key too.

gpg agents can cache your passphrase.
"""]]


code:
[[!comment format=mdwn
 username="hyperio"
 ip="62.31.92.216"
 subject="Still not working"
 date="2014-05-17T17:25:39Z"
 content="""
I exported the public key on computer 2 with gpg --armor --export [keyid] and just imported it on computer 1...
"""]]


code:
Apparently, the tablet computer I'm using (Galaxy Tab 2, non-rooted) does not export the sd cards via mass storage protocol (UMS) any more. In order to be able to use a special remote for my mp3-files,  I installed an ftp/ssh server on the tablet device and used curlftpfs/sshfs (fuse file systems) to mount the sd cards on my local Linux machine. In this way, it is is quite easy to setup the special remote (e.g. "git-annex initremote galaxy-tab type=directory directory=$HOME/mnt/galaxy-tab encryption=none").

Problems arise, when files are transferred to the special remote. From the logs of the ftp server, I can see that the actual copy operation is successful (the data is written to the file system), but the subsequent "chmod" that changes the permissions to read-only fails. The output on the console of a "git-annex copy -t galaxy-tab" is

    copy 01 some.mp3 (to galaxy-tab...)
    failed
    git-annex: copy: 1 failed

Therefore my question: is it possible to perform a file transfer to a special remote (type=directory) without the final "chmod"-operation?

Thank you.


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.6.49"
 subject="comment 1"
 date="2012-11-25T22:00:12Z"
 content="""
That could be hacked into directory as a configuration setting, but I think it makes more sense to add a proper sftp special remote, and avoid the rather complex stack you're using.
"""]]


code:
Hello,

I finally have git annex working on my NAS (QNAP TS-119P II) thanks to the stand-alone arm pre-build package.

I've just extracted all the files on my NAS and I've linked all the exec files from the git-annex.linux folder to links placed in a path folder, so that I can run git annex everywhere on the NAS.

    [~] # git annex version
    git-annex version: 5.20140528-g92a0591
    build flags: Assistant Webapp Webapp-secure Pairing Testsuite S3 WebDAV Inotify DBus DesktopNotify XMPP 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 tahoe glacier ddar hook external

Now I'm trying to set it up as an SSH remote of my laptop repository, but I get this error:

    git clone ssh://admin@nas:/share/HDA_DATA/myDir ./
    Cloning into '.'...
    admin@nas's password:
    sh: git-upload-pack: command not found
    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists.

I've checked that git-upload-pack is available both on my laptop and on the NAS and the "myDir" folder is supposed to be readable for the admin user on the NAS, even if the user I use on the laptop and on the NAS for git annex is different from the one I use to login. In fact, if I try to scp files from the annex folder then I don't get any permissions error.

    scp admin@192.168.132.66:/share/HDA_DATA/myDir/* ./
    admin@192.168.132.66's password:
    doctest                                                100%    5     0.0KB/s   0.0KB/s   00:00
    doctest2                                               100%   51     0.1KB/s   0.1KB/s   00:01

Is there something else I should look at, in order to fix it and make it work?

Thanks,
Fabio


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.2"
 subject="comment 1"
 date="2014-07-11T19:46:05Z"
 content="""
How did you set your PATH? Note that the bash shell provides a lot of dotfiles which you can set the PATH in -- and reuses to read any single one of them when a noninteractive login is made to run a command.

It might help to install git on the NAS. It's included in the git-annex tarball, but not in a way that will put it on PATH; only in a way that will let git-annex use it.
"""]]


code:
[[!comment format=mdwn
 username="feulif"
 ip="20.133.1.1"
 subject="comment 2"
 date="2014-07-15T18:03:56Z"
 content="""
> How did you set your PATH? Note that the bash shell provides a lot of dotfiles which you can set the PATH in -- and reuses to read any single one of them when a noninteractive login is made to run a command.

Actually I didn't set the PATH: I've just sim-linked executable files from git-annex stand-alone folder to a directory that was in my PATH already.

> It might help to install git on the NAS. It's included in the git-annex tarball, but not in a way that will put it on PATH; only in a way that will let git-annex use it.

It was installed, bud I've removed it because it was \"conflicting\" with the one used by git-annex. That is, when I ran any \"git annex ...\" command, git was complaining it could not find git-annex (because my nas was running the installed git binary file).
Without git, I don't have this conflict anymore and I can effectively use git-annex when I'm logged in my NAS, but I still can't add it as an SSH remote.

"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.2"
 subject="comment 3"
 date="2014-07-15T18:55:58Z"
 content="""
I don't think it was a good idea to remove git from the NAS. To set up a git remote, you necessarily need to have git installed on the remote.

`git annex` should work as long as git-annex is somewhere in PATH -- unless your build of git is very strange and does not check PATH for git-foo commands.
Even if this was the case, you could run `git-annex` instead.
"""]]


code:
[[!comment format=mdwn
 username="feulif"
 ip="151.27.171.22"
 subject="comment 4"
 date="2014-07-17T22:24:45Z"
 content="""
First of all, I understand this is more a nas-related issue rather than a git-annex-related one, so thank you for your support and valuable software.

But I'm still struggling with this error.

Now I've reinstalled git on the NAS and, as previously, I can run every git command when I'm logged in.
But when I try to sync my PC with the git remote on the NAS, then I get this error:

    git annex sync
    sh: git-annex-shell: command not found
    sh: git-upload-pack: command not found
    fatal: Could not read from remote repository.

    Please make sure you have the correct access rights
    and the repository exists.
    commit
    ok
    git-annex: no branch is checked out

Can this be really related to some access right? What user is git annex using when syncing with an SSH remote (e.g. admin) ? the one I specified when setting up the remote? where is it complaining about git-upload-pack non found, on the nas or on the PC I'm syncing from?

"""]]


code:
Sorry that I am not stop asking questions - I am trying to wrap my head around annex still - and I do not fully understand the standard groups/preferred contents yet.

First, basic: Is the "preferred content group" an attribute of a repository or of a remote? E.g., when I use assistant, I can set this property for a *remote* repository. Will this property be synced to all other clients then or is it only valid for this particular client?

Second, I think the standard groups do still not cover what I want and I wonder if this could be done with preferred contents somehow? What I want:

* Generally only the structure should be synced, no contents (i.e. "manual" is the closest)

* When I (manually) do "git annex get" on a file this file should be synced whenever it changes locally *or* remotely (until I drop it again). Currently it seems that when it changes remotely, it is "dropped" again so I need to manually use "git annex get" again

* When I (manually) do "git annex get" on a directory, it should be (recursively) synced whenever it or any file changes locally or remotely (until I drop it again). Currently nothing seems to sync at all in this case (except the meta data)

Thanks!


code:
[[!comment format=mdwn
 username="sts"
 ip="134.147.73.126"
 subject="comment 1"
 date="2014-07-18T21:16:50Z"
 content="""
> First, basic: Is the \"preferred content group\" an attribute of a repository or of a remote? E.g., when I use assistant, I can set this property for a remote repository. Will this property be synced to all other clients then or is it only valid for this particular client?

Yeah, it syncs the content group between the remotes, so you have to set it only in one repository and the information gets synced across the network.

> Second, I think the standard groups do still not cover what I want and I wonder if this could be done with preferred contents somehow? What I want:
> Generally only the structure should be synced, no contents (i.e. \"manual\" is the closest)

Well, I guess you have to manually create a git repo (but no annex repo!) on your remote. Once you add the remote the assistant should tell you that he can only sync the metadata, but no contents.

"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmMLeU-zCzx2mc5pL2XT8a1UNkQwHAHjg8"
 nickname="daniele"
 subject="comment 2"
 date="2014-07-19T00:38:58Z"
 content="""
    Generally only the structure should be synced, no contents (i.e. \"manual\" is the closest)
    Currently it seems that when it changes remotely, it is \"dropped\" again so I need to manually use \"git annex get\" again

Maybe this could work?

(in preferred content) exclude=\"*\" and present

So that what is present is preferred and not dropped, everything else is not downloaded unless the user explicitly asks to get it.
"""]]


code:
[[!comment format=mdwn
 username="divB"
 ip="204.17.143.10"
 subject="comment 3"
 date="2014-07-22T00:11:34Z"
 content="""
Unfortunately the same :(

Testcase:
1.) Create a file 'file' on the server, git annex add/sync etc.
2.) On the client: git annex wanted here 'exclude=\"*\" and present'
3.) On the client: git annex get file . The file is now present on the client
4.) Change the file on the server, git annex sync
5.) git annex sync --content on the client

Result: File is dropped again on client

"""]]


code:
[[!comment format=mdwn
 username="divB"
 ip="204.17.143.10"
 subject="comment 4"
 date="2014-07-22T00:24:46Z"
 content="""
... and for the directories the same:

1.) Create a (sub-)directory 'subdir' with files and sync everything
2.) On the client: git annex get subdir . The subdirectory is now present, all files under it downloaded.
3.) On the server create a new file in 'subdir' and git annex add; git annex sync --content
4.) git annex sync --content on the client

Result: Content of the files is not synced to client
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmMLeU-zCzx2mc5pL2XT8a1UNkQwHAHjg8"
 nickname="daniele"
 subject="comment 5"
 date="2014-07-22T00:29:20Z"
 content="""
wait, is the group working together with the preferred content?

Usually you set a repository in a group and then you tell annex that particular group has this preferred content expression (which by default is set to 'standard'). So you could add the repo to 'client' group then set the group 'client' to that preferred content expression. If you only want that particular client to have that expression you can play around with \"groupwanted\", or even define your own group I guess.

Use \"git annex vicfg\" to quickly check both \"group\" and \"wanted\" settings together.

"""]]


code:
[[!comment format=mdwn
 username="divB"
 ip="204.17.143.10"
 subject="comment 6"
 date="2014-07-23T05:20:47Z"
 content="""
Hi daniele,

I am not completely sure what you mean but I as far as I understand as soon as I set \"wanted\" to anything other than \"default\" the standard groups do not apply at all.
I can't use vicfg because I use windows and this command hangs ... probably because there is no vi.

However, I can still check the expressions:

    $ git annex group here
    manual
    $ git annex wanted here
    exclude=\"*\" and present
    $

Have you tried this? Does it work in your case?
Because the standard preferred contents also contains \"present\" so I assume it would behave the same.
Is maybe \"present\" broken or the behavior different than expected?

"""]]


code:
I am unable to start the git-annex assistant/webapp.

I use OpenBox as desktop manager and the assistant/webapp is not available through the menu.

Trying to use the CLI, all my attempts fail with a message saying that it(?) is not a git repository!? Since the video show that on first start the assistant/webapp allows a choice of a directory and then creates it, I am not sure as to what git initialized directory does the assistant/webapp requires in this instance. And I also guess that means invoking the webapp from that directory rather than from the directory that contains the standalone git-annex.

Any help would be appreciated as git-annex really seems to be the app I am looking for.  :)

Thanks


code:
[[!comment format=mdwn
 username="https://me.yahoo.com/a/FHnTlSBo1eCGJRwueeKeB6.RCaPbGMPr5jxx8A--#ce0d8"
 nickname="Hamza"
 subject="comment 1"
 date="2014-04-14T15:35:17Z"
 content="""
running,

    git annex webapp

should launch the web app.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawlqL3QbH6hrzf4XT-OW5IcMj6zSrMWl2dg"
 nickname="Michel"
 subject="comment 2"
 date="2014-04-14T22:45:23Z"
 content="""
Unfortunately, no, I tried this and many other variants, (I tried again just now, to be sure, and I still get the \"git-annex: Not in a git repository.\" message.

Thanks for trying to help. It is very much appreciated.

"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.191"
 subject="comment 3"
 date="2014-04-17T20:48:56Z"
 content="""
Yes, the webapp is supposed to be able to be started from anywhere.

1. If you make a git annex repository and run `git annex webapp` from inside it, it'll start up the webapp on that repository.
2. If `~/.config/git-annex/autostart` lists some git repositories, the webapp will start up in the first listed one.
3. Otherwise, the webapp will walk you through making a new repository.

Most likely problem then is #2. If you used the webapp once, say in ~/annex and then deleted ~/annex/.git directory, it would try to start up in ~/annex, but it's no longer a git repository so it cannot start. This was a bug, so I've fixed it.
You could work around that problem by deleting `~/.config/git-annex/autostart` too.

If it's some other problem, you can work around it by going the #1 route and making a git repository by hand (\"git init annex; cd annex; git annex init\") and running the webapp in there.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawlqL3QbH6hrzf4XT-OW5IcMj6zSrMWl2dg"
 nickname="Michel"
 subject="comment 4"
 date="2014-04-18T00:20:47Z"
 content="""
Thank you.

The problem was indeed with having a file containing a non-existent ~/.config/git-annex/autostart.

I can now continue my evaluation of what looks like a very fine and useful piece of software.

Thanks again for the help.
"""]]


code:
I tried to use the [old thread](http://git-annex.branchable.com/forum/Git_repos_in_git_annex__63__/?updated#comment-9fca5cf31ccfd3d78c78cb65f7672340) for this, but threads don't get bumped when they are updated, so I guess I'll have to start a new one...

Here is the relevant [bug report](http://git-annex.branchable.com/bugs/Can__39__t_add_a_git_repo_to_git_annex:___34__Invalid_path_repo__47__.git__47__X__34___for_many_X).

Here's my scenario: I have been using Dropbox for several years.  I want to move to git-annex.

For some time I used Bazaar repos inside Dropbox.  A couple of times I accidentally modified files on one computer before another finished syncing, and the repo became mildly corrupted, but I recovered it okay.

Recently I switched from bzr to git, and so far, so good.  I'm careful not to make any changes to my files before Dropbox is finished syncing, so everything works fine.

Now I'm testing git-annex as a replacement for Dropbox again.  But when I add a directory containing a git repo to an annex, git-annex ignores the .git directory, so the repo isn't synced.

I read this forum thread, and I read the bug report, but there don't appear to be any real solutions.

This seems like what should be a fairly common use case: a user has a directory of simple text files, like shell scripts or org-mode files.  He uses git to version-control them, and he uses Dropbox to sync the files and the git repo automatically between computers.  Now the user wants to use git-annex instead, but if he does this, it will mean having to choose between:

* No longer using git to version-control the files
* Only using git on a single system, which means that he can't make commits or do any other git operations when using other systems
* Keeping separate git repos on each system, and making the same commits manually on each one...which would be a mess
* Keeping separate git repos on each system, and using a script to make commits automatically--which would mean commits wouldn't be any more useful than a simple timed backup script

I guess I could just use git instead of Dropbox or git-annex, but then I must choose between either:

* Only being able to sync repos when both systems are online
* Having to store repos in plaintext on remote servers

This is one of my primary use cases for Dropbox/git-annex.  I'd really appreciate any help in figuring this out.  Thanks.


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="108.236.230.124"
 subject="comment 1"
 date="2014-05-16T17:29:15Z"
 content="""
Why not just use git the way it's designed: Make a git repository on one computer. Clone to another computer. Commit changes on either whenever you like, and pull/push whenever you like. No need for any dropbox to help git sync, it can do so perfectly well on its own.

If you have a lot of repositories, see <http://myrepos.branchable.com/>

I continue to be unimpressed and unmotived by this use case. Posting more forum threads with the same lame reasons won't help. But at least you did say:

> For some time I used Bazaar repos inside Dropbox.  A couple of times I accidentally modified files on one computer before another finished syncing
, and the repo became mildly corrupted, but I recovered it okay.

> Recently I switched to git, and so far, so good.  I'm careful not to make any changes to my files before Dropbox is finished syncing, so everythin
g works fine.

So, you used dropbox, and corrupted data.  But that was ok. And now you're very careful to avoid doing things that will corrupt data. But that's ok. Yeah, that seems like a really good decision, given all the excellent possibilities out there.`</snark>`
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmNu4V5fvpLlBhaCUfXXOB0MI5NXwh8SkU"
 nickname="Adam"
 subject="comment 3"
 date="2014-05-17T00:23:02Z"
 content="""
Well, like Pere, I am rather surprised by your response, Joey.  I've been an enthusiastic supporter and follower of git-annex for a long time now, and have been looking forward to using it.  I didn't expect a snarky reply...and you said yourself that it was snarky.  Maybe you had a bad day or something?  :)

I don't understand why this request or idea is so controversial to you.  I have several computers, and I use git to store basic text files like shell scripts and config files--a very common situation.  I use Dropbox to sync them automatically between computers.  I could use just git, and push/pull manually, but the whole point of having computers is for them to do things for me, automatically.  The purpose of the git-annex assistant, as I understand it, is to do exactly that.  Doing the push/pull manually would be a step backwards.  And giving up manual control of the git repository, losing the ability to track changes to my files, would be a huge step backwards.

This seems like it must be a very common use case among Linux users, especially ones who use the shell, git, etc.  If git-annex isn't good for this situation, what is?  Surely there's a better way than opening a shell and running \"git pull\" every time I walk from one computer to the other.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmNu4V5fvpLlBhaCUfXXOB0MI5NXwh8SkU"
 nickname="Adam"
 subject="comment 4"
 date="2014-05-17T00:41:04Z"
 content="""
I should have also mentioned, the network topology is an issue that git-annex helps solve.  When my computers are on the same LAN, they could obviously sync directly with each other using git.  But when they are not on the same network, or when one of them is not online, a transfer repo is needed.  Dropbox and git-annex make this simple by handling it for me.

But if I did all my syncing with git manually, it could end up being quite a mess.  If I took my laptop with me and left the house without syncing it first, I'd have to sync with my server on the Internet.  But if I forgot to push from my desktop computer before I left, the server would be out-of-date, and I'd be stuck.

Dropbox handles this for me by automatically syncing as soon as I make changes.  git-annex does the same thing, but doesn't work with nested git repos.  But giving up the nested git repo would mean giving up version control of my files.  As a developer, you understand why that's not an option!  :)

Again, this seems like a very natural problem to run into, and I don't understand why it is controversial to want git-annex to handle this the way Dropbox or other sync software (e.g. SpiderOak, Wuala) can.
"""]]


code:
[[!comment format=mdwn
 username="https://me.yahoo.com/a/FHnTlSBo1eCGJRwueeKeB6.RCaPbGMPr5jxx8A--#ce0d8"
 nickname="Hamza"
 subject="comment 5"
 date="2014-05-18T12:55:47Z"
 content="""
My, 2 cents. I used to do the same keep my git repos in Dropbox. I do not push/pull to dropbox I just keep them in there so they sync between my machines. My use case is that I am in the middle of a change and I need to switch computers (home/office) I can continue where I left of on another machine otherwise you have to make wierd commits with broken code. So IMHO it is perfectly reasonable for a single person to keep his git repo in git-annex assuming I don't use it as a central repo where other people pull push.

Plus one giant problem with git annex is that there is no way to revert a file in direct repo. It only sync and reverting to old files take a lot of effort (convert to indirect checkout commit save file to a temp location convert back to direct mode place the file back its place.) with a git repo in annex I can just use git to revert files.

On the other hand, git likes to create a lot of small files and sync them can take a lot of time. annex copies on file at a time.

That said, at one point I did experiment putting a git repo in annex for testing (using --git-dir option) it did work so it should not be that big of a deal to add the support.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnaYy6kTuKAHmsa4BtGls2oqa42Jo2w2v0"
 nickname="Pere"
 subject="So, you are more clever than your users, isn't?"
 date="2014-05-16T18:13:34Z"
 content="""
Joey, your comment is really disappointing. I also use Dropbox as a central git repo and it works great for me. Maybe you find this stupid, but there is a lot of people with good reasons to do so. I agree that this is your software project, thus you have the right not to support this use case, but you don't have the right to treat the users that want this feature as you did in your comment. Next time you do a new crowdfunding campaign, I not sure I'll be between the donors again.
"""]]


code:
Is there a way to store a file in an annex repo without the assistant trying to commit it? My particular issue is that git annex watch tries to add my .thunderbird folder, and I don't want it in annex. Is that a supported use case?

Also, for my better understanding, does watch keep track of what files it saw last time and only look for new things on startup? Or does it try to commit anything that's not already in git (whether symlink or not)?


code:
[[!comment format=mdwn
 username="http://edheil.wordpress.com/"
 ip="173.162.44.162"
 subject="comment 1"
 date="2012-12-16T00:10:39Z"
 content="""
wow, are you git annexing your whole home directory?  that sounds extreme and problematic, since everything in git annex becomes read-only!!

This how to make git annex ignore something though: make git ignore it in the first place.

Stop the git assistant if it's running.

create a file called \".gitignore\" in the root of your annex directory; add a line to that file for everything you want git (and therefore git annex) to ignore, e.g. \".thunderbird\"

e.g.:

    echo '.thunderbird' > '.gitignore'

check that file into git:

    git add .gitignore
    git commit -m 'check in .gitignore'

Now you should be able to start up git-annex again and have it ignore .thunderbird, or any other path you put in .gitignore
"""]]


code:
[[!comment format=mdwn
 username="andy"
 ip="108.92.50.62"
 subject="Thanks!"
 date="2012-12-16T00:31:09Z"
 content="""
That does what I needed. I'd forgotten about that. :)
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.153.8.117"
 subject="comment 3"
 date="2012-12-17T16:32:31Z"
 content="""
AFAIK, the assistant does *not* currently honor .gitgnore completely. There are parts of it that do, and places where running git commands to check .gitignore would be very expensive, and so I've TODOed it for later, as I'll need to write my own .gitignore parser.

So, use caution..
"""]]


code:
Hi,

I was a bit hasty the other day and did something stupid.  I
added a new folder to git annex.  Something like

    git annex add my-important folder

my-important folder contains a lot of files and it took a couple
of minutes to add.  When I then tried to do

    git commit -am 'added files'

per the walkthrough I got an error (9, as I recall).  I thought
I'd added too many files or something so I wanted to start over
and perhaps I didn't fully understand the mechanisms of annex I
did the following

    git reset --hard .

Unfortunately, did replaced my files with a bunch of symlinks,
rather than making git annex forget and go back to the previous
stage as I had hoped.

I have managed to recover most of my files from backup, but some
of them I still can't recover.  Is there any way back?  It seems
I still have the files in my git folder.

Thanks,
Rasmus

PS: Sorry, I shouldn't have made this text rather than Markdown.


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 nickname="joey"
 subject="comment 1"
 date="2013-04-01T18:24:20Z"
 content="""
The file contents are still there in `.git/annex/objects/`.

When I run `git reset --hard`, it deletes any files that have been added, but not committed. You say you still have symlinks to the content. If so, you can just `git add` the symlinks and be back how git-annex wants things to be.

If, instead, you are missing the symlinks, then since you never committed the symlinks to git, there is no record anywhere in git of the filenames that go with the file contents.

What you can do is ask git-annex to put back symlinks to the file contents:

<pre>
git annex unused
git annex addunused 1-10000
</pre>

This will make you have a bunch of files in the repository with names starting with \"unused\". You can then rename them manually.

BTW, I would of course be interested in any error message from `git commit`.
"""]]


code:
[[!comment format=mdwn
 username="Rasmus"
 ip="213.120.148.111"
 subject="comment 2"
 date="2013-04-01T23:23:55Z"
 content="""
Joey,

Thanks for your useful tips and for providing this software.  It seems incredibly powerful and useful.  I made a copy of the folder which I messed up.  I will try the tips and report back (I'm on the road right now).

The other day all the Haskell deps worked out and I managed to build git annex.  Hopefully, this will give more reliable results as it seemed that some of my bugs were caused by the 32bit prebuild on 64bit.  If I succeed in recreating my files I will try to recreate the error :)
"""]]


code:
[[!comment format=mdwn
 username="Rasmus"
 ip="213.120.148.111"
 subject="comment 3"
 date="2013-04-02T23:25:45Z"
 content="""
Joey,

Sorry for asking again, but I haven't been able to resolve this using the symlinks.

Consider this file

    ElgarCEH.pdf -> ../.git/annex/objects/g6/q8/SHA256E-759787--3ec5f8d64cc4f84dec74ed7f0f7a640b3e672a03faf0f5fc3daf0b823d596f03.pdf/SHA256E-759787--3ec5f8d64cc4f84dec74ed7f0f7a640b3e672a03faf0f5fc3daf0b823d596f03.pdf

The file that the symlink points to doesn't exist.  I'm not sure it should.  The file with {.map,.cahce} extensions does exist, in this case

    sh>ls ../.git/annex/objects/g6/q8/SHA256E-s759787--3ec5f8d64cc4f84dec74ed7f0f7a640b3e672a03faf0f5fc3daf0b823d596f03.pdf/
       SHA256E-s759787--3ec5f8d64cc4f84dec74ed7f0f7a640b3e672a03faf0f5fc3daf0b823d596f03.pdf.cache
       SHA256E-s759787--3ec5f8d64cc4f84dec74ed7f0f7a640b3e672a03faf0f5fc3daf0b823d596f03.pdf.map

The content of the .cache file is

    1703824 411810 1350480334

and the content of the .map file is

    documents/ElgarCEH.pdf

However, for all of the following

    git add ElgarCEH.pdf
    git add --force ElgarCEH.pdf
    git annex add ElgarCEH.pdf

the files are not staged, and I get the message usual

    no changes added to commit.

with `git log`.

So do I need to something more in order to get `git` to add my symlinks?
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 nickname="joey"
 subject="comment 4"
 date="2013-04-02T23:39:48Z"
 content="""
If you `git add` a file and `git commit` says \"no changes added to commit\", what would you think would be the reason?

I'd think it was because the file was already committed to git. So that must be the case with your symlink.

You seem to have told git-annex to do something to the content of that file. You could use `git annex whereis` to find where it is, or `git annex get` to get it. (Assuming you have not used `git annex drop --force` on the file to nuke its content earlier.)
"""]]


code:
[[!comment format=mdwn
 username="Rasmus"
 ip="213.120.148.111"
 subject="comment 5"
 date="2013-04-03T00:45:05Z"
 content="""
> [links not being added].
Right.  Obliviously.  Sorry.

I think the problem is more severe as all of the files have somehow ended up in the .git/objects folder.  I have no idea how, but I have been unsuccessful with both methods (the second methods gives me

    getFileStatus: does not exist (No such file or directory)

which I guess is related to the fact that my files somehow ended up in the git objects folder rather than the git annex objects folder.

I appreciated the help.

Cheers,
Rasmus
"""]]


code:
Hi!

Just tried various android ssh servers which do work, but have no access to the command line tools shipped with git annex.

From what I gather from the planning docs, sshd was stripped from the android tools to save space. If this were the case, it (naively) seems to me it would have to be simple to re-enable.

Rationale: It would make it super convenient to use command line git annex on my phone alongside the assistant, through letting me type on my desktop. Not to mention that the command line tools shipped with git annex are by far the best around for android work.

Carlo


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.47"
 subject="comment 1"
 date="2013-11-02T19:42:13Z"
 content="""
sshd was removed from the bundle because it's not needed for git-annex to be used on Android, and it would be very complicated to get it to work. (And would require rooting the device at least for port 22 and probably also since sshd needs to run as root generally.)

If there are android ssh servers that let you choose which user to log in as, you could log in as the app_NN user corresponding to the git-annex android app, and have all the tools available, once you ran runshell. I belive there's also an equivilant to su on android that lets you change to an app_NN user, although you probably already need root.

I think it's more usual to use adb in these situations.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnZEanlyzay_QlEAL0CWpyZcRTyN7vay8U"
 nickname="Carlo"
 subject="comment 2"
 date="2013-11-03T09:48:53Z"
 content="""
Ah, the \"very complicated to get it to work\" part is what I didn't know, thanks for explaining and or the tips.
"""]]


code:
I work in a distributed startup.  We have a master repository on GitHub.  At the office we have modern hunky Linux desktops (seriously more powerful than any of our laptops).

I (and others) have hard deadlines at the end of the day (typically child commitments).  If I leave from a meeting or brainstorming session without having pushed all of my work into the cloud then I cannot continue working from home.  This is because our office is behind multiple levels of NAT over which we have no control.  Hence I am unable to remote into my machine in order to push work up to GitHub or scp it to my laptop.

Is there a way to get git-annex to sync only files that do not correspond to git objects available from our GitHub repository?  Because our source tree is quite large (2.5GB including tests and test data) I would not want git-annex to sync the entire tree.  And when I checkout a different branch I would not want git-annex to sync all changes between the previously checked-out branch and the new branch.  Rather I would like git-annex to discard any previously synced objects, note the identity of the new branch and the values of all files (object) not available from the upstream state of that branch on GitHub.

Thanks in advance for any suggestions.


code:
[[!comment format=mdwn
 username="gjost"
 ip="75.140.92.244"
 subject="comment 1"
 date="2014-05-20T15:19:35Z"
 content="""
> If I leave from a meeting or brainstorming session without having pushed all of my work into the cloud then I cannot continue working from home. This is because our office is behind multiple levels of NAT over which we have no control. Hence I am unable to remote into my machine in order to push work up to GitHub or scp it to my laptop.

This is not a git-annex solution, but you could use Pagekite to SSH to your work machine from home.

"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.3"
 subject="comment 2"
 date="2014-05-21T18:11:45Z"
 content="""
It seems to me that simply running `git annex sync --content` before you go home would do what you need. Have you tried using git-annex?

Some of the things you're saying don't entirely make sense to me, and so I suspect you're perhaps worrying about problems that don't exist, or that git-annex deals with nicely.
"""]]


code:
Hello,

I use the assistant to set up two repositories A and B synced using jabber. A third repository C on my server is used as rsync transfer. Syncing works fine between both repos when both are online.

But when either A or B is offline the sync does not happen when it comes online again, though the file was synced to C.

Is this because C is only a rsync repository and can't hold metadata? How can I achieve that the sync happens also when one of the repositories is offline?

I also tried using the static build of git annex on my server. It seemed to run fine but during the setup the assistant got an error about too many command line arguments. On A und B I use the ArchLinux AUR build (https://aur.archlinux.org/packages/git-annex-standalone/), on C I use the static build. Could it be a version mismatch?

Thanks!


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnsuhFUIfWNT-Q-C02FDaSQqceFDge5M9w"
 nickname="Florian"
 subject="comment 1"
 date="2013-09-09T21:49:17Z"
 content="""
Another try on the layout:

Hello,

I use the assistant to set up two repositories A and B synced using jabber. A third repository C on my server is used as rsync transfer. Syncing works fine between both repos when both are online.

But when either A or B is offline the sync does not happen when it comes online again, though the file was synced to C.

Is this because C is only a rsync repository and can't hold metadata? How can I achieve that the sync happens also when one of the repositories is offline?

I also tried using the static build of git annex on my server. It seemed to run fine but during the setup the assistant got an error about too many command line arguments. On A und B I use the ArchLinux AUR build (https://aur.archlinux.org/packages/git-annex-standalone/), on C I use the static build. Could it be a version mismatch?

Thanks!
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.4.51"
 subject="comment 2"
 date="2013-09-12T21:13:36Z"
 content="""
Yes, the rsync repository is not a git repository and so does not hold metadata. If you can install git-annex on your server, you can add a regular git repository there, and then the clients can sync to it even when the other is offline.

This is also why I an working on adding support for [[special_remotes/gcrypt]] repositories, so you can have a fully encrypted git repository on the server and sync through that.

>   during the setup the assistant got an error about too many command line arguments

I have never heard about such a problem. You should file a bug report with the details.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnsuhFUIfWNT-Q-C02FDaSQqceFDge5M9w"
 nickname="Florian"
 subject="comment 3"
 date="2013-09-13T10:52:33Z"
 content="""
Thanks for your reply. The bug report is at <http://git-annex.branchable.com/bugs/git-annex:_Argument_list_too_long/>

I'll be happy to provide any more help if I can!
"""]]


code:
Hi,

It is possible to keep devices sync only using a box.com account as a transfer remote, without Jabber? I can't use Jabber because of firewall restrictions.

It would be nice to be able to use the transfer remote, in my case box.net, as the sync "provider", for example by polling a file with the needed changes in a pre-defined interval.

Regards,

Stone


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.4.90"
 subject="comment 1"
 date="2013-07-17T19:06:59Z"
 content="""
We don't currently have a way to store a git repository on box.com, and you need such a git repo on a server somewhere if you're not using Jabber.

Of course you can mount the box.com, using either davfs2 or something else, and put a bare git repository in its directory, and if you set this up on multiple computers, it might just work (or they might both try to write to it at the same time and fail.. I have not tried).
"""]]


code:
Hi,

i'm thinking to use git-annex to synchronize my virtual machine directory (Virtualbox) between 3 pc. It's quite big: more than 200GB and some of the images are 40Gb in size.

The synchronization will be over a lan (obviously). It is already in place with 2pc and unison but the configuration of the 3rd pc is cumbersome.
Does anybody have experiences with git-annex and such amount of data?

Thanks in advance

Gabriele


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.6.49"
 subject="comment 1"
 date="2012-11-28T18:01:31Z"
 content="""
This volume of data should be no problem for git-annex.

The only catch would be if you're running those VM images and want to sync them as they're changed. With git-annex, you'd need to `git annex unlock` a file to allow it to be modified, and then `git annex add` it back and commit changes made to it.
"""]]


code:
I've been using git-annex locally for a couple months. So far I've only used it to keep track of files on my laptop and local usb hard drives. Now I would like to add a network into the picture, and hopefully start to move away from Dropbox.

I have Dropbox on two computers: my home machine and my work machine. The home machine is only on when I'm at home and the work machine is only on when I'm at work, so the computers are never on at the same time and thus can never communicate directly. What are my options for keeping annexes on these two machines in sync?

Initially I was hoping that I could use an S3 special remote for this, but I see that special remotes only hold the actual file data, not any of the git stuff. So I can't push my changes to S3 at work and then pull those changes in at home.

From what I can tell from the documentation, the only way I can handle this problem is to have an annex sitting on a VPS or someplace that both my home and work machines can talk to. Is that correct? That would be ok, but if I'm going to put my annex out there in the cloud somewhere, I want the files to be encrypted. It looks like git-annex only supports encryption of file data with special remotes, not a full annex. Is there no way to have some sort of encrypted git-annex hub?

I backed the assistant and have been following the development blog, but I haven't tried it out yet. Am I correct in thinking that nothing in the assistant will address this particular issue?


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawn7gQ1zZDdWhXy9H51W2krZYShNmKL3qfM"
 nickname="Karsten"
 subject="comment 1"
 date="2012-11-02T07:21:15Z"
 content="""
I might be thinking too simple, but can't you just put another annex repository on an usbdrive and use it to carry the metadata around? Add it as a remote to both compuers annex repositories and sync when you come/leave. As it does not have to carry the actual data some 100M will usually suffice. Just don't use any special remotes, but simply a cloned git repository.
"""]]


code:
[[!comment format=mdwn
 username="annexuser"
 ip="50.125.40.225"
 subject="comment 2"
 date="2012-11-02T19:41:27Z"
 content="""
That's what I've started to do. It gets the job done, but I don't like that I have to remember to plug in the stick and sync to it at the end of the work day, and then plug in the stick and sync from it when I get home. I'm hoping that there is some way to accomplish the syncing automagically, more akin to the Dropbox experience.
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.152.108.194"
 subject="comment 3"
 date="2012-11-04T19:44:11Z"
 content="""
You need two things:

1. A special remote in the cloud. S3, or rsync.net, or whatever.
2. A git repository hosted in the cloud. You could just use github (paying them if you want to avoid it being public).

Is it possible to have an encrypted git remote repository? It's not directly supported by git. The way git needs to be able to request arbitrary objects by SHA, kind of prevents encrypting things to any useful level. The only way I can think of to do that would be to use some cloud storage that can be mounted as a filesystem, and store an encrypted filesystem containing the git repo in a file inside that. Not easy.

The git-annex assistant is going to get around this by not requiring a central git repository and transferring git data peer-to-peer, but that will require both the peers be on the network at the same time.
"""]]


code:
[[!comment format=mdwn
 username="annexuser"
 ip="50.125.40.225"
 subject="comment 4"
 date="2012-11-05T02:07:00Z"
 content="""
Thanks for the feedback.

I'm thinking the smartest move will be for me to invest in some sort of wall-wart, like a SheevaPlug or RasberryPi. I can use that as the centralized hub and still avoid putting my files on the big bad interwebs.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawn7gQ1zZDdWhXy9H51W2krZYShNmKL3qfM"
 nickname="Karsten"
 subject="comment 5"
 date="2012-11-05T06:43:25Z"
 content="""
Just a small add-up: I've already used a truecrypt volume file on a dropbox successfully, although not for a git repository. Maybe that's worth a try.
"""]]


code:
[[!comment format=mdwn
 username="annexuser"
 ip="24.16.193.140"
 subject="comment 6"
 date="2012-11-05T17:20:50Z"
 content="""
Right now I use Dropbox with encfs. I could do the same thing with git-annex, but it's kind of a hassle.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnZEanlyzay_QlEAL0CWpyZcRTyN7vay8U"
 nickname="Carlo"
 subject="Quick Cloud Tip"
 date="2012-11-21T13:16:54Z"
 content="""
If you have broadband, get a raspberry pi and hook up a thumb drive. Then allow ssh access through your router for really cheap cloud storage.
"""]]


code:
[[!comment format=mdwn
 username="spwhitton"
 ip="163.1.167.50"
 subject="s3ql"
 date="2012-11-29T17:58:35Z"
 content="""
I am achieving success on this issue using afuse to automatically mount an s3ql volume.  Though of course you have to manually push and pull from the git repo.
"""]]


code:
I created an "full archive" repo on my local pc and an encrypted "full backup" repo on Box.com. I 'm copying files on the local repo and they are getting encrypted and uploaded to Box. Superb so far :)

What I am wondering though is, suppose my local pc dies. How do I get the data out of Box unencrypted from a new pc?


code:
[[!comment format=mdwn
 username="https://me.yahoo.com/a/FHnTlSBo1eCGJRwueeKeB6.RCaPbGMPr5jxx8A--#ce0d8"
 nickname="Hamza"
 subject="comment 1"
 date="2013-09-22T21:18:17Z"
 content="""
Just clone the repository on another computer or usb drive and enable box.com remote as long as you have the clone of the repo you can download your files back.
"""]]


code:
[[!comment format=mdwn
 username="John"
 ip="109.242.130.160"
 subject="comment 2"
 date="2013-09-22T22:20:22Z"
 content="""
Thank you Hamza!

I 'm new on git, so please excuse my trivial questions:

a) I am using the git-annex assistant, is it something I can do from there or is it command line only?
I googled a bit and from what I can tell, I should make a directory on the usb drive, go there and do
> $ git clone /path/to/fullArchiveRepo

Would that be correct?

b) Assuming I 've done it correctly, then I put the USB on a drawer and leave it there for a month. In the meantime, I 've been using the repo on my pc and more files have been archived encrypted on Box.com. Then my local pc dies. When I plug the usb on the new pc, will I be able to recover all the encrypted files, or only those up to 1 month ago?

c) What is the proper process to use the cloned repo on a new pc? Plug the usb drive, open the git-annex assistant and go through the \"create new repo\" but use the path for the existing repo on the usb? Then add another repo from Box (with the same account and the same directory there? Would that work?

Thank you for your time & knowledge! :)
"""]]


code:
[[!comment format=mdwn
 username="https://me.yahoo.com/a/FHnTlSBo1eCGJRwueeKeB6.RCaPbGMPr5jxx8A--#ce0d8"
 nickname="Hamza"
 subject="comment 3"
 date="2013-09-23T00:34:24Z"
 content="""
I do not use the assistant I prefer command line but try adding an USB drive (last I used it it had the option) It should do the clone and init it check the resulting folder if it contains a .git/ folder you have a clone of your git repo.

a) For manual cloning follow http://git-annex.branchable.com/walkthrough/adding_a_remote/

b) you need to keep syncing to the clone too. asistant should automatically sync to that repo. AFAIK asisstant detects when the usb repo is plugged and automatically syncs to it (again I do not use it but I seem to remember one of joey's talks showing that. YMMV)

If you lose all your repos then you lose the keys to un encrypt files they are gone!, if you have a outdated repo you can get the files back using the key stored in it but without the directory structure.

Correct workflow depends on how you use annex. I sync 3 computers with annex so if one dies I can clone the repo from another one. But if you are only using it on a single computer I would use a clone on an external usb drive that is always connected, so you have two clones one on the internal disk and one on the external disk so you can survive one of the drives crashing.
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.152.108.220"
 subject="comment 4"
 date="2013-09-23T20:18:38Z"
 content="""
Other good options to supplement an offline backup drive:

* A clone of the repository on another computer of yours, or on an Adroid tablet or phone.
* An encrypted git repository stored on a remote ssh server. (Supported by recent git-annex releases, although the assistant does not yet have a UI to set this up it's not very hard to do it manually at the command line and then the assistant will use it.)
"""]]


code:
Hello Joey,

I just want to know if file transfers between three inter-connected repositories somehow gets syncronized. I have a laptop, a local file server in my home and a virtual server on the internet.

Both my laptop and my file server are configured with a full git repository and connected through pairing and xmpp. The server on the internet is configured as a rsync special remote.

I want the local file server to hold a copy of everything in my annex, the rsync remote should get everything except the folder "media" (too large to upload and not that important) and the laptop whatever I manually decide (preferred content is set to "present").

I have added some files to the repository on the local file server and transferred their content to my laptop by using "git annex get". But when I started the web interface, I saw that those files who are present on both the file server and on the laptop get uploaded to the remote server from both computers, often the same file at the same time. Previously I though the two assistants would somehow talk to each other via xmpp so that doubled effort like that would be avoided. I'm also worried about data consistency because two apparently separate processes rsync to the same remote repository at the same time.

So my question would be: Is your xmpp protocol designed to deal with situations like this and I did not set it up correctly or is what I'm trying to accomplish simply not (yet) possible?


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.7.238"
 subject="comment 1"
 date="2013-01-14T16:22:33Z"
 content="""
git-annex does not currently prevent multiple uploads of the same file to a rsync special remote. It is able to guard against this when uploading to a git remote, since then the remote runs git-annex-shell, which can detect when an upload is already running. You might want to convert your rsync remote to a git remote.

I hope that rsyncing the same file twice at the same time is safe, but it's certainly excessively expensive.
"""]]


code:
Sometimes I'm doing something crazy like working in a large GIMP file, and I just want to be able to keep "committing" the changes to the annex but I hate running into the problem of having to keep unlocking the file over and over again while saving.  I guess one solution to this might be to use git-annex assistant?  But I'm not sure I really want a daemon running, and I don't want this auto-added... I just want to be able to leave the file unlocked while I'm actively working on it, then eventually say "I'm done with this!" and set it back to a state where it's locked.

Basically, I hate running into "permission denied" errors all the time when I'm saving!  I guess I could do some sort of command where I commit to the annex and then immediately unlock again... is there a better way?


code:
[[!comment format=mdwn
 username="http://identi.ca/cwebber/"
 nickname="cwebber"
 subject="Reasonable solution?"
 date="2012-11-27T21:24:49Z"
 content="""
I think I have built a reasonable solution... this function checks a specific file into git and then immediately unlocks it.

    function git-annex-unlocked-commit {
        if [ $# -ne 2 ]; then
            echo \"Wrong number of args.\"
            return 1
        fi

        if [ ! -e \"$1\" ]; then
            echo \"Need a filename!\"
            return 1
        fi

        read -p \"Really do an unlocked commit? (y/n): \"
        if [ \"$REPLY\" == \"y\" ]; then
            git commit $1 -m \"$2\" && git annex unlock $1
        fi
    }

Use it like:

    git-annex-unlocked-commit mediagoblin_postcard.xcf \"Starting to fill in spencer\"
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.6.49"
 subject="comment 2"
 date="2012-11-27T21:27:33Z"
 content="""
The only thing I would do differently is \"git annex add\" the file before \"git commit\". This is more efficient for large files since it avoids git looking at the whole file content.
"""]]


code:
[[!comment format=mdwn
 username="http://identi.ca/cwebber/"
 nickname="cwebber"
 subject="comment 3"
 date="2012-11-27T21:30:11Z"
 content="""
Just in case, since I don't see licensing stuff on this wiki: copyright to that code waived under CC0. :) http://creativecommons.org/publicdomain/zero/1.0/
"""]]


code:
[[!comment format=mdwn
 username="http://identi.ca/cwebber/"
 nickname="cwebber"
 subject="comment 4"
 date="2012-11-27T23:58:10Z"
 content="""
Ah, thanks Joey... here's an updated version:

    function git-annex-unlocked-commit {
        if [ $# -ne 2 ]; then
            echo \"Wrong number of args.\"
            return 1
        fi

        if [ ! -e \"$1\" ]; then
            echo \"Need a filename!\"
            return 1
        fi

        read -p \"Really do an unlocked commit? (y/n): \"
        if [ \"$REPLY\" == \"y\" ]; then
            git add $1 && git commit $1 -m \"$2\" && git annex unlock $1
        fi
    }

"""]]


code: In my documents folder I have some Mercurial and Git repositories. Are there any side effects if I track the whole directory with git annex?


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.227"
 subject="comment 1"
 date="2013-12-27T19:05:59Z"
 content="""
I don't recommend using git-annex that way.

.git directories cannot be checked into git, so will just be skipped. A hg repository will be checked in, but you can get into all kinds of bad situations if making commits to the \"same\" hg repository in two different locations. You will end up having to manually resolve conflicted merges to the files used by your distributed version control system, which defeats the point of using distributed version control.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnX1msQxnLoSeu7q-i-c9BWghonsN7Qmns"
 nickname="Jan Ulrich"
 subject="Thanks!"
 date="2013-12-27T20:02:20Z"
 content="""
Ok, I feared that answer. I'll have to change my directory structure.
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.227"
 subject="comment 3"
 date="2013-12-27T20:08:07Z"
 content="""
Well, you can always use .gitignore to ignore the whole content of the directory that you don't want git-annex to handle.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnvVfFLW4CTKs7UjdiLIsOn_cxj1Jnh64I"
 nickname="Charl"
 subject="use case: changing workstations mid-way through development session"
 date="2014-03-23T21:22:15Z"
 content="""
An important use case for me with automatic synchronization, is being able to change computers mid-way through a development session. I used to do this with dropbox for years: I'd work in a git checkout, then take another laptop to go work elsewhere, and just continue in the \"same\" synchronized git repo. Having to remember to commit and push a long list of repos before changing workstations is error-prone. Also, I prefer to commit when a discrete atom of work has been completed, and to push when a topic branch is good and ready to be merged (for example), not every time that I feel like changing workstations. :) Dropbox never dropped a stitch in all this time. As long as all laptops are in a 1) connected and 2) synced up state, switching is possible.

The limitation of not being able to sync the .git directories in git checkouts means that this use case can't currently be supported by git-annex (assistant). Is a work-around possible, or is this something that can't ever be supported due to the limitations of git itself?

"""]]


code:
Hi!

I have a laptop A on which I setup a box.com special remote as a transfer encrypted repository. It is quite unclear to me how I should configure laptop B to use the same box.com remote and share files between the two machines.


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawniayrgSdVLUc3c6bf93VbO-_HT4hzxmyo"
 nickname="Tobias"
 subject="Screencast"
 date="2013-04-11T09:59:24Z"
 content="""
Maybe this screencasts helps: [git-annex assistant remote sharing](http://git-annex.branchable.com/videos/git-annex_assistant_remote_sharing/)
"""]]


code:
[[!comment format=mdwn
 username="http://cyprio.net/"
 nickname="oz"
 subject="versions?"
 date="2013-04-15T22:50:31Z"
 content="""
Well, in the screencast it seems to work alright.

I only get a \"Syncing with laptop B\" on one side, nothing more happens. I'm not sure if there is a recommended version to follow this screencast, or if the versions need to match (I'm syncing between macos & linux/debian, and the mac packages are lagging behind).

My guess is that the assistant is simply \"not there yet\": using git-annex manually works just fine, but the assistant... ew. :/
"""]]


code:
I'm having trouble install from cabal on Debian-testing since the new beta released.

    % sudo aptitude remove --purge cabal-install
    % rm -rf $HOME/.cabal
    % sudo aptitude install cabal-install
    % cabal update
    % cabal install git-annex

The output all follows this general syntax:

    <package> depends on <anotherpackage> which failed to install

On the flip side, I upgrade my Debian to sid and it installed just fine through aptitude.

(Apologies for my English, and if this is simply a user error)


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.153.14.141"
 subject="comment 1"
 date="2012-09-25T16:13:08Z"
 content="""
The difficulty with using cabal on Debian testing (and unstable) is that Debian has an older version of Yesod, and I have not managed to get cabal to work with both versions at once.

If you build using the Makefile, it currently uses the old version of Yesod, so that'll work.

The [package from unstable](http://packages.debian.org/sid/git-annex) should install ok on testing.
"""]]


code: Since I'm just starting out with git-annex, I've had several false starts in getting things setup nicely between three machines.  In the course of so doing, I've ended up with several repositories which no longer exist, and which I've marked dead.  However, this is making the "git annex status" report a bit ugly, since these repositories no longer exist and can never exist again. Is there a way to truly purge dead repositories from my annex?  I'd be fine with a command that must be ran in tandem on all annexes before doing a sync...


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.0.23"
 subject="comment 1"
 date="2012-10-18T02:20:25Z"
 content="""
If you really want to, check out the git-annex branch and delete the line from uuid.log, and do this on every repo in tandem. But it seems a lot of bother for something that is entirely hidden except for this one place.
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.0.23"
 subject="comment 2"
 date="2012-10-18T02:23:54Z"
 content="""
Another possibilty is to reuse the dead uuids for later repos. You can do this by just setting annex.uuid in .git/config before you run `git annex init`, and then run `git annex fsck`.
"""]]


code:
[[!comment format=mdwn
 username="https://me.yahoo.com/a/2grhJvAC049fJnvALDXek.6MRZMTlg--#eec89"
 nickname="John"
 subject="Another idea"
 date="2012-10-18T05:38:07Z"
 content="""
What if git annex status didnn't show dead repository unless I specified \"git annex status --dead\"?  If you're OK with that, I'll try adding it.
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="2001:4830:1600:187::2"
 subject="comment 4"
 date="2013-09-04T06:44:42Z"
 content="""
Status no longer shows dead repositories.

See also, answer here: <http://git-annex.branchable.com/forum/How_to_delete_a_remote__63__/#comment-7ebf3804709a5aa64f1ca057a7df74f9>
"""]]


code:
Hi,

Here is my setup:

* I have a locally networked server Server-A with a large storage hard drive auto-mounted.
* I have two personal client computers: Client-A and Client-B.
* Client-A is my primary (desktop) computer.
* Client-B is my secondary (laptop) computer that I use less often.
* Git-annex is installed on all 3 computers and I use git-annex assistant on both Client-A and Client-B.
* Both Client-A and Client-B need to share the same repository/files.

What is the best or recommended git-annex assistant repository configuration for this setup? Ideally I want Server-A to have a full backup of the shared repository. I currently have a client repository for both Client-A and Client-B. Also, both Client-A and Client-B have a "full backup" repository pointing to the same repository hosted on Server-A. Is this OK? Should only one of the the client's have this repository as a "full backup"? Will this current setup also have git annex assistant auto-sync the repositories between the clients? I have both clients setup right now and they have both successfully cloned the shared repository, but I have noticed that they have yet to sync up modifications made on the other client. An alternative setup I can think of would be to have Client-A keep its current configuration and have Client-B switch the "full backup" repository to be just a "transfer" repository.

I hope my intentions are clear. Please give me your recommendations.

Regards,
Blake


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawlkA6XinbeOdnEDxEGQUWyjqPGh0kdMXr4"
 nickname="Blake"
 subject="update"
 date="2013-10-30T07:19:56Z"
 content="""
It seems both Client-A and Client-B ARE actually syncing with this current setup. I think Client-B was just delayed due to the initial startup scan. So I guess at this point I am more or less asking if having both Client-A and Client-B have the remote repository being a \"full backup\" type is appropriate or if there is a better configuration that achieves what I am hoping to have.

Regards,
Blake
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.47"
 subject="comment 2"
 date="2013-11-01T16:47:18Z"
 content="""
git-annex keeps track of the repository group on a per repository basis. That is, if the repository on Server-A is a full backup, both Client-A and Client-B will consider it to be one, and use it appropriately. You can't have just Client-A think it's a full backup; this setting will be automatically synced to Client-B.

Your setup sounds ok, although you might need to set up a XMPP account in order for Client-A and Client-B to immediately message one-another when they have new changes to sync. Otherwise, they might only poll Server-A occasionally for changes.
"""]]


code:
Quick question: I want to create a repository on my removable USB drive that will acquire all files (eg. "full backup" repository group), but where the files will be visible and usable if you load the drive on another computer.

How do I do that from within the assistant?

Thanks,

Zellyn


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.4.193"
 subject="comment 1"
 date="2013-07-02T17:00:41Z"
 content="""
This is not something the assistant really handles yet. The issue is that if you have a non-bare repository on the USB drive, something has to run `git annex sync` in it when changes are pushed to it, to update it to display the files that are in the repository.

One way to do this is to set up a non-bare repository by hand and add a git post-receive hook that runs `git annex sync`
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawkQafKy7hNSEolLs6TvbgUnkklTctUY9LI"
 nickname="Zellyn"
 subject="comment 2"
 date="2013-07-02T17:10:59Z"
 content="""
Aah, perfect. I did in fact set up a non-bare git annex on the drive. I was just lacking the `git annex sync` command. Thanks!
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawln3ckqKx0x_xDZMYwa9Q1bn4I06oWjkog"
 nickname="Michael"
 subject="post-receive hook looks troublesome"
 date="2013-07-03T16:11:13Z"
 content="""
I just tried setting up a post-receive hook with just \"git annex sync\" in it.
The end result is that files (git annex symlinks, really) are getting removed somehow as a result after a couple of git annex sync's done manually.
It would be nice if this actually worked.

"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.4.193"
 subject="comment 4"
 date="2013-07-03T19:54:21Z"
 content="""
Seems to me that any such problems would be caused by the environment variables git sets in the hook, or possibly the current working directory in use when the hook runs. So it might take some finessing to get right.

Meanwhile, I've committed a change that makes `git annex merge` merge in changes synced to the repo from other repositories. So that can be used the same way `git annex sync` can, but without the added overhead of committing, pushing, and pulling.
"""]]


code:
[[!comment format=mdwn
 username="http://edheil.wordpress.com/"
 ip="99.54.57.201"
 subject="comment 5"
 date="2013-07-04T05:11:46Z"
 content="""
Oh!  git annex merge is very nice.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmNu4V5fvpLlBhaCUfXXOB0MI5NXwh8SkU"
 nickname="Adam"
 subject="Confused"
 date="2013-11-03T00:13:47Z"
 content="""
Sorry, I'm confused.  I set up a Full Backup repo on a second hard drive, but the files are visible in its directory just like in my Client repos' directories.  Are the files not supposed to be visible?  Is something wrong?
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.47"
 subject="comment 7"
 date="2013-11-03T01:09:16Z"
 content="""
You can set it up that way, but the often confusing behavior (including not being able to umount a drive that has the git-annex assistant deamon running in it!) is why the webapp attempt to steer users toward making bare reposotories on USB drives.

If you click on \"Add another repository\" -> \"Removable drive\", you get a bare repository.

If you click on upper-right menu -> \"Add another local repository\" and enter a path, and tell it to combine the repositories, you get a synced non-bare repository, and potentially problems unmounting the drive since you now have 2 assistant daemons running.

I have now added a further link to the nice removable drive path to that second UI path.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmNu4V5fvpLlBhaCUfXXOB0MI5NXwh8SkU"
 nickname="Adam"
 subject="comment 8"
 date="2013-11-03T01:13:26Z"
 content="""
Thanks for the explanation, Joey.  I just posted a [comment](http://git-annex.branchable.com/bugs/Unnecessary_remote_transfers/#comment-f7110e694a9951d8ab546b8dec568bfa) about this on the bug report too.  Maybe the problem is simply that the Removable Drive option doesn't allow using internal, non-removable drives.

BTW, I don't know if this is relevant, but I only see one \"git-annex assistant\" process running.
"""]]


code:
1. Set up two computers with a client repository.
2. Add a removable drive repository and set it to transfer group.
3. Start adding files to computer #1 repository. See how the files get synced to the usb drive.
4. Connect the usb drive to computer #2 and see the files getting transferred to computer #2. Everything is looking good.

5. Connect the usb drive to computer #1 again.
6. Add a file that is larger than the remaining size of the usb drive, BUT smaller than the original size of the usb drive.
7. The file does not get transferred to the usb drive due to lack of disk space.

I would expect the assistant to make some space on the usb drive. Removing the files it knows has been transferred to computer #2, and then transfer the new file to the usb drive. But this does not seem to happen.

Have I missed something about how the transfer group is supposed to work?

Using version:
git-annex version: 4.20130802-g0a52f02
build flags: Assistant Webapp Pairing Testsuite S3 WebDAV Inotify DBus XMPP

Pre built tar file.


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.0.63"
 subject="comment 1"
 date="2013-08-24T19:22:05Z"
 content="""
The assistant is supposed to remove files from transfer repositories once the file has been transferred to all known clients.  This generally seems to work, with all the transfer repositories I've tested it with. Nothing is special about USB drives compared with other transfer repositories.

Perhaps you have not configured the USB drive as a transfer repository? Or perhaps you have another client repository (even a client repository you had once but have now deleted).
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnNqLKszWk9EoD4CDCqNXJRIklKFBCN1Ao"
 nickname="maurizio"
 subject="even a client repository you had once but have now deleted"
 date="2014-07-09T22:08:44Z"
 content="""
if this client repository has been deleted, why does it still have an impact? What is the user supposed to do to use a transfer repository if some day another client which was deleted has existed?

Old repositories seem to remain for ever in the webapp. You can try to delete them with the webapp, they will stay there. You can disable them, they will stay there. If you want to try to delete them again in the webapp, you first have to enable them again and nothing ever happens. There seems to be basically no way to delete repositories which have some day existed...
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="209.250.56.2"
 subject="comment 3"
 date="2014-07-11T19:29:06Z"
 content="""
The webapp certianly allows deleting repositories.

But, you can always go in and manually do it:

<pre>
git annex dead $uuid
git annex group $uuid unwanted
</pre>
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnNqLKszWk9EoD4CDCqNXJRIklKFBCN1Ao"
 nickname="maurizio"
 subject="comment 4"
 date="2014-07-17T19:48:30Z"
 content="""
I may be facing one unexpected behavior, but your statement that the \"webapp certainely allows to delete repositories\" does not match my experience. It does offer this option, but this option has failed on me so many times that I have learnt to live with a couple of repositories disabled, sitting here. Trying to delete them starts some process (emptying the repository, starting deletion process) but ends up in nothing. At least one of them does not seem to have a name anymore (probably what you refer to as $uuid) since only the part in square bracket is visible in the webapp. I concluded that this was what the webapp was supposed to do.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawnNqLKszWk9EoD4CDCqNXJRIklKFBCN1Ao"
 nickname="maurizio"
 subject="comment 5"
 date="2014-07-18T08:13:08Z"
 content="""
by the way: the commands you suggest do not seem to match what I read here:

http://git-annex.branchable.com/forum/How_to_delete_a_remote__63__/

"""]]


code:
Is there a PPA that Ubuntu people are using to track the latest git-annex?

The [Ubuntu install page](http://git-annex.branchable.com/install/Ubuntu/) mentions [https://launchpad.net/~rubiojr/+archive/git-annex](https://launchpad.net/~rubiojr/+archive/git-annex) which hasn't been updated for a while.


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmeki7KlfJpAAN9CUmi9EdwhwBmIhDMYuE"
 nickname="Marvin"
 subject="comment 1"
 date="2013-03-11T09:40:43Z"
 content="""
im also looking for a PPA with newer git-annex versions. mostly because of the glacier support...
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmVICFY2CDP08xdsPr3cgmScomy9HA-1sk"
 nickname="Andrew"
 subject="comment 2"
 date="2013-03-13T02:31:52Z"
 content="""
It's perfectly possible (though slightly messy) to install git-annex on Ubuntu via [[/install/cabal]], though you need to find and install all the required dependencies yourself (haskell, libidn, libgnutls, libgsasl etc). If you want to get crazy with this look at <http://developer.ubuntu.com/packaging/html/>
"""]]


code:
[[!comment format=mdwn
 username="fmarier"
 ip="121.98.93.240"
 subject="My PPA (Ubuntu Precise) has git-annex 4.20130417"
 date="2013-04-27T11:12:26Z"
 content="""
I just went through the pain of backporting 90+ Haskell packages from Debian unstable: https://launchpad.net/~fmarier/+archive/ppa
"""]]


code:
[[!comment format=mdwn
 username="http://grossmeier.net/"
 nickname="greg"
 subject="All PPAs are outdated"
 date="2013-05-08T17:38:04Z"
 content="""
My work preinstalled Ubuntu machine is now on Raring, and even there the version of git-annex is only 3.20121112ubuntu3; too old to have the webapp option enabled :/ The two PPAs mentioned here aren't configured to build for Raring, so even though the one from François has a build from May 1st (7 days ago), it doesn't help me ;)

François: mind updating your PPA to support Raring? Thanks much if you do!

Either that, or I'll take the time some day to do a proper install on this machine (read: Debian). ;-)
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmBUR4O9mofxVbpb8JV9mEbVfIYv670uJo"
 nickname="Justin"
 subject="comment 5"
 date="2013-05-08T23:25:37Z"
 content="""
If you are on raring you can still use

    deb http://ppa.launchpad.net/fmarier/ppa/ubuntu precise main

It's worked fine for me so far.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawkx5V3MTbzCXS3J7Mn9FEq8M9bPPYMkAHY"
 nickname="Pedro"
 subject="comment 6"
 date="2013-05-20T15:52:40Z"
 content="""
Be careful that the fmarier ppa includes more than just git-annex.
"""]]


code:
[[!comment format=mdwn
 username="https://openid.fmarier.org/"
 nickname="fmarier"
 subject="New location for my git-annex PPA"
 date="2013-06-15T07:42:13Z"
 content="""
My Ubuntu Precise PPA has moved here: https://launchpad.net/~fmarier/+archive/git-annex

It contains version 20130601 of git-annex.

As Pedro suggested, it's now in a separate PPA with only git-annex and the 220 Haskell packages it depends on.
"""]]


code:
Hi,

I am using git-annex assistant on my Fedora Linux computer. Everything seems to be working perfectly, however I have noticed that almost all of my files are now symbolic links to cryptic file names located in the .git/ directory. Oddly though it seems files inside git-annex assistant does not move/symbolic link files within git repositories inside my git-annex assist directories. My question is: how can I safely uninstall git-annex from my machine and restore all files to their non-symbolic link states? When I click on the settings drop-down for a repository inside git-annex assistant and choose disable it goes to the same page as the delete option. Any ideas?

Regards,
Blake


code:
[[!comment format=mdwn
 username="http://edheil.wordpress.com/"
 ip="99.54.57.201"
 subject="comment 1"
 date="2013-10-06T06:45:14Z"
 content="""
\"git annex uninit\" is the command which will revert an entire git annex repository back to a bunch of ordinary files, untracked by git annex (or git).  I'm not sure whether there is a way to issue that command from the assistant though.

"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawlOc-EOD5ZyggsAp6lOnU7x5MxizwLtUXA"
 nickname="Hendrik"
 subject="comment 2"
 date="2013-10-06T18:35:14Z"
 content="""
I had uninit'd my annex several time for testing git-annex. What I discovered was that is worked reliably but for all files that are duplicates. For duplicates only 1 of the files got restored properly.  All that was 1 year ago - so your results my differ. I had found a piece of script in the forum / tips sections that will show all duplicates.

Hope this helps...
"""]]


code:
Hello,

I was recently evaluating git-annex as a file sync tool, but I've got my files in a state where they are a mess.  The short version is that I have a local repo, and then an Encrypted S3 remote.  Once I encrypted the files, they got renamed and so forth and the files are now just symbolic links to files within the .git directory somewhere.   This has made some of them unusable for me and I need to revert the files back to not being symlinks any longer.  How would I go about doing that?

Thanks,

Brandon


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.152.246.110"
 subject="comment 1"
 date="2013-07-28T00:09:45Z"
 content="""
Run:

`git annex get $file`
`git annex unannex $file`

$file will now be back how it was before you used git-annex. Can also run above on whole directories.
"""]]


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawmRFsVANDSwNHzCWk-iP2_nXnfYKPJWziE"
 nickname="Brandon"
 subject="comment 2"
 date="2013-07-28T03:26:23Z"
 content="""
Thanks, much appreciated.  Got all of my files back successfully.
"""]]


code:
I have an annex set up with an s3 special remote. It works fine on one computer. I cloned the annex to a USB stick, plugged the stick into a second computer and cloned the annex to that machine. When I try to `git annex initremote cloud` on the second machine, I get the following error:

    git-annex: Unknown remote type S3

The second machine is running git-annex 3.20121017.


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.152.108.27"
 subject="comment 1"
 date="2012-11-07T18:57:17Z"
 content="""
It's possible to build git-annex without S3 support. I think a few Linux distros ship it this way due to not having all the necessary haskell libraries.
"""]]


code:
[[!comment format=mdwn
 username="annexuser"
 ip="24.16.193.140"
 subject="comment 2"
 date="2012-11-07T20:12:27Z"
 content="""
That was the issue. Thank you!
"""]]


code:
I just started using the assistant on an existing annex. I fire up the assistant like so:

    $ git annex webapp

Everything syncs and looks to be working fine. In another terminal, I then create a new file:

    $ touch testfile.txt

The assistant sees that file, immediately adds it and syncs. Ok. So now I want to edit that file.

    $ git annex unlock testfile.txt

As soon as I unlock the file, the assistant re-adds it to the annex and syncs, preventing me from editing the file. How can I edit files with the assistant running?


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.152.108.27"
 subject="comment 1"
 date="2012-11-11T16:06:42Z"
 content="""
I suspect you have an old build of the assistant. Version 3.20121009 was supposed to fix this.

I re-tested with current git head today, and found I was able to unlock a file, repeatedly edit it in place without the assistant re-adding it, and then run \"git annex add\" and the assistant auto-committed the changed file. Better behavior than I was expecting in fact -- the ability to repeatedly edit is a pleasant surprise.
"""]]


code:
[[!comment format=mdwn
 username="annexuser"
 ip="24.16.193.140"
 subject="comment 2"
 date="2012-11-12T20:09:20Z"
 content="""
    $ git annex version
    git-annex version: 3.20121017
"""]]


code:
I'm trying to figure out if git-annex can be used for the following use case:

- 2 repos in direct mode A and B
- A is on a local filesystem, B could be a NFS mountpoint or ssh
- B contains a number of toplevel directories, A contains a subset of those
- For the subset in A all changes in those directories that happen on A or B should be synced automatically between both repos, including file removals.
- A can decide to not carry a toplevel dir any more, but it must still exist in B.
- A can copy new toplevel dirs from B and those should be synced from then on.

I've been looking at the docs and played with two test repos, but I cannot seem to make the above work. To me it looks like I would need a possibility include/exclude paths from syncing via a regex.

Thanks,
Felix


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.4.51"
 subject="comment 1"
 date="2013-09-12T20:39:51Z"
 content="""
I guess you might be using the git-annex assistant. If you were just using git-annex at the command line, you could simply only run `git annex get` on the files or directories you wanted to get.

You can control which directories the git-annex assistant downloads/uploads files for using [[preferred_content]] expressions. Or the easy solution is to use the webapp to put the repository into \"manual mode\" and then manually run `git annex get` as described above to get just the files you want. (And `git annex copy --to remote` to share new files you make.)
"""]]


code:
I have a question on setting up a new repo. Is it possible to initialize a new repo using files which are already local on say my laptop, instead of downloading them from a S3 remote repository? Sorry if this is unclear. But I'm trying to make use of the files that are local on my laptop so I don's have to go through the ordeal of downloading them from S3.

I should also mention that I don't have a complete set of all the files locally on the laptop vs. what's already in the S3 repository.


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawn7gQ1zZDdWhXy9H51W2krZYShNmKL3qfM"
 nickname="Karsten"
 subject="comment 1"
 date="2013-05-27T18:13:43Z"
 content="""
Hi,

just copy the local File into the annex again, replacing the symlinks. If you have the assistant running, it should re-add the files automatically, otherwise you can 'git annex add' them manually.
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 nickname="joey"
 subject="comment 2"
 date="2013-05-27T18:47:17Z"
 content="""
You can also use `git annex reinject` to feed in contents of specific files, without needing to directly touch the files in the repository.

Or, you can check all the local files into a temporary directory. Either the assistant or a manual `git annex add` will
notice if these files have the same content as files already in the repository. The files will then be available in two locations, the temp directory and wherever it was checked into your repository before. You can then delete the temp directory.
"""]]


code: On BTRFS it is possible to use [reflinks / clones](https://en.wikipedia.org/wiki/Btrfs#Cloning). This is the equivalent of hardlinks except that when the file is modified, a copy is performed (copy on write). Perhaps git-annex could detect the availability of this feature and use it in case it is available (and the repository and the file are in the same filesystem).


code:
[[!comment format=mdwn
 username="http://thkoch2001.myopenid.com/"
 nickname="thkoch"
 subject="It would also be nice, if git-annex would use btrfs reflinks on unlock"
 date="2013-08-24T12:46:40Z"
 content="""
I don't know whether git-annex already does use btrfs reflinks, but I suspect, that I double the size of my git-annex repo folder on disk when I unlink all files.
"""]]


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.0.63"
 subject="comment 2"
 date="2013-08-24T15:54:02Z"
 content="""
git-annex has always used cp --reflink=auto, including when it cp's the file in `git annex unlock`.

You can verify this with --debug.
"""]]


code:
I use git everywhere i can to manage versions, but I have a usecase that is probably very common, but i could not see in the howto lists.

I have a shared fileserver(FS) that is managed by others and is full of the equivalent of binary blobs (media, word docs etc). Binary blobs of course are something that git cannot normally do anything meaningful with. That is diff/patch for managing the evolution of any given file. Binary blobs have a different lifecycle of course, and i see annex as the solution for managing that.

The remote FS is being used as an SMB server to windows and linux clients. The FS has other capabilities that i can use other than SMB mount including rsync and ssh. As it is running samba it also uses symlinks underneath the the SMB to manage shared folders, which can be seen when mounted in unix mode. This means the FS landscape is different when using samba as compared to rsync and ssh, as some paths may be symlinked in. The symlinks should not effect this use case, but I mention them because I don't know how annex would manage this.

The basic scenario is that i have a set of project files and folders in tree on the remote FS. I want to use git to pull these binary files from the FS to edit locally while also seein/capturing changes made to files in that tree by other people not using git. Then i want to push my edits back, without effecting the files that i have no responsibility for (but have write access to).

Think a team of people with various technical capabilities working on changing binary blobs in this remote directory tree. I want to manage my interactions with portions of that remote FS tree via git (annex) with a local mirror (preferably actually containing only the files i care about) so that i can manipulate them locally, clone to other work machines and generally play about with and then push back while watching the whole tree and capturing changes others make (during sync/merge/push/pull?). Because i do not manage it, or own the contents, i also need to be able to maintain the some of the permissions (guid/uid) of the remote and untouched files.

Can you give me any suggestions?


code:
[[!comment format=mdwn
 username="https://www.google.com/accounts/o8/id?id=AItOawkI9pq1WH6MWeExXHVQVEsniT3DdFv4AB8"
 nickname="Roberto"
 subject="My usecase too"
 date="2014-01-12T23:43:18Z"
 content="""
Just wanted to thank your for describing my very same use case. Unfortunately I still haven't wrapped my head around git annex to accommodate such scenario.
"""]]


code:
[[!comment format=mdwn
 username="https://launchpad.net/~timo-linux"
 nickname="Tim O'Callaghan"
 subject="Would GIT_DIR or GIT_WORK_TREE be valid for this?"
 date="2014-01-14T07:29:31Z"
 content="""
For example if i mounted this filesystem and used annex and GIT_ env variables to watch it? Presumably in direct mode, because i don't want to remove the source files, but i do want to manage my source files.
"""]]


code:
[[!comment format=mdwn
 username="https://launchpad.net/~timo-linux"
 nickname="Tim O'Callaghan"
 subject="What about annex mirror? "
 date="2014-01-14T08:00:42Z"
 content="""
I cannot find any documentation on it, is it appropriate for this situation?
"""]]


code:
[[!comment format=mdwn
 username="http://cstork.org/"
 nickname="Chris Stork"
 subject="Many peoples' use case"
 date="2014-01-14T09:39:05Z"
 content="""
Well, a description of this use case is posted every few weeks in different forms. Here are two, including my own: ;-)

* [[Using git annex with a SMB  47  FTP TV NAS with preconfigured dirs]]
* [[Direct special remotes]]
"""]]


code:
[[!comment format=mdwn
 username="https://launchpad.net/~timo-linux"
 nickname="Tim O'Callaghan"
 subject="Still have not found a reasonable solution for this myself."
 date="2014-02-03T14:34:14Z"
 content="""
And it seems i'm not the only one, So I'd like to bump the topic.

Can someone at least tell me if it is possible with annex/annex-gui or not?
"""]]


code:
Hello,

I'm very excited about Git Annex and Git Annex Assistant.

One big issue that I have is that I currently have all of my photos (70-80GB) on a HTPC because it has a large hard drive. I have a decent laptop/screen set-up where I would prefer to manage the photos, but the hard drive in there is a small SSD.

I use Shotwell to manage my photos (currently on the HTPC). I would be happy to keep things simple and only access them on the laptop. I have 100GB of box.com storage (and another 100GB of Mega.co.nz storage, but I don't think that is supported by GAA yet).

Ideally, what I would like is for a cache of, say, 10GB of my recently-accessed photos to live on my laptop, with the remaining 70GB living on both my HTPC and box.com. If I ever needed the underlying files for non-cached files (say if I was trying to view full-quality versions of them or send them to someone), it could try to pull these from my HTPC over the local network or, if I was "on the road", box.com. As I understand it, Shotwell has its own database and a set of thumbnails etc that you can use to manage and browse your photos while very rarely accessing the underlying photos.

Is this possible with the existing GAA/Shotwell, or does one or the other require changes? Could I solve the problem by using something like the sharebox Git-Annex FUSE filesystem, so that Shotwell thinks that the files are local, but runs away and grabs them if they are remote?

I would appreciate any thoughts that anyone has - particularly if anyone has made this work.


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 nickname="joey"
 subject="comment 1"
 date="2013-05-27T19:09:50Z"
 content="""
Mega can be used via [[/tips/megaannex]]. I don't have personal experience with it, but if you set up a repository manually using that, the assistant can use that repository just as it uses any other repository.

git-annex at the command line is great for small local repositories that pull files from various larger remotes as needed. You just run \"git annex get\" when you want a file and \"git annex drop\" when you want to free disk space. You can also use this mode with the assistant, by configuring the local repository to be in \"manual mode\".

By default though, the way the assistant handles this kind of use case is with `archive` directories. It tries to move any files in an archive directory away from your local disk, and it tries to get any files not in an archive directory to be locally available. So you can just move files around between directories to control where they are stored. See [[assistant/archival_walkthrough]] for details an an example video.
"""]]


code:
Hello,

I want to use git-annex on a couple of machines that are not under my control (and one that is). For that I use the provided static build, but encountered several problems:

I suppose the first step for command line use is to execute runshell:

On one machine:

flindner@yoko:~> software/git-annex.linux/runshell
/bin/bash: /lib64/libc.so.6: version `GLIBC_2.11' not found (required by /home/flindner/software/git-annex.linux//lib/x86_64-linux-gnu/libreadline.so.6)

Is there anything I can do about it?

On the other machine:

flindner@bladefoam2:~$ software/git-annex.linux/runshell
bash-4.1$

It starts a bare, non-configured shell instance. Can I modifiy and source the script to only set the environment and not start up a new shell?

Another question: If using ssh:// remotes, how can I tell git-annex the first command to set up the environment need in order to execute command via SSH?

Thanks,

Florian


code:
[[!comment format=mdwn
 username="http://joeyh.name/"
 ip="4.154.0.149"
 subject="comment 1"
 date="2012-10-09T15:10:45Z"
 content="""
Yes, it seems glibc 2.11 is the oldest version you can get away with. At least until we get a build machine with some truely ancient libc, but modern versions of everything else. Statically linking libc, or including it in the tarball are unfortunatly not technically possible.

You don't need to use runshell if you just want to use the assistant. Which is what this static build is really targeted for. If you want to use all of git-annex, you're probably better off installing it properly.
It is possible to use \"runshell git annex\" to run a single command inside the shell. Or even make shell script wrappers that do that.. but it seems more difficult than installing git-annex normally.

The static build can be used with ssh. The git-annex assistant should set things up properly. If you want to do it by hand, when it does is configure the ssh key to run ~/.ssh/git-annex-shell, and that file is then made a shell script that runs `runshell git-annex-shell -c \"$SSH_ORIGINAL_COMMAND\"`
"""]]