Please describe the problem.
When using the adb special remote to sync content from my android phone to the local annex, the command fails with an error of "Argument list too long".
What steps will reproduce the problem?
I'm using Google Pixel 3 with Android 12 on it, installed the adb
package, and attempted to add the special remote with the path "/sdcard", then checking out the remote tracking branch to "master:android" (since changed to master:android-buggy). The command fails with.
What version of git-annex are you using? On what operating system?
- Debian Linux 11.2
- git-annex version: 8.20210223
- Android OS 12
- Linux strigo 5.10.0-11-amd64 #1 SMP Debian 5.10.92-1 (2022-01-18) x86_64 GNU/Linux
Please provide any additional information below.
# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
git annex initremote android type=adb androiddirectory=/sdcard encryption=none exporttree=yes importtree=yes
git annex wanted android 'include=*.mp3 or include=*.ogg or include=*.jpg or include=*.png or include=*.mp4 or include=*.pdf'
git annex import --from android master:android
# on subsequent attempts to sync
git annex sync --content android
commit
On branch master
nothing to commit, working tree clean
ok
list android find: exec stat: Argument list too long
find: exec stat: Argument list too long
git-annex: Unable to list contents of android: adb find failed
failed
Not updating export to android to reflect changes to the tree, because export tracking is not enabled. (Set remote.android.annex-tracking-branch to enable it.)
git-annex: sync: 1 failed
# Version information
git-annex version: 8.20210223
build flags: Assistant Webapp Pairing Inotify DBus DesktopNotify TorrentParser MagicMime Feeds Testsuite S3 WebDAV
dependency versions: aws-0.22 bloomfilter-2.0.1.0 cryptonite-0.26 DAV-1.3.4 feed-1.3.0.1 ghc-8.8.4 http-client-0.6.4.1 persistent-sqlite-2.10.6.2 torrent-10000.1.1 uuid-1.3.13 yesod-1.6.1.0
key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
operating system: linux x86_64
supported repository versions: 8
upgrade supported from repository versions: 0 1 2 3 4 5 6 7
local repository version: 8
# End of transcript or log.
Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
This is the first time I've tried it. However, when I restricted the path to /sdcard/DCIM or /sdcard/Music, I didn't have any problems. I could use some assistance regarding how to "copy" a file from one path to another inside an annex. It appears that I could try to resolve and then symlink to the same file, or maybe unlock, copy, and commit both copies of the file. E.g. I'd like to have a copy of the music from my primary "annex/Music" into the "annex/android/Music" tree, then "git rm" the file from "annex/android/Music" when I'm done with it.
Ah so unfortunately android's
find
does not break the command runs by arrgument size like xargs does. So the+
argument can't be used, instead I'll make it pipe through xargs.(To copy a file, you can use
cp -a
or justcp
, followed bygit-annex add
. either will work.)