Merge branch 'master' into more-pathExists

This commit is contained in:
Robert Hensing 2019-12-19 14:14:08 +01:00 committed by GitHub
commit 608eb8a9c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 1 deletions

View file

@ -41,7 +41,8 @@ mkDerivation {
}
```
If you need something more specific, that can not be achieved with Nixpkgs' `cleanSourceWith` function, you may want to use [gitignoreFilter](docs/gitignoreFilter.md).
You can use Nixpkgs' [`cleanSourceWith`](https://github.com/NixOS/nixpkgs/blob/d1bb36d5cb5b78111f799eb26f5f17e5979bc746/lib/sources.nix#L35-L67) to compose with other filters (by logical _and_) or to set a `name`.
If you need something more exotic, you may want to use [gitignoreFilter](docs/gitignoreFilter.md) directly.
# Features
@ -81,6 +82,13 @@ If you need something more specific, that can not be achieved with Nixpkgs' `cle
Please open a PR if you've found another feature, determined any of the '?' or found an inaccuracy!
# Security
Files not matched by gitignore rules will end up in the Nix store, which is readable by any process.
gitignore.nix does not yet understand `git-crypt`'s metadata, so don't call `gitignoreSource` on directories containing such secrets or their parent directories.
This applies to any Nix function that uses the `builtins.path` or `builtins.filterSource` functions.
# Contributing
This project isn't perfect (yet) so please submit test cases and fixes as pull requests. Before doing anything drastic, it's a good idea to open an issue first to discuss and optimize the approach.

27
docs/gitignoreFilter.md Normal file
View file

@ -0,0 +1,27 @@
# `gitignoreFilter`
If you want to use gitignore functionality in new ways, you may use the
`gitignoreFilter` function directly. For performance, you should keep
the number of `gitignoreFilter` calls to a minimum. It is a curried
function for good reason. After applying the first argument, the root
path of the source, it returns a function that memoizes information
about the git directory structure. The function must only be invoked
for paths at or below this root path.
### Usage example
```nix
let
gitignore = (import (import ./nix/sources.nix)."gitignore.nix" { inherit lib; });
inherit (gitignore) gitignoreFilter;
useGitFilesInSomeWay = src:
let
# IMPORTANT: use a let binding like this to memoize info about the git directories.
f = gitignoreFilter src;
in
somethingUseful (path: type: f path type || false);
in
useGitFilesInSomeWay ./.
```