@matheusbsbs / matheus-bagliano / commits / 90b22907f2
Fork 0

Documentation: clarify use of .git{ignore,attributes} versus .git/info/*

gitignore patterns can be read from three different files, while gitattributes can come from two files. Let's provide some hints to the user about the differences and how they are typically used. Suggested by Toby Corkindale, but gratuitously reworded by Jeff King. Signed-off-by: Toby Corkindale <toby.corkindale@rea-group.com> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Mar 27, 2008 at 01:31 UTC 90b22907f2d1e0b41d7ac5c281ed20e7c8a27c66
2 files changed +19
Documentation/gitattributes.txt
+7
@@ -63,6 +63,13 @@ path in question, and its parent directories (the further the
63 directory that contains `.gitattributes` is from the path in
64 question, the lower its precedence).
65
66 +If you wish to affect only a single repository (i.e., to assign
67 +attributes to files that are particular to one user's workflow), then
68 +attributes should be placed in the `$GIT_DIR/info/attributes` file.
69 +Attributes which should be version-controlled and distributed to other
70 +repositories (i.e., attributes of interest to all users) should go into
71 +`.gitattributes` files.
72 +
73 Sometimes you would need to override an setting of an attribute
74 for a path to `unspecified` state. This can be done by listing
75 the name of the attribute prefixed with an exclamation point `!`.
Documentation/gitignore.txt
+12
@@ -38,6 +38,18 @@ precedence, the last matching pattern decides the outcome):
38 * Patterns read from the file specified by the configuration
39 variable 'core.excludesfile'.
40
41 +Which file to place a pattern in depends on how the pattern is meant to
42 +be used. Patterns which should be version-controlled and distributed to
43 +other repositories via clone (i.e., files that all developers will want
44 +to ignore) should go into a `.gitignore` file. Patterns which are
45 +specific to a particular repository but which do not need to be shared
46 +with other related repositories (e.g., auxiliary files that live inside
47 +the repository but are specific to one user's workflow) should go into
48 +the `$GIT_DIR/info/exclude` file. Patterns which a user wants git to
49 +ignore in all situations (e.g., backup or temporary files generated by
50 +the user's editor of choice) generally go into a file specified by
51 +`core.excludesfile` in the user's `~/.gitconfig`.
52 +
53 The underlying git plumbing tools, such as
54 linkgit:git-ls-files[1] and linkgit:git-read-tree[1], read
55 `gitignore` patterns specified by command-line options, or from