Commit Graph

25 Commits

Author SHA1 Message Date
Karthik Nayak 47cfc9bd7d attr: add flag `--source` to work with tree-ish
The contents of the .gitattributes files may evolve over time, but "git
check-attr" always checks attributes against them in the working tree
and/or in the index. It may be beneficial to optionally allow the users
to check attributes taken from a commit other than HEAD against paths.

Add a new flag `--source` which will allow users to check the
attributes against a commit (actually any tree-ish would do). When the
user uses this flag, we go through the stack of .gitattributes files but
instead of checking the current working tree and/or in the index, we
check the blobs from the provided tree-ish object. This allows the
command to also be used in bare repositories.

Since we use a tree-ish object, the user can pass "--source
HEAD:subdirectory" and all the attributes will be looked up as if
subdirectory was the root directory of the repository.

We cannot simply use the `<rev>:<path>` syntax without the `--source`
flag, similar to how it is used in `git show` because any non-flag
parameter before `--` is treated as an attribute and any parameter after
`--` is treated as a pathname.

The change involves creating a new function `read_attr_from_blob`, which
given the path reads the blob for the path against the provided source and
parses the attributes line by line. This function is plugged into
`read_attr()` function wherein we go through the stack of attributes

Signed-off-by: Karthik Nayak <>
Signed-off-by: Toon Claes <>
Signed-off-by: Junio C Hamano <>
2023-01-14 08:49:55 -08:00
Elijah Newren 031fd4b93b Documentation: fix a bunch of typos, both old and new
Reported-by: Jens Schleusener <>
Signed-off-by: Elijah Newren <>
Signed-off-by: Junio C Hamano <>
2019-11-07 13:42:00 +09:00
Robert P. J. Day de613050ef Use proper syntax for replaceables in command docs
The standard for command documentation synopses appears to be:

  [...] means optional
  <...> means replaceable
  [<...>] means both optional and replaceable

So fix a number of doc pages that use incorrect variations of the

Signed-off-by: Robert P. J. Day <>
Signed-off-by: Junio C Hamano <>
2018-05-25 17:16:47 +09:00
Junio C Hamano 33e8fc8740 usage: do not insist that standard input must come from a file
The synopsys text and the usage string of subcommands that read list
of things from the standard input are often shown like this:

	git gostak [--distim] < <list-of-doshes>

This is problematic in a number of ways:

 * The way to use these commands is more often to feed them the
   output from another command, not feed them from a file.

 * Manual pages outside Git, commands that operate on the data read
   from the standard input, e.g "sort", "grep", "sed", etc., are not
   described with such a "< redirection-from-file" in their synopsys
   text.  Our doing so introduces inconsistency.

 * We do not insist on where the output should go, by saying

	git gostak [--distim] < <list-of-doshes> > <output>

 * As it is our convention to enclose placeholders inside <braket>,
   the redirection operator followed by a placeholder filename
   becomes very hard to read, both in the documentation and in the
   help text.

Let's clean them all up, after making sure that the documentation
clearly describes the modes that take information from the standard
input and what kind of things are expected on the input.

[jc: stole example for fmt-merge-msg from Jonathan]

Helped-by: Jonathan Nieder <>
Signed-off-by: Junio C Hamano <>
2015-10-16 15:27:52 -07:00
Junio C Hamano 0db320d023 Merge branch 'jc/check-x-z'
"git check-ignore -z" applied the NUL termination to both its input
(with --stdin) and its output, but "git check-attr -z" ignored the
option on the output side.

This is potentially a backward incompatible fix.  Let's see if
anybody screams before deciding if we want to do anything to help
existing users (there may be none).

* jc/check-x-z:
  check-attr -z: a single -z should apply to both input and output
  check-ignore -z: a single -z should apply to both input and output
  check-attr: the name of the character is NUL, not NULL
  check-ignore: the name of the character is NUL, not NULL
