zsh: update git functions
This commit is contained in:
parent
d65860c0ac
commit
8af457ab05
@ -1,25 +1,31 @@
|
|||||||
#!/bin/zsh
|
#!/bin/zsh
|
||||||
|
|
||||||
git-dir-usage() {
|
git-dir-usage() {
|
||||||
local d x p
|
local gitdir x topdir
|
||||||
d=$(__z_git rev-parse --git-dir) || return $?
|
gitdir=$(__z_git rev-parse --git-dir) || return $?
|
||||||
x=$(__z_git rev-parse --path-format=absolute 2>/dev/null)
|
x=$(__z_git rev-parse --path-format=absolute 2>/dev/null) || return $?
|
||||||
if [ -n "$x" ] ; then
|
if [ -n "$x" ] ; then
|
||||||
## older git version which does not support "--path-format=absolute"
|
## older git version which does not support "--path-format=absolute"
|
||||||
:
|
: TODO
|
||||||
else
|
else
|
||||||
d=$(__z_git rev-parse --path-format=absolute --git-dir)
|
gitdir=$(__z_git rev-parse --path-format=absolute --git-dir) || return $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$d" in
|
case "${gitdir}" in
|
||||||
*/* ) p=${d%/*} ; d=${d:t} ;;
|
*/* ) topdir=${gitdir:h} ; gitdir=${gitdir:t} ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
## ${p:+ env -C "$p" } du -d2 "$d"
|
local -a subdirs
|
||||||
if [ -n "$p" ] ; then
|
subdirs+="${gitdir}/logs/refs"
|
||||||
env -C "$p" du -d2 "$d"
|
subdirs+="${gitdir}/objects/info"
|
||||||
|
subdirs+="${gitdir}/objects/pack"
|
||||||
|
|
||||||
|
if [ -n "${topdir}" ] ; then
|
||||||
|
env -C "${topdir}" du -d1 "${gitdir}"
|
||||||
|
env -C "${topdir}" du -d1 "${subdirs[@]}"
|
||||||
else
|
else
|
||||||
du -d2 "$d"
|
du -d1 "${gitdir}"
|
||||||
|
du -d1 "${subdirs[@]}"
|
||||||
fi | grep -Ev '^[0-9]\s' | sort -Vk2
|
fi | grep -Ev '^[0-9]\s' | sort -Vk2
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,4 +39,16 @@ git-gc() {
|
|||||||
|
|
||||||
git-gc-force() {
|
git-gc-force() {
|
||||||
git-gc --aggressive --force
|
git-gc --aggressive --force
|
||||||
|
}
|
||||||
|
|
||||||
|
git-archive-ref() {
|
||||||
|
local name ver gitref topdir c_hash c_time out
|
||||||
|
name="${1:?}" ver="${2:?}" gitref="${3:?}"
|
||||||
|
topdir=$(__z_git rev-parse --show-toplevel) || return $?
|
||||||
|
c_hash=$(__z_git log -n 1 --format='%h' --abbrev=8 "${gitref}") || return $?
|
||||||
|
c_time=$(__z_git log -n 1 --format='%cd' --date='format:%Y%m%d.%H%M%S' "${gitref}") || return $?
|
||||||
|
out="${name}_${ver}+git.${c_time}.${c_hash}.tar"
|
||||||
|
topdir=${topdir:h}
|
||||||
|
git archive --format=tar -o "${topdir}/${out}" --prefix="${name}-${ver}-git.${c_hash}/" "${gitref}" || return $?
|
||||||
|
echo "archived to ${out} in ${topdir}/" >&2
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user