---
name: "Dist::Zilla::Plugin::Git::GatherDir"
section: "3pm"
platform: "linux"
package: "libdist-zilla-plugin-git-perl"
version: "2.051-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Dist::Zilla::Plugin::Git::GatherDir"
---

# Dist::Zilla::Plugin::Git::GatherDir(3pm)

Gather all tracked files in a Git working directory

## NAME

Dist::Zilla::Plugin::Git::GatherDir - Gather all tracked files in a Git working directory

## VERSION

version 2.051

## SYNOPSIS

In your *dist.ini*:

```
    [Git::GatherDir]
    root = .                     ; this is the default
    prefix =                     ; this is the default
    include_dotfiles = 0         ; this is the default
    include_untracked = 0        ; this is the default
    exclude_filename = dir/skip  ; there is no default
    exclude_match = ^local_      ; there is no default
```

## DESCRIPTION

This is a trivial variant of the GatherDir plugin.  It looks in the directory named in the "root" attribute and adds all the Git tracked files it finds there (as determined by `"git ls-files"`).  If the root begins with a tilde, the tilde portion is passed through `glob()` first.

Most users just need:

```
  [Git::GatherDir]
```

...and this will pick up all tracked files from the current directory into the dist.  You can use it multiple times, as you can any other plugin, by providing a plugin name.  For example, if you want to include external specification files into a subdir of your dist, you might write:

```
  [Git::GatherDir]
  ; this plugin needs no config and gathers most of your files
  [Git::GatherDir / SpecFiles]
  ; this plugin gets all tracked files in the root dir and adds them under ./spec
  root   = ~/projects/my-project/spec
  prefix = spec
```

## ATTRIBUTES

This plugin inherits attributes from Dist::Zilla::Plugin::GatherDir, with the following modifications:

### root

See "root" in Dist::Zilla::Plugin::GatherDir. It does not need to be the root of a Git repository, but it must be inside a repository.

### include\_untracked

By default, files not tracked by Git will not be gathered.  If this is set to a true value, then untracked files not covered by a Git ignore pattern (i.e. those reported by `"git ls-files -o --exclude-standard"`) are also gathered (and you'll probably want to use Git::Check to ensure all files are checked in before a release).

`"include_untracked"` requires at least Git 1.5.4, but you should probably not use it if your Git is older than 1.6.5.2.  Versions before that would not list files matched by your *.gitignore*, even if they were already being tracked by Git (which means they will not be gathered, even though they should be).  Whether that is a problem depends on the contents of your exclude files (including the global one, if any).

### follow\_symlinks

Git::GatherDir does not honor GatherDir's follow\_symlinks option.  While the attribute exists (because Git::GatherDir is a subclass), setting it has no effect.

Directories that are symlinks will not be gathered.  Instead, you'll get a message saying `"WARNING: %s is symlink to directory, skipping it"`. To suppress the warning, add that directory to `"exclude_filename"` or `"exclude_match"`.  To gather the files in the symlinked directory, use a second instance of GatherDir or Git::GatherDir with appropriate `"root"` and `"prefix"` options.

Files which are symlinks are always gathered.

## SUPPORT

Bugs may be submitted through the RT bug tracker \<https://rt.cpan.org/Public/Dist/Display.html?Name=Dist-Zilla-Plugin-Git\> (or bug-Dist-Zilla-Plugin-Git@rt.cpan.org \<mailto:bug-Dist-Zilla-Plugin-Git@rt.cpan.org\>).

There is also a mailing list available for users of this distribution, at \<http://dzil.org/#mailing-list\>.

There is also an irc channel available for users of this distribution, at `"#distzilla"` on `"irc.perl.org"` \<irc://irc.perl.org/#distzilla\>.

## AUTHOR

Jerome Quelin

## COPYRIGHT AND LICENCE

This software is copyright (c) 2009 by Jerome Quelin.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
