Provided by: git-annex_8.20200226-1_amd64 bug

NAME

       git-annex-import - add a tree of files to the repository

SYNOPSIS

       git annex import --from remote branch[:subdir] | [path ...]

DESCRIPTION

       This  command  is  a  way  to  import  a  tree of files from elsewhere into your git-annex
       repository. It can import files from a git-annex special remote, or from a directory.

IMPORTING FROM A SPECIAL REMOTE

       Importing from a special remote  first  downloads  all  new  content  from  it,  and  then
       constructs  a git commit that reflects files that have changed on the special remote since
       the last time git-annex looked at it. Merging that commit into your repository will update
       it to reflect changes made on the special remote.

       This  way,  something  can  be  using  the  special remote for file storage, adding files,
       modifying files, and deleting files, and you can track those changes using git-annex.

       You can combine using git annex import to fetch changes from a  special  remote  with  git
       annex export to send your local changes to the special remote.

       You can only import from special remotes that were configured with importtree=yes when set
       up with git-annex-initremote(1). Only some kinds of special remotes will let you configure
       them this way. A perhaps non-exhastive list is the directory, s3, and adb special remotes.

       To  import  from a special remote, you must specify the name of a branch.  A corresponding
       remote tracking branch will be updated by git annex import. After  that  point,  it's  the
       same  as  if  you had run a git fetch from a regular git remote; you can merge the changes
       into your currently checked out branch.

       For example:

        git annex import master --from myremote
        git annex merge myremote/master

       You could just as well use git merge myremote/master as the second step,  but  using  git-
       annex  merge  avoids  a  couple  of  gotchas. When using adjusted branches, it adjusts the
       branch before merging from it. And it avoids the merge failing on the first merge from  an
       import due to unrelated histories.

       If  you  do use git merge, you can pass --allow-unrelated-histories the first time you git
       merge from an import. Think of this as the remote being a separate git repository with its
       own files. If you first git annex export files to a remote, and then git annex import from
       it, you won't need that option.

       You can import into a subdirectory, using the  "branch:subdir"  syntax.  For  example,  if
       "camera" is a special remote that accesses a camera, and you want to import those into the
       photos directory, rather than to the root of your repository:

        git annex import master:photos --from camera
        git merge camera/master

       The git annex sync --content command (and the git-annex assistant) can  also  be  used  to
       import    from    a    special    remote.    To   do   this,   you   need   to   configure
       "remote.<name>.annex-tracking-branch" to tell it what branch to track. For example:

        git config remote.myremote.annex-tracking-branch master
        git annex sync --content

       If a preferred content expression is configured for the special remote, it will be honored
       when  importing  from  it.  Files that are not preferred content of the remote will not be
       imported from it, but will be left on the remote.

       However, preferred content expressions that relate  to  the  key  can't  be  matched  when
       importing,  because  the content of the file is not known. Importing will fail when such a
       preferred content expression is  set.  This  includes  expressions  containing  "copies=",
       "metadata=",  and  other  things  that  depend  on  the key. Preferred content expressions
       containing "include=", "exclude=" "smallerthan=", "largerthan=" will work.

IMPORTING FROM A DIRECTORY

       When run with a path, git annex import moves files from somewhere outside the git  working
       copy, and adds them to the annex.

       This  is  a  legacy  interface.  It  is  still supported, but please consider switching to
       importing from a directory special remote instead, using the interface documented above.

       Individual files to import can be specified. If  a  directory  is  specified,  the  entire
       directory is imported.

        git annex import /media/camera/DCIM/*

       When  importing  files,  there's  a possibility of importing a duplicate of a file that is
       already known to git-annex -- its content  is  either  present  in  the  local  repository
       already,  or  git-annex knows of another repository that contains it, or it was present in
       the annex before but has been removed now.

       By default, importing a duplicate of a known file will result  in  a  new  filename  being
       added  to  the repository, so the duplicate file is present in the repository twice. (With
       all checksumming backends, including the default SHA256E, only one copy of the  data  will
       be stored.)

       Several  options  can  be  used  to  adjust  handling of duplicate files, see --duplicate,
       --deduplicate,   --skip-duplicates,    --clean-duplicates,    and    --reinject-duplicates
       documentation below.

OPTIONS FOR IMPORTING FROM A DIRECTORY

       --duplicate

              Do not delete files from the import location.

              Running  with  this  option repeatedly can import the same files into different git
              repositories, or branches, or different locations in a git repository.

       --deduplicate
              Only import files that are not duplicates; duplicate files will be deleted from the
              import location.

       --skip-duplicates
              Only  import  files  that  are  not  duplicates. Avoids deleting any files from the
              import location.

       --clean-duplicates
              Does not import any files, but any files found in  the  import  location  that  are
              duplicates are deleted.

       --reinject-duplicates
              Imports files that are not duplicates. Files that are duplicates have their content
              reinjected into the annex (similar to git-annex-reinject(1)).

       --force
              Allow existing files to be overwritten by newly imported files.

              Also, causes .gitignore to not take effect when adding files.

       file matching options
              Many of the git-annex-matching-options(1) can be used to specify files to import.

                   git annex import /dir --include='*.png'

              ## COMMON OPTIONS

       --jobs=N -JN
              Imports multiple files in parallel. This may be faster.  For example: -J4

              Setting this to "cpus" will run one job per CPU core.

       --json Enable JSON output. This is intended to be parsed by programs that  use  git-annex.
              Each line of output is a JSON object.

       --json-error-messages
              Messages  that  would normally be output to standard error are included in the json
              instead.

CAVEATS

       Note that using --deduplicate or --clean-duplicates with the WORM backend does not look at
       file content, but filename and mtime.

       If  annex.largefiles  is  configured, and does not match a file, git annex import will add
       the non-large file directly to the git repository, instead of to the annex.

SEE ALSO

       git-annex(1)

       git-annex-add(1)

       git-annex-export(1)

       git-annex-preferred-content(1)

AUTHOR

       Joey Hess <id@joeyh.name>

                                                                              git-annex-import(1)