2013-09-04 12:23:25 -07:00
Junio C Hamano f7cd8c50b9 check-attr -z: a single -z should apply to both input and output
Unless a command has separate --nul-terminated-{input,output}
options, the --nul-terminated-records (-z) option should apply
to both input and output for consistency.  The caller knows that its
input paths may need to be protected for LF, and the program shows
these problematic paths to its output.

Signed-off-by: Junio C Hamano <>
2013-07-11 23:10:22 -07:00
Adam Spiers f1ed7fea79 Documentation: add caveats about I/O buffering for check-{attr,ignore}
check-attr and check-ignore have the potential to deadlock callers
which do not read back the output in real-time.  For example, if a
caller writes N paths out and then reads N lines back in, it risks
becoming blocked on write() to check-*, and check-* is blocked on
write back to the caller.  Somebody has to buffer; the pipe buffers
provide some leeway, but they are limited.

Thanks to Peff for pointing this out:

Signed-off-by: Adam Spiers <>
Signed-off-by: Junio C Hamano <>
2013-04-11 11:11:36 -07:00
Jay Soffian b2b3e9c2d6 Teach '--cached' option to check-attr
This option causes check-attr to consider .gitattributes only from
the index, ignoring .gitattributes from the working tree. This allows
the command to be used in situations where a working tree does not exist.

Signed-off-by: Jay Soffian <>
Signed-off-by: Junio C Hamano <>
2011-09-22 16:38:22 -07:00
Michael Haggerty ca64d061e0 git-check-attr: Fix command-line handling to match docs
According to the git-check-attr synopsis, if the '--stdin' option is
used then no pathnames are expected on the command line.  Change the
behavior to match this description; namely, if '--stdin' is used but
not '--', then treat all command-line arguments as attribute names.

Signed-off-by: Michael Haggerty <>
Signed-off-by: Junio C Hamano <>
2011-08-04 15:53:20 -07:00
Michael Haggerty 4ca0f188f6 git-check-attr: Add an --all option to show all attributes
Add new usage patterns

    git check-attr [-a | --all] [--] pathname...
    git check-attr --stdin [-a | --all] < <list-of-paths>

which display all attributes associated with the specified file(s).

Signed-off-by: Michael Haggerty <>
Signed-off-by: Junio C Hamano <>
2011-08-04 15:53:19 -07:00
Jeff King 48bb914ed6 doc: drop author/documentation sections from most pages
The point of these sections is generally to:

  1. Give credit where it is due.

  2. Give the reader an idea of where to ask questions or
     file bug reports.

But they don't do a good job of either case. For (1), they
are out of date and incomplete. A much more accurate answer
can be gotten through shortlog or blame.  For (2), the
correct contact point is generally git@vger, and even if you
wanted to cc the contact point, the out-of-date and
incomplete fields mean you're likely sending to somebody

So let's drop the fields entirely from all manpages except
git(1) itself. We already point people to the mailing list
for bug reports there, and we can update the Authors section
to give credit to the major contributors and point to
shortlog and blame for more information.

Each page has a "This is part of git" footer, so people can
follow that to the main git manpage.
2011-03-11 10:59:16 -05:00
David J. Mellor 3460a60064 Documentation: minor grammatical fixes in git-check-attr.txt
Signed-off-by: David J. Mellor <>
Signed-off-by: Junio C Hamano <>
2009-03-22 21:02:38 -07:00
Junio C Hamano 6cd3729eae Merge branch 'maint'
* maint:
  Start cycle
  Fix pack.packSizeLimit and --max-pack-size handling
  checkout: Fix "initial checkout" detection
  Remove the period after the git-check-attr summary

2008-11-12 15:03:57 -08:00
Matt Kraai 0d641f75d1 Remove the period after the git-check-attr summary
The period at the end of the git-check-attr summary causes there to be
two periods after the summary in the git(1) manual page.

