| |
@@ -37,10 +37,6 @@
|
| |
sed -e 's|/|-|g' -e 's|-$||'
|
| |
}
|
| |
|
| |
- function filter_tags {
|
| |
- grep -E "^$1-[^-]+-[^-]+$"
|
| |
- }
|
| |
-
|
| |
function output {
|
| |
__cached["${FUNCNAME[1]}"]="$*"
|
| |
echo -n "${__cached[${FUNCNAME[1]}]}"
|
| |
@@ -140,6 +136,26 @@
|
| |
echo -n "$lead.$bumped_follow"
|
| |
}
|
| |
|
| |
+
|
| |
+ git_list_tags ()
|
| |
+ {
|
| |
+ __merged=
|
| |
+ case "$1" in
|
| |
+ --merged)
|
| |
+ __merged=', only_merged=True'
|
| |
+ shift
|
| |
+ ;;
|
| |
+ esac
|
| |
+
|
| |
+ ${PYTHON-python3} -c "\
|
| |
+ from rpkglib.utils import list_tags
|
| |
+ tags = list_tags(pattern='$1-[^-]+-[^-]+$'$__merged)
|
| |
+ for tag in tags:
|
| |
+ print(tag)
|
| |
+ " 2>/dev/null
|
| |
+ }
|
| |
+
|
| |
+
|
| |
function git_version {
|
| |
declare name="$(cached git_name)" lead=0 follow= "$@"
|
| |
|
| |
@@ -157,8 +173,8 @@
|
| |
log_error "follow cannot contain dots."
|
| |
return 1
|
| |
fi
|
| |
-
|
| |
- mapfile -t tags < <(git tag --list --sort=taggerdate:unix "$name*" --merged 2> /dev/null | filter_tags "$name")
|
| |
+
|
| |
+ mapfile -t tags < <(git_list_tags --merged "$name")
|
| |
|
| |
if [ ${#tags[@]} -gt 0 ]; then
|
| |
latest_tag="${tags[-1]}"
|
| |
@@ -270,7 +286,7 @@
|
| |
return 2
|
| |
fi
|
| |
|
| |
- cmd_stdout="$(git -C "$path" archive --prefix="$dir_name/" -o "$OUTDIR/$source_name" HEAD)"
|
| |
+ cmd_stdout="$(cd "$path" && git archive --prefix="$dir_name/" -o "$OUTDIR/$source_name" HEAD)"
|
| |
cmd_retcode=$?
|
| |
|
| |
log_debug "$cmd_stdout"
|
| |
@@ -293,13 +309,7 @@
|
| |
function git_changelog {
|
| |
declare name="$(cached git_name)" since_tag= until_tag= header_locale=POSIX header_date_format="%a %b %d %Y" body_wrap=80 "$@"
|
| |
|
| |
- mapfile -t tags < <(git tag --list --sort=taggerdate:unix "$name*" --merged 2> /dev/null | filter_tags "$name")
|
| |
-
|
| |
- if [ -n "$header_date_format" ]; then
|
| |
- header_date_format_suffix=":format:$header_date_format"
|
| |
- else
|
| |
- header_date_format_suffix=
|
| |
- fi
|
| |
+ mapfile -t tags < <(git_list_tags --merged "$name")
|
| |
|
| |
changelog=
|
| |
until_tag_hit=
|
| |
@@ -309,13 +319,20 @@
|
| |
fi
|
| |
since_tag_hit=1
|
| |
|
| |
- data="$(git tag -l "$tag" --format='%(body)')"
|
| |
+ data="$(git for-each-ref "refs/tags/$tag" --format='%(body)')"
|
| |
if [ -z "$data" ]; then
|
| |
data="(none)"
|
| |
fi
|
| |
|
| |
+ ref=refs/tags/$tag
|
| |
+ header_date='%(taggerdate)'
|
| |
+ if [ -n "$header_date_format" ]; then
|
| |
+ realdate=$(git for-each-ref "$ref" --format '%(taggerdate:iso8601)')
|
| |
+ header_date=$(date --date "$realdate" +"$header_date_format")
|
| |
+ fi
|
| |
+
|
| |
verrel="$(echo "$tag" | sed -E -n "s/^$name-([^-]+)(-[^-]+)$/\1\2/p")"
|
| |
- header="$(LC_ALL="$header_locale" git tag -l "$tag" --format="* %(taggerdate$header_date_format_suffix) %(taggername) %(taggeremail)") $verrel"
|
| |
+ header="$(LC_ALL="$header_locale" git for-each-ref "refs/tags/$tag" --format="* $header_date %(taggername) %(taggeremail)") $verrel"
|
| |
formatted_data="$(echo "$data" | fold -cs --width="$body_wrap" | sed -E -e 's/(\s+)%([^%])/\1%%\2/g' -e 's/\s*$//')"
|
| |
|
| |
if [ -n "$changelog" ]; then
|
| |
@@ -335,7 +352,7 @@
|
| |
############## DIR FUNCTIONS ##############
|
| |
|
| |
function git_dir_name {
|
| |
- git_name append="-$(git -C "$(dirname "$INPUT_PATH")" rev-parse --show-prefix | name_convert)" "$@"
|
| |
+ git_name append="-$(cd "$(dirname "$INPUT_PATH")" && git rev-parse --show-prefix | name_convert)" "$@"
|
| |
}
|
| |
|
| |
function git_dir_version {
|
| |
@@ -343,7 +360,7 @@
|
| |
}
|
| |
|
| |
function git_dir_vcs {
|
| |
- git_vcs subtree="$(git -C "$(dirname "$INPUT_PATH")" rev-parse --show-prefix)" "$@"
|
| |
+ git_vcs subtree="$(cd "$(dirname "$INPUT_PATH")" && git rev-parse --show-prefix)" "$@"
|
| |
}
|
| |
|
| |
function git_dir_pack {
|
| |
@@ -365,7 +382,7 @@
|
| |
############## CURRENT WORKING DIR FUNCTIONS ##############
|
| |
|
| |
function git_cwd_name {
|
| |
- git_name append="-$(git -C "$(pwd)" rev-parse --show-prefix | name_convert)" "$@"
|
| |
+ git_name append="-$(cd "$(pwd)" && git rev-parse --show-prefix | name_convert)" "$@"
|
| |
}
|
| |
|
| |
function git_cwd_version {
|
| |
@@ -373,7 +390,7 @@
|
| |
}
|
| |
|
| |
function git_cwd_vcs {
|
| |
- git_vcs subtree="$(git -C "$(pwd)" rev-parse --show-prefix)" "$@"
|
| |
+ git_vcs subtree="$(cd "$(pwd)" && git rev-parse --show-prefix)" "$@"
|
| |
}
|
| |
|
| |
function git_cwd_pack {
|
| |
This is fixing issues on several fronts:
On RHEL7 is:
* no python3 support:
- io.StringIO behaves badly
- no unittests.mock
- no print(.., file=...)
git tag --list --sort=... doesn't work
old GNU tar