Recent comments posted to this site:
I am yet to grasp all the glorious plans here, but wondered to ask: it seems like it then should be possible to establish a branch only with annexed archive? may be matching some preferred content expression? Usecase: a relatively large git/annex repository mixing in code, large data files, and some pre-built binaries. If I could seamlessly and reproducibly (with the progress of their master) tease those apart (for separate Debian packaging ;)), that would be really handy
[[!meta author=yoh]]
I have a use case in which a colleague wishes to have a working copy of my data repository to use with the current version of my model. When a new version of the model is available they would likewise update their git-annex clone of my data. The colleague wants to drop any files that have been made obsolete by this change, but I do not see an efficient way to make this determination. They could of course drop everything and then do git annex get . but that could be very expensive if only a small subset of the files have actually changed.
I'm probably just missing something basic, as this seems to be a reasonably frequent use case.
To avoid frequent typing of pin + RSA passcode + password, we typically establish an ssh control master just once. This works fine with regular git commands, but the git-annex command apparently try to create a different socket. Even that would be ok, except that apparently it is a new socket each time we enter a command.
With sufficient "-vvvv" we see things like:
...
debug1: Executing proxy command: exec ssh -l fred proxy.xxx.yyy direct host
...
(Note I have eliminated references to the actual machine names and userid's.)
If the command had instead been:
exec ssh -l fred proxy.xxx.yyy direct /home/fred/.ssh/master_host:22
everything would have worked fine. In fact, we are now using:
git config remote.origin.annex-ssh-options '-S /home/fred/.ssh/master_host:22'
and this eliminates the issue. But it would be nice if git annex could somehow automatically use the pre-existing connection. Is there a better way to achieve this?
Splitting the index (git update-index --split-index) doesn't work for me at all. While it may initially reduce the size of .git/index, making a commit inflates it back to its original size anyway.
I thought it might be some interaction with v4 index and its compression mechanics but it does the same if I set it to v3 index. For (manufactured) example:
$ git update-index --split-index
$ du -sh .git/*index*
4.0K .git/index
76M .git/sharedindex.70e661456302b51a7ec59bf5b32d630e74b34c7c
... add 8000 files ...
$ git commit -m "add files"
$ du -sh .git/*index*
80M .git/index
76M .git/sharedindex.70e661456302b51a7ec59bf5b32d630e74b34c7c
The OSX 10.10 build works fine on my 10.11 El Capitan machine. Updated this page to reflect that.
git-annex is also in 'brew cask', automating installation from the OSX binaries. I've sent PR 18105 to the brew cask team to get the cask to work for 10.11.
@grawity, the empty (or unset) preferred content setting causes a default behavior to
be used. What the default is varies depending on what you're doing. For
example, if you're running git annex drop --auto
, it defaults to dropping
everything when there's no preferred content setting. On the other hand,
git annex sync --content
defaults to getting everything. So, this is
diffent than using "anything".
If you use "standard" and the repo is not in exactly one of the standard groups, it behaves the same as if you'd given it an unparseable preferred content setting. It will want all files it has and none it doesn't have.
Could you clarify how the default (empty) preferred content setting works? Is it equivalent to anything
, or more magical than that?
(Asking because I noticed that annex find --in . --want-drop
in such a repo matches basically all files, even the ones that annex sync --content
just retrieved. Likewise, it retrieves files while annex find --not --in . --want-get
lists nothing. I'm fine with the sync behavior here, but somewhat worried that a future annex sync --content
would actually decide to drop everything... I'm running 6.20160126 with numcopies=1.)
Also, what happens if I use standard
for a repo that's not in any group?
Check out the tag for the release of git-annex that you want to build to avoid building from master, which may not be ready. In this case, I was adjusting some build flags this morning and hadn't tried a stack build yet.
git-annex-shell is just a symlink to git-annex. I guess that stack install bypasses the code that makes cabal install set up that symlink. You can make the symlink yourself I suppose.