diff options
author | Junio C Hamano <gitster@pobox.com> | 2012-02-28 13:25:57 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-02-28 13:25:57 -0800 |
commit | 524ee675a36961c5b59302e84ffd08808f4f787e (patch) | |
tree | d64fc7d9b88c9be517e87fdf82f8a3fb31ee5f01 /Documentation | |
parent | 25a7850a106ed0f27b88b8ce0b89fd326120dff4 (diff) | |
parent | 36daaaca0046542f4d5576ad5766ac55f43e3fc3 (diff) | |
download | git-524ee675a36961c5b59302e84ffd08808f4f787e.tar.gz |
Merge branch 'jb/required-filter'
* jb/required-filter:
Add a setting to require a filter to be successful
Conflicts:
convert.c
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/gitattributes.txt | 41 |
1 files changed, 31 insertions, 10 deletions
diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt index a85b187e04..80120ea14f 100644 --- a/Documentation/gitattributes.txt +++ b/Documentation/gitattributes.txt @@ -294,16 +294,27 @@ output is used to update the worktree file. Similarly, the `clean` command is used to convert the contents of worktree file upon checkin. -A missing filter driver definition in the config is not an error -but makes the filter a no-op passthru. - -The content filtering is done to massage the content into a -shape that is more convenient for the platform, filesystem, and -the user to use. The key phrase here is "more convenient" and not -"turning something unusable into usable". In other words, the -intent is that if someone unsets the filter driver definition, -or does not have the appropriate filter program, the project -should still be usable. +One use of the content filtering is to massage the content into a shape +that is more convenient for the platform, filesystem, and the user to use. +For this mode of operation, the key phrase here is "more convenient" and +not "turning something unusable into usable". In other words, the intent +is that if someone unsets the filter driver definition, or does not have +the appropriate filter program, the project should still be usable. + +Another use of the content filtering is to store the content that cannot +be directly used in the repository (e.g. a UUID that refers to the true +content stored outside git, or an encrypted content) and turn it into a +usable form upon checkout (e.g. download the external content, or decrypt +the encrypted content). + +These two filters behave differently, and by default, a filter is taken as +the former, massaging the contents into more convenient shape. A missing +filter driver definition in the config, or a filter driver that exits with +a non-zero status, is not an error but makes the filter a no-op passthru. + +You can declare that a filter turns a content that by itself is unusable +into a usable content by setting the filter.<driver>.required configuration +variable to `true`. For example, in .gitattributes, you would assign the `filter` attribute for paths. @@ -335,6 +346,16 @@ input that is already correctly indented. In this case, the lack of a smudge filter means that the clean filter _must_ accept its own output without modifying it. +If a filter _must_ succeed in order to make the stored contents usable, +you can declare that the filter is `required`, in the configuration: + +------------------------ +[filter "crypt"] + clean = openssl enc ... + smudge = openssl enc -d ... + required +------------------------ + Sequence "%f" on the filter command line is replaced with the name of the file the filter is working on. A filter might use this in keyword substitution. For example: |