Please describe the problem.

the import and reinject commands are needlessly destructive by default. this caused me some grief as it repeatedly "destroyed" data on my cammeras sdcard as i tried to import new data nad/or reinject missing data correctly without having to scan 40gb of pictures for hases repeatedly.

software versions

$ git-annex version
git-annex version: 6.20180626-gdf91a5cff
build flags: Assistant Webapp Pairing S3(multipartupload)(storageclasses) WebDAV Inotify DBus DesktopNotify ConcurrentOutput TorrentParser MagicMime Feeds Testsuite
dependency versions: aws-0.16 bloomfilter-2.0.1.0 cryptonite-0.23 DAV-1.3.1 feed-0.3.12.0 ghc-8.0.2 http-client-0.5.7.1 persistent-sqlite-2.6.3 torrent-10000.1.1 uuid-1.3.13 yesod-1.4.5
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 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL
remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar hook external
operating system: linux x86_64
supported repository versions: 3 5 6
upgrade supported from repository versions: 0 1 2 3 4 5

]

what i would like to see

  • better documentation for commands that sort out non-destructive importing (@joeyh already pointed out cp followed by git annex add on irc, but that doesn't cover known files/keys)
  • comprehensible options that disable deletion for reinject/import, i consider the semantics of "move" for commands with actionable names like "import" and "reinject" a bit deceptive even if they are documented that way

for me personally the ideal case would be a cp command for git annex that would copy in new data in a cp style allowing to use options like noclobber and perhaps reinject

it may be sensible to leave supporting this to the importtree feature