This special remote stores files on an Android device.
The adb
program is used to access the Android device, which
allows connecting to it in various ways like a USB cable or wifi.
example
To add a remote for the /sdcard/DCIM directory on the Android device, allowing to import and export photos:
git annex initremote android type=adb androiddirectory=/sdcard/DCIM encryption=none exporttree=yes importtree=yes
git annex export master --to android
configuration
A number of parameters can be passed to git annex initremote
to configure
the adb remote.
androiddirectory
- Set to the location on the Android device where files for the special remote are stored.androidserial
- Normally this is not needed, but if multiple Android devices are accessible, you'll be prompted to use it to specify which one to use.exporttree
- Set to "yes" to make this special remote usable by git-annex-export. It will not be usable as a general-purpose special remote. Since this makes the exported files easily browsable on the Android device, you will almost always want to enable this.importtree
- Set to "yes" to make this special remote usable by git-annex-import. When set in combination with exporttree, this lets files be imported from it, and changes exported back to it.annexobjects
- When set to "yes" along with "exporttree=yes", this allows storing other objects in the remote along with the exported tree. They will be stored under .git/annex/objects/ in the remote.oldandroid
- Set to "yes" if your Android device is too old to supportfind -printf
. Enabling this will make importing slower. If you see an error like "bad arg '-printf'", you can enable this option, by running eg:git-annex enableremote android oldandroid=yes
ignorefinderror
- Set to "yes" to ignore errors when running "adb find" on the Android device. This can be useful eg, if some subdirectories are not readable, to let it import the other things that are readable.encryption
- One of "none", "hybrid", "shared", or "pubkey". See encryption.keyid
- Specifies the gpg key to use for encryption.chunk
- Enables chunking when storing large files.
@iakornfeld, like all special remotes, the git repository is not stored in the special remote, only the content of annexed files.
Using
git annex export
like in the example, the android device will contain files with the same names as those in your git-annex repository.If you want to use a git-annex repository on the Android device, see Android instead of this. However, for pushing a tree of annexed files to Android device and updating it, this special remote can be a good fit.
I am getting the following error on recent imports using the adb remote:
I dont know if this is due to a recent update of git-annex or simply the growth of the files on my phone.
Cheers, Steffen
It would probably be better to file a bug report about it than to discuss the problem here. I guess something you could include in the bug report is how many files are in the directory.
It may be that android's
find
command is either not breaking up the list of files that it passes to the -exec command at all, or is confused about how big an argument list it can build up. So this could also depend on your version of Android, so be sure to include that in the bug report.Is there any way to enable a special remote on demand?
My configuration is comprised of local standard remotes (directories located on the same computer) and my phone as described in the Android tutorial [1]. I've noticed that git-annex automatically ignores the standard remotes that are missing (the aforementioned directories actually map to external drives that may or may not be connected), that's perfect, but for the phone special remote it seems to always try to connect to it, as a result the command "git annex sync" constantly outputs error messages:
[1] https://git-annex.branchable.com/tips/android_sync_with_adb/
Finally found the answer on my own: