ืืืื ืืคืงืืื git-for-each-ref ืฉื ืืชื ืืืคืขืื ืืกืคืง ืืืืจืื ืืืื ืื ืฉื OnWorks ืืืืฆืขืืช ืืืช ืืชืื ืืช ืืขืืืื ืืืงืืื ืืช ืืืจืืืืช ืฉืื ื, ืืืื Ubuntu Online, Fedora Online, ืืืืืืืจ ืืงืืื ืฉื Windows ืื ืืืืืืืจ ืืงืืื ืฉื MAC OS
ืชึธืึฐื ึดืืช:
ืฉืึตื
git-for-each-ref - ืคืื ืืืืข ืขื ืื ref
ืชึทืงืฆึดืืจ
ืกืืืื ืืื ืจืค [--ืกืคืืจื= ] [--shell|--perl|--python|--tcl]
[(--sort= )...] [--format= ] [ ...]
[--ืืฆืืืข-ืขื ] [(--ืืืื | --ืื-ืืืื) [ ]]
[--ืืืื [ ]]
ืชืืืืจ
ืืืืจ ืขื ืื ืืฉืืคืืื ืฉืืชืืืืื ืืืืจืืืช ืืืชื ืืคื ืื ืชืื ,
ืืืืจ ืืืื ืืืชื ืืคื ืืกื ืื ืชืื ืฉื . ืื ื ืืชื, ืขืฆืืจ ืืืจื
ืืจืื ืฉืฉืืคืืื ืจืืื. ืืขืจืืื ืืืฉืืืืื ื ื ืืชื ืืฆืื ืืืืคืฆืืื ืื
ืืืจืืืช ืืืืืืืช ืืฉืคื ืืืืจืืช ืฉืฆืืื ื ืืืืคืฉืจืช ืืขืจืื ืืฉืืจื ืฉืืื
ืฉืคื.
ืืคืฉืจืืืืช
ืืืจืืจืช ืืืื ืืคืงืืื ืืฆืืื ืืช ืื ืืฉืืคืืื ืืชืืืืื . ืืคืฉืจืืช ืื ืืืจืืช ืื ืืืคืกืืง
ืืืืจ ืฉืืจืืชื ืฉืืคืืื ืจืืื.
ืฉื ืฉืื ืืืืื. ืงืืืืืช - ืืืืื ืืกืืจ ืืืจื ืฉื ืืขืจื. ืืชื
ืื ืืฆืืื, ื ืขืฉื ืฉืืืืฉ ืืฉื refname. ืืชื ืืืื ืืืฉืชืืฉ ื- --sort= ืืคืฉืจืืช ืืกืคืจ ืคืขืืื, ื
ืืืืงืจื ืื ืืืคืชื ืืืืจืื ืืืคื ืืืคืชื ืืจืืฉื.
ืืืจืืืช ืฉืืขืจืืช ืืช %(fieldname) ืืืืืืืืงื ืฉืขืืื ืืฆืืืข ืืฉืืช ref
ืืืฆื. ืื ืืงืืืืืช ืฉื ืฉื ืืฉืื ืืฉ โโืืืืืืช (*) ืื-ref ืืฆืืืข ืขื ืชื
ืืืืืืงื, ื ืขืฉื ืฉืืืืฉ ืืขืจื ืฉื ืืฉืื ืืชื ืืืืืืืงื ืืชืืืืก. ืืืฉืจ ืื ืืฆืืื,
ืืจืืจืช ืืืืื ืืื %(objectname) SPC %(objecttype) TAB %(refname). ืื ืื ืืื ืืจืคืืืฆืื ืฉื %% ื
%, ื-%xx ืืืฉืจ xx ืื ืกืคืจืืช hex ืืื ืืจืคืืืฆืื ืืชืืืื ืขื ืงืื hex xx; ื
ืืืืื %00 ืืชืขืจื ื-\0 (NUL), %09 ื-\t (TAB) ื-%0a ื-\n (LF).
...
ืื ื ืืชื ืช ืืคืืก ืืื ืื ืืืชืจ, ืืืฆืื ืจืง ืฉืืคืืื ืฉืชืืืืื ืืคืืืช ืืื
ืืคืืก, ืื ืืืืฆืขืืช fnmatch(3) ืื ืคืฉืืื ืืืฉืืขื, ืืืงืจื ืืืืจืื ืืชืืื ืืืื
ืื ืืืืชืืื ืืขื ืืืืกื.
--shell, --perl, --python, --tcl
ืื ื ืืชื ืช, ืืืจืืืืช ืฉืืืืืคืืช ืืช %(fieldname) ืืฆืืื ื ืืืงืื ืืฆืืืืืช ืืืืจืืืช
ืืืืืืืืช ืืืชืืืืื ืืฉืคื ืืืืจืืช ืฉืฆืืื ื. ืื ื ืืขื ืืืืฆืจ ื
scriptlet ืฉื ืืชื `ืืืืื` ืืฉืืจืืช.
--ืืฆืืืข ืขื
ืจืฉืื ืจืง ืจืคื ืฉืืฆืืืขืื ืขื ืืืืืืืงื ืื ืชืื.
--ืืืืื [ ]
ืจืฉืืืช ืฉืืคืืื ืืืื ืฉื ืืชื ืืืืืข ืืืืคืื ืฉืืื ืื-commit ืฉืฆืืื (HEAD ืื ืื
ื ึธืงืึผื).
--ืื ืืืืื [ ]
ืจืฉืืืช ืฉืืคืืื ืืืื ืฉืื ื ืืชื ืืืืืข ืืืืคืื ืฉืืื ืื-commit ืฉืฆืืื (HEAD ืื ืื
ื ึธืงืึผื).
--ืืืื [ ]
ืจืฉืื ืจืง ืชืืื ืืืืืืื ืืช ื-commit ืฉืฆืืื (HEAD ืื ืื ืฆืืื).
ืฉืื ืฉืืืช
ื ืืชื ืืืฉืชืืฉ ืืขืจืืื ืฉืื ืื ืืฉืืืช ืืืื ืื ืืืืืืืงืืื ืขื ืืคื ืื ืืืื ืืจืคืืืฆืื
ืืชืื ืืคืื ืืืชืงืื, ืื ืืืคืชืืืช ืืืื.
ืขืืืจ ืื ืืืืืืืงืืื, ื ืืชื ืืืฉืชืืฉ ืืฉืืืช ืืืืื:
refname
ืฉื ื-ref (ืืืืง ืฉืืืจื $GIT_DIR/). ืืฉื ืงืฆืจ ืฉืืื ื ืื ืืฉืืขื ืฉื ื
ref append :ืงืฆืจ. ืืืคืฉืจืืช core.warnAmbiguousRefs ืืฉืืฉืช ืืืืืจืช ืืืืืืจ
ืืฆื ืงืืฆืืจ. ืื ืจืฆืืขื= ืืฆืืจืฃ, ืจืฆืืขืืช ื ืชืื ืืืคืจื ืืจืฆืืขื
ืจืืืืื ืืืืืง ืืงืืื ืฉื ื-refname (ืืืฉื, %(refname:strip=2) ืืืคื refs/tags/foo
ืืชืื foo. ืืืื ืืืืืช ืืกืคืจ ืฉืื ืืืืื. ืื ืืฉืืคื ืืืืฆื ืืฉ ืคืืืช ืจืืืืื
ืืืฉืจ , ืืคืงืืื ืืืืืช ืขื ืฉืืืื.
ืกืื ืืืืืืงื
ืกืื ืืืืืืืงื (ืืืื, ืขืฅ, commit, ืชื).
ืืืื ืืืืืืงื
ืืืื ืืืืืืืงื (ืืื ื ืกืืืื ืงืืืฅ ืืชืื -s ืืืืืืื).
ืฉื ืืืืืืงื
ืฉื ืืืืืืืงื (ืืืืื ื SHA-1). ืืงืืฆืืจ ืื ืื ืืฉืืขื ืฉื ืฉื ืืืืืืืงื
ืืืืกืืฃ :ืงืฆืจ.
ืึผึฐืึทืขึฒืึถื ืึทืึถืจึถื
ืฉื ืืฉืืคื ืืืงืืื ืฉืืืื ืืืืืฉื "ืืืขืื ืืืจื" ืืืฉื"ื ืืืืฆื.
ืืืืืื: ืงืฆืจ ืืืืชื ืืืคื ืืื refname ืืขืื. ืืืื ื ืืกืฃ: ืืกืืื ืืืฆืื
"[ืืคื ื N, ืืืืืจื M]" ื-:trackshort ืืื ืืืฆืื ืืช ืืืจืกื ืืชืืฆืืชืืช: ">" (ืืคื ื), "<"
(ืืืืืจ), "<>" (ืืคื ื ืืืืืืจ), ืื "=" (ืืกืื ืืจื). ืืื ืืฉืคืขื ืื ืืฉืืคื ืื
ืืฉ ืืืืข ืืขืงื ืืงืฉืืจ ืืืื.
ืืืืืฃ
ืฉืื ืฉื ืจ"ืค ืืงืืื ืืืืืฆื ืืช ืืืืงืื @{push} ืขืืืจ ืืจ"ื ืืืืฆื.
ืืืื ืืช ืืืคืฉืจืืืืช :short, :track ื-:trackshort ืืื ืืืขืื ืืืจื. ืืืืฆืจ ืจืืง
ืืืจืืืช ืื ืืื @{push} ref ืืืืืจ.
ืจืืฉ
* ืื HEAD ืชืืื ืืช ื-ref ืื ืืืื (ืืขื ืฃ ืฉืืืฆื ืืืืฆื), ' ' ืืืจืช.
ืฆึถืึทืข
ืฉื ื ืืช ืฆืืข ืืคืื. ืื ืืืจืื : , ืฉืื ืฉืืืช ืืชืืืจืื ื
ืฆืืข.ืขื ืฃ.*.
ืืืืฉืจ
ืืืฉืืจ ืืฉืืื, ืืืืฆืข ืื ืืืืื ืืช ืืชืืื ืืื %(align:...) ื-%(end). ื
"align:" ืืืืจืื ื ืืื ืกืืจ ืืืคืจื ืืคืกืืง,
ืืืคื ื ืืื ืฉืืื, ืืืื ืื ืืืฆืขื, ืืจืืจืช ืืืืื ืืื ืฉืืื ื
ืืื ืืืืจื ืืืืื ืฉื ืืชืืื ืขื ืืืฉืืจ. ืื ืืืจื ืืชืืื ืืื ืืืชืจ ื
ืืจืืื ืื ืื ืืืืฆืข ืืืฉืืจ. ืื ืืฉืชืืฉืื ืขื --ืฆืืืื ืื ืื ืฉืืื ืืื
%(align:...) ื-%(end) ืืืืืื ืืืืจืืืืช, ืื ืื ืืงืื ื ืืช ืื ืจืง ืืจืื ืืขืืืื ื ืืืืชืจ ืืืฆืขืช
ืืฆืื.
ืื ืืกืฃ ืืืืืจ ืืขืื, ืขืืืจ ืืืืืืงืืื commit ืืชืืื, ืฉืืืช ืฉืืืช ืืืืชืจืช (ืขืฅ,
ืื, ืืืืืืงื, ืกืื ืืชื) ื ืืชื ืืืฉืชืืฉ ืืื ืืฆืืื ืืช ืืขืจื ืืฉืื ืืืืชืจืช.
ืขืืืจ ืืืืืืงืืื ืฉื commit ืืชืืื, ืืฉืืืช ืืืืืืืื ืืชืืจืื ืืืืฆืจ ืืืืืฆืจ ืืชืืืื ืืืืื
ืืชืืจืื ืืืชืืื ืื ืฉื-ืืื"ื-ืชืืจืื tuple ืืฉืืืช ื-committer ืื ืืชืืื
ืืืชืื ืืกืื ืืืืืืืงื. ืืื ืืืืขืืื ืืขืืืื ืขื ืฉืืืื ืฉื ืืืขืจ ื
ืชืืืืช ืงืืืช ืืฉืงื.
ืฉืืืช ืขื ืฉื-ืืื"ื-ืชืืจืื tuple ืืชืืจ ืืขืจื ืฉืื (ืืืืจ, ืืืืื ืืืชื) ืืืืืื ืืืืืช
ืขื ืกืืืืช ืฉื, ืืืืจ ืืืงืืจืื ื ืืชืืจืื ืืื ืืืืฅ ืืช ืืจืืื ืืขื ืืฉื.
ืืืืืขื ืืืืื ืืืืืืืงื commit ืืชื ืืื ืชืืื. ืืฉืืจื ืืจืืฉืื ื ืฉืื ืืื
contents:subject, ืืืฉืจ ื ืืฉื ืืื ืืฉืจืฉืืจ ืฉื ืื ืืฉืืจืืช ืฉื ืืืืขืช ื-commit ืืืขืื
ืืฉืืจื ืืจืืงื ืืจืืฉืื ื. ืืฉืืจื ืืืื ืืื ืชืืื: ืืืฃ, ืืืฉืจ ืืืืฃ ืืื ืื ืืงืืืื
ืืืืจ ืืฉืืจื ืืจืืงื ืืจืืฉืื ื. ืืชืืืช ื-GPG ืืืืคืฆืืื ืืืช ืืื contents:signature. ื-N ืืจืืฉืื
ืฉืืจืืช ืืืืืขื ืืชืงืืืืช ืืืืฆืขืืช contents:lines=N.
ืืืืจืืช ืืืื, ืฉืืืช ืขื ืขืจืืื ืืกืคืจืืื ืืืืื ืื ืืกืืจ ืืกืคืจื (ืืืื ืืืืืืงื,
authordate, committerdate, creatordate, taggerdate). ืื ืฉืืจ ืืฉืืืช ืืฉืืฉืื ืืืืื
ืกืืจ ืขืจืื ืืืชืื ืฉืืื.
ืืฉื ื ืื ืืคืฉืจืืช ืืืืื ืืคื ืืจืกืืืช, ื ืืชื ืืขืฉืืช ืืืช ืืืืฆืขืืช ืฉื ืืฉืื
version:refname ืื ืืื ืืื v:refname.
ืืื ืืงืจื, ืฉื ืฉืื ืืืชืืืืก ืืฉืื ืฉืืื ื ืื ืขื ืืืืืืืงื ืฉืืคื ื ืืืื
ืืฉืืคื ืืื ื ืืืจื ืืฉืืืื. ืืื ืืืืืจ ืืืจืืืช ืจืืงื ืืืงืื ืืืช.
ืืืงืจื ืืืืื ืขืืืจ ืฉืืืช ืกืื ืืชืืจืื, ืชืืื ืืฆืืื ืคืืจืื ืขืืืจ ืืชืืจืื ืขื
ืืืกืคื : ืืืืจืื ืฉื ืคืืจืื ืืชืืจืื (ืจืื ืืช ืืขืจืืื ืฉืืืคืฉืจืืช --date to :git-rev-
ืจืฉืืื(1) ืืืงื).
ืืืืืืืช
ืืืืื ืืืคืงื ืืฉืืจื ืฉื ืืงืกื ืืขืืฆื. ืืฆื ืืช 3 ืืืชืืืืืืืืช ืืืชืืืืืช ืืืืจืื ืืช:
#!/ Bin / sh
git for-each-ref --count=3 --sort='-*authordate' \
--format='ืืืช: %(*authorname) %(*authoremail)
ื ืืฉื: %(*ื ืืฉื)
ืชืืจืื: %(*ืืืืจ)
Ref: %(*refname)
%(*ืืึผืฃ)
' 'refs/tags'
ืืืืื ืคืฉืืื ืืืฆืืื ืืช ืืฉืืืืฉ ื- shell eval ืขื ืืคืื, ืืืืืืื ืืช ืืฉืืืืฉ ื
--ืฆืืฃ. ืจืฉืื ืืช ืืงืืืืืืช ืฉื ืื ืืจืืฉืื:
#!/ Bin / sh
git for-each-ref --shell --format="ref=%(refname)" refs/heads | \
ืืืื ืงืจืืืช ืืขืจื
do
eval "$entry"
echo `ืฉื ืฉื $ref`
ืขืฉื
ืืื ืงืฆืช ืืืชืจ ืืฉืืืื ืขื ืชืืื, ืืืืืื ืฉืืคืืจืื ืขืฉืื ืืืืืช ืฉืื
ืชึทืกืจึดืื:
#!/ Bin / sh
fmt='
r=%(refname)
t=%(*ืกืื ืืืืืืงื)
T=${r#refs/tags/}
o=%(*ืฉื ืืืืืืงื)
n=%(*ืฉื ืืืืืจ)
e=%(*ืืืื ืืืืจ)
s=%(*ื ืืฉื)
d=%(*ืืืืจ)
b=%(*body)
ืกืื=ืชื
ืื ืืืื "z$t" = z
ืื
# ืืืื ืืืืืช ืชื ืงื ืืฉืงื
t=%(ืกืื ืืืืืืงื)
kind="ืชื ืงื ืืฉืงื"
o=%(ืฉื ืืืืืืงื)
n=%(ืฉื ืืืืืจ)
e=%(authoremail)
s=%(ื ืืฉื)
d=%(ืืืืจ)
b=%(ืืืฃ)
fi
echo "$kind $T ืืฆืืืข ืขื $t ืืืืืืงื $o"
if test "z$t" = zcommit
ืื
echo "ืืืืื ื ืืชืื ืขื ืืื $n $e
ื-$d, ืืืืืชืจืช
$s
ืืืืืขื ืฉืื ื ืืชืืช ืื:
"
ืื "$b" | sed -e "s/^/ /"
ืื
fi
'
eval=`git for-each-ref --shell --format="$fmt" \
--sort='*objecttype' \
--sort=-taggerdate \
refs/tags`
eval "$eval"
ืืฉืชืืฉ ื-git-for-each-ref ืืืื ืืจื ื ืืืืฆืขืืช ืฉืืจืืชื onworks.net