Signed-off-by: Matt Kraai <>
Signed-off-by: Junio C Hamano <>
2008-11-12 12:20:31 -08:00
Junio C Hamano 6c1c3d1753 Merge branch 'dp/checkattr'
* dp/checkattr:
  git-check-attr(1): use 'verse' for multi-line synopsis sections
  check-attr: Add --stdin option
  check-attr: add an internal check_attr() function
2008-10-19 16:06:47 -07:00
Jonas Fonseca e7108fcb15 git-check-attr(1): use 'verse' for multi-line synopsis sections
Signed-off-by: Jonas Fonseca <>
Signed-off-by: Junio C Hamano <>
2008-10-16 08:44:07 -07:00
Jonas Fonseca 5782566d7f git-check-attr(1): add output and example sections
Plumbing tools should document what output can be expected.

Signed-off-by: Jonas Fonseca <>
Signed-off-by: Junio C Hamano <>
2008-10-16 08:40:25 -07:00
Dmitry Potapov b4666852a0 check-attr: Add --stdin option
This allows multiple paths to be specified on stdin.

Signed-off-by: Dmitry Potapov <>
Signed-off-by: Shawn O. Pearce <>
2008-10-12 13:21:59 -07:00
Junio C Hamano 59eb68aa2b Update my e-mail address
The old address is still getting mails from gitters.

Signed-off-by: Junio C Hamano <>
2008-07-21 12:14:42 -07:00
Jonathan Nieder b1889c36d8 Documentation: be consistent about "git-" versus "git "
Since the git-* commands are not installed in $(bindir), using
"git-command <parameters>" in examples in the documentation is
not a good idea. On the other hand, it is nice to be able to
refer to each command using one hyphenated word. (There is no
escaping it, anyway: man page names cannot have spaces in them.)

This patch retains the dash in naming an operation, command,
program, process, or action. Complete command lines that can
be entered at a shell (i.e., without options omitted) are
made to use the dashless form.

The changes consist only of replacing some spaces with hyphens
and vice versa. After a "s/ /-/g", the unpatched and patched
versions are identical.

Signed-off-by: Jonathan Nieder <>
Signed-off-by: Junio C Hamano <>
2008-07-01 17:20:15 -07:00
Christian Couder 9e1f0a85c6 documentation: move git(7) to git(1)
As the "git" man page describes the "git" command at the end-user
level, it seems better to move it to man section 1.

Signed-off-by: Christian Couder <>
Signed-off-by: Junio C Hamano <>
2008-06-06 11:18:28 -07:00
Dan McGee 5162e69732 Documentation: rename gitlink macro to linkgit
Between AsciiDoc 8.2.2 and 8.2.3, the following change was made to the stock
Asciidoc configuration:

@@ -149,7 +153,10 @@
 # Inline macros.
 # Backslash prefix required for escape processing.
 # (?s) re flag for line spanning.
+# Explicit so they can be nested.
 # Anchor: [[[id]]]. Bibliographic anchor.
 # Anchor: [[id,xreflabel]]

This default regex now matches explicit values, and unfortunately in this
case gitlink was being matched by just 'link', causing the wrong inline
macro template to be applied. By renaming the macro, we can avoid being
matched by the wrong regex.

Signed-off-by: Dan McGee <>
Signed-off-by: Junio C Hamano <>
2008-01-06 18:41:44 -08:00
Junio C Hamano 0e545f7516 Documentation: describe 'union' low-level merge driver
Signed-off-by: Junio C Hamano <>
2007-12-22 23:14:59 -08:00
Junio C Hamano a6080a0a44 War on whitespace
This uses "git-apply --whitespace=strip" to fix whitespace errors that have
crept in to our source files over time.  There are a few files that need
to have trailing whitespaces (most notably, test vectors).  The results
still passes the test, and build result in Documentation/ area is unchanged.

Signed-off-by: Junio C Hamano <>
2007-06-07 00:04:01 -07:00
James Bowes b568a503de Document git-check-attr
Signed-off-by: James Bowes <>
Signed-off-by: Junio C Hamano <>
2007-04-15 16:01:35 -07:00