git-for-each-ref man page on OpenBSD

Man page or keyword search:  
man Server   11362 pages
apropos Keyword Search (all sections)
Output format
OpenBSD logo
[printable version]



GIT-FOR-EACH-REF(1)			      GIT-FOR-EACH-REF(1)

NAME
       git-for-each-ref - Output information on each ref

SYNOPSIS
       git for-each-ref [--count=<count>] [--shell|--perl|--python|--tcl]
			  [(--sort=<key>)...] [--format=<format>] [<pattern>...]

DESCRIPTION
       Iterate	over  all refs that match <pattern> and show them according to
       the given <format>, after sorting them according to the	given  set  of
       <key>.  If  <count>  is	given,	stop after showing that many refs. The
       interpolated values in <format> can optionally be quoted as string lit-
       erals  in  the specified host language allowing their direct evaluation
       in that language.

OPTIONS
       <count>
	      By default the command shows all refs that match <pattern>. This
	      option makes it stop after showing that many refs.

       <key>  A field name to sort on. Prefix - to sort in descending order of
	      the value. When unspecified, refname is used. You	 may  use  the
	      --sort=<key>  option  multiple times, in which case the last key
	      becomes the primary key.

       <format>
	      A string that interpolates %(fieldname) from the object  pointed
	      at by a ref being shown. If fieldname is prefixed with an aster-
	      isk (*) and the ref points at a tag object, the  value  for  the
	      field  in	 the  object  tag  refers  is  used. When unspecified,
	      defaults to %(objectname) SPC %(objecttype) TAB  %(refname).  It
	      also  interpolates  %%  to  %,  and  %xx where xx are hex digits
	      interpolates to character with hex  code	xx;  for  example  %00
	      interpolates to \0 (NUL), %09 to \t (TAB) and %0a to \n (LF).

       <pattern>...
	      If  one  or  more	 patterns  are given, only refs are shown that
	      match against at least one pattern, either using	fnmatch(3)  or
	      literally,  in  the  latter case matching completely or from the
	      beginning up to a slash.

       --shell, --perl, --python, --tcl
	      If given, strings that substitute %(fieldname) placeholders  are
	      quoted  as  string literals suitable for the specified host lan-
	      guage. This is meant to produce a scriptlet that can directly be
	      `eval`ed.

								1

GIT-FOR-EACH-REF(1)			      GIT-FOR-EACH-REF(1)

FIELD NAMES
       Various values from structured fields in referenced objects can be used
       to interpolate into the resulting output, or as sort keys.

       For all objects, the following names can be used:

       refname
	      The  name	 of  the  ref  (the  part  after  $GIT_DIR/).  For   a
	      non-ambiguous  short  name  of the ref append :short. The option
	      core.warnAmbiguousRefs is used to select the strict abbreviation
	      mode.

       objecttype
	      The type of the object (blob, tree, commit, tag).

       objectsize
	      The size of the object (the same as git cat-file -s reports).

       objectname
	      The object name (aka SHA-1). For a non-ambiguous abbreviation of
	      the object name append :short.

       upstream
	      The  name	  of   a   local   ref	 which	 can   be   considered
	      “upstream”  from  the displayed ref. Respects :short
	      in the same way as refname above.

	      In addition to the above, for commit and tag objects, the header
	      field names (tree, parent, object, type, and tag) can be used to
	      specify the value in the header field.

	      Fields that have name-email-date tuple  as  its  value  (author,
	      committer,  and  tagger)	can  be suffixed with name, email, and
	      date to extract the named component.

	      The first line of the message in a commit and tag object is sub-
	      ject,  the  remaining  lines are body. The whole message is con-
	      tents.

	      For sorting purposes, fields with numeric values sort in numeric
	      order  (objectsize,  authordate, committerdate, taggerdate). All
	      other fields are used to sort in their byte-value order.

								2

GIT-FOR-EACH-REF(1)			      GIT-FOR-EACH-REF(1)

	      In any case, a field name that refers to a field inapplicable to
	      the  object  referred  by	 the  ref  does not cause an error. It
	      returns an empty string instead.

	      As a special case for the date-type fields, you  may  specify  a
	      format  for  the	date  by  adding  one  of :default, :relative,
	      :short, :local, :iso8601 or :rfc2822 to the end  of  the	field-
	      name; e.g. %(taggerdate:relative).

EXAMPLES
       An  example  directly  producing formatted text. Show the most recent 3
       tagged commits::

       .ft C
       #!/bin/sh

       git for-each-ref --count=3 --sort='-*authordate' \
       --format='From: %(*authorname) %(*authoremail)
       Subject: %(*subject)
       Date: %(*authordate)
       Ref: %(*refname)

       %(*body)
       .ft

       A simple example showing the use of shell eval on  the  output,	demon-
       strating the use of --shell. List the prefixes of all heads::

       .ft C
       #!/bin/sh

       git for-each-ref --shell --format="ref=%(refname)" refs/heads | \
       while read entry
       do
	       eval "$entry"
	       echo `dirname $ref`
       done
       .ft

       A  bit more elaborate report on tags, demonstrating that the format may
       be an entire script::

								3

GIT-FOR-EACH-REF(1)			      GIT-FOR-EACH-REF(1)

       .ft C
       #!/bin/sh

       fmt='
	       r=%(refname)
	       t=%(*objecttype)
	       T=${r#refs/tags/}

	       o=%(*objectname)
	       n=%(*authorname)
	       e=%(*authoremail)
	       s=%(*subject)
	       d=%(*authordate)
	       b=%(*body)

	       kind=Tag
	       if test "z$t" = z
	       then
		       # could be a lightweight tag
		       t=%(objecttype)
		       kind="Lightweight tag"
		       o=%(objectname)
		       n=%(authorname)
		       e=%(authoremail)
		       s=%(subject)
		       d=%(authordate)
		       b=%(body)
	       fi
	       echo "$kind $T points at a $t object $o"
	       if test "z$t" = zcommit
	       then
		       echo "The commit was authored by $n $e
       at $d, and titled

	   $s

       Its message reads as:
       "
		       echo "$b" | sed -e "s/^/	   /"
		       echo
	       fi

       eval=`git for-each-ref --shell --format="$fmt" \
	       --sort='*objecttype' \
	       --sort=-taggerdate \
	       refs/tags`
       eval "$eval"
       .ft

								4

[top]

List of man pages available for OpenBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net