diff -Nru autorevision-1.20/autorevision.asciidoc autorevision-1.21/autorevision.asciidoc --- autorevision-1.20/autorevision.asciidoc 2017-01-03 17:18:27.000000000 +0000 +++ autorevision-1.21/autorevision.asciidoc 2017-09-30 18:51:47.000000000 +0000 @@ -4,9 +4,9 @@ autorevision - extract current-revision metadata from version-control repositories == SYNOPSIS == -*autorevision* *-t* [*-o* [*-f*] ] [*-e* ] [*-U*] +*autorevision* *-t* [*-o* [*-f*] ] [*-e* ] [*-U*] [*-q*] -*autorevision* *-s* [*-o* [*-f*] ] [*-e* ] [*-U*] +*autorevision* *-s* [*-o* [*-f*] ] [*-e* ] [*-U*] [*-q*] *autorevision* *-V* @@ -110,6 +110,11 @@ *scheme*:: A scheme source file setting scheme variables. +*sed*:: +A sed script that replaces symbol names enclosed in @ symbols. +It uses the | character as a separator in the sed commands. +You can run it using `sed -f script.sed file-to-edit`. + *sh*:: A text file suitable for including from a bash script. Will work with Ruby. @@ -172,6 +177,11 @@ The name of the most recent tag ancestral to the current commit. + Empty under Subversion. +*VCS_TAG_OPENPGP*:: +The fingerprint OpenPGP of the key that that signed the current tag. + +Blank if the current tag is not signed or if no tags exist. + +Currently only implemented for git. + *VCS_TICK*:: A count of commits since most recent tag ancestral to the current commit or an alias of *VCS_NUM* if there are no prior tags. + @@ -179,7 +189,8 @@ *VCS_EXTRA*:: A symbol set aside specifically to be set by the user through the -environment or via scripts. +environment or via scripts. + +Additionally, the name of this symbol may be customized as well. ('See *-e* for more info.') *VCS_ACTION_STAMP*:: An "action stamp" consists of an RFC3339 timestamp in Zulu time, @@ -191,6 +202,11 @@ *VCS_FULL_HASH*:: A full unique identifier for the current revision. +*VCS_COMMIT_OPENPGP*:: +The fingerprint OpenPGP of the key that that signed the current revision. + +Blank if the current revision is not signed. + +Currently only implemented for git. + *VCS_SHORT_HASH*:: A shortened version of *VCS_FULL_HASH*, but *VCS_FULL_HASH* if it cannot be shortened. @@ -231,6 +247,9 @@ default behavior for all other repository types, it is off by default for Subversion because of speed concerns. +*-q*:: +Silence warnings. + *-V*:: Emits the autorevision version and exits. diff -Nru autorevision-1.20/autorevision.cache autorevision-1.21/autorevision.cache --- autorevision-1.20/autorevision.cache 2017-01-03 17:56:00.000000000 +0000 +++ autorevision-1.21/autorevision.cache 2017-09-30 20:09:52.000000000 +0000 @@ -3,16 +3,18 @@ VCS_TYPE="git" VCS_BASENAME="autorevision" VCS_UUID="da2830f81fec4c6ebce8ebf23f35b0e6b066c149" -VCS_NUM="408" -VCS_DATE="2017-01-03T17:47:21Z" +VCS_NUM="428" +VCS_DATE="2017-09-30T19:05:06Z" VCS_BRANCH="" -VCS_TAG="v/1.20" +VCS_TAG="v/1.21" +VCS_TAG_OPENPGP="A16E4FE1BFE882DE9D6E28AD0044B6E72C414317" VCS_TICK="0" VCS_EXTRA="" -VCS_ACTION_STAMP="2017-01-03T17:47:21Z!dak180@users.sourceforge.net" -VCS_FULL_HASH="455ebca6011e5f8fe0cb42c4e22a03d7615d1fe1" -VCS_SHORT_HASH="455ebca" +VCS_ACTION_STAMP="2017-09-30T19:05:06Z!dak180@users.sourceforge.net" +VCS_FULL_HASH="e14c40e5fa622dd9a64f5a31c589f65aa321c878" +VCS_COMMIT_OPENPGP="A16E4FE1BFE882DE9D6E28AD0044B6E72C414317" +VCS_SHORT_HASH="e14c40e" VCS_WC_MODIFIED="0" diff -Nru autorevision-1.20/autorevision.sh autorevision-1.21/autorevision.sh --- autorevision-1.20/autorevision.sh 2016-12-31 05:01:07.000000000 +0000 +++ autorevision-1.21/autorevision.sh 2017-09-30 18:51:47.000000000 +0000 @@ -12,7 +12,7 @@ # Usage message. arUsage() { tee >&2 << EOF -usage: autorevision {-t output-type | -s symbol} [-o cache-file [-f] ] [-e name] [-U] [-V] +usage: autorevision {-t output-type | -s symbol} [-o cache-file [-f] ] [-e name] [-U] [-q] [-V] Options include: -t output-type = specify output type -s symbol = specify symbol output @@ -20,6 +20,7 @@ -f = force the use of cache data -e name = set a different output name for VCS_EXTRA -U = check for untracked files in svn + -q = Silence warnings -V = emit version and exit -? = help message @@ -44,6 +45,7 @@ py = Python file rpm = rpm file scheme = scheme file + sed = sed script sh = Bash sytax swift = Swift file tex = (La)TeX file @@ -58,9 +60,11 @@ VCS_DATE VCS_BRANCH VCS_TAG + VCS_TAG_OPENPGP VCS_TICK VCS_EXTRA VCS_FULL_HASH + VCS_COMMIT_OPENPGP VCS_SHORT_HASH VCS_WC_MODIFIED VCS_ACTION_STAMP @@ -70,7 +74,7 @@ # Config ARVERSION="&&ARVERSION&&" -while getopts ":t:o:s:e:VfU" OPTION; do +while getopts ":t:o:s:e:VfqU" OPTION; do case "${OPTION}" in t) AFILETYPE="${OPTARG}" @@ -90,6 +94,9 @@ U) UNTRACKEDFILES="1" ;; + q) + WARNHIDE="1" + ;; V) echo "autorevision ${ARVERSION}" exit 0 @@ -136,6 +143,7 @@ GENERATED_HEADER="Generated by autorevision - do not hand-hack!" : "${EXTRA_NAME:="VCS_EXTRA"}" +: "${WARNHIDE:="0"}" # Functions to extract data from different repo types. # For git repos @@ -163,7 +171,9 @@ # Enumeration of changesets VCS_NUM="$(git rev-list --count "${currentRev}" 2>/dev/null)" if [ -z "${VCS_NUM}" ]; then - echo "warning: Counting the number of revisions may be slower due to an outdated git version less than 1.7.2.3. If something breaks, please update it." 1>&2 + if [ ! "${WARNHIDE}" = "1" ]; then + echo "warning: Counting the number of revisions may be slower due to an outdated git version less than 1.7.2.3. If something breaks, please update it." 1>&2 + fi VCS_NUM="$(git rev-list HEAD | wc -l)" fi @@ -180,6 +190,9 @@ VCS_SHORT_HASH="${VCS_FULL_HASH}" fi + # Get the current revision's signing key. + VCS_COMMIT_OPENPGP="$(git verify-commit --raw "${currentRev}" 2>&1 | grep "VALIDSIG" | cut -d ' ' -f 12)" + # Current branch VCS_BRANCH="$(git rev-parse --symbolic-full-name --verify "$(git name-rev --name-only --no-undefined "${currentRev}" 2>/dev/null)" 2>/dev/null | sed -e 's:refs/heads/::' | sed -e 's:refs/::')" @@ -189,6 +202,18 @@ # Current or last tag ancestor (empty if no tags) VCS_TAG="$(echo "${DESCRIPTION}" | sed -e "s:-g${VCS_SHORT_HASH}\$::" -e 's:-[0-9]*$::')" + # Determine if the tag is annotated. + ${LOCAL} tagType="$(git for-each-ref --format='%(objecttype)' "$(git rev-parse --symbolic-full-name --verify "${VCS_TAG}")")" + if [ ! "${tagType}" = "tag" ]; then + # Let the user know if the current tag is not annotated. + if [ ! "${WARNHIDE}" = "1" ]; then + echo "note: The most recent tag is not annotated; if it is intended to be a release you may want to fix this." 1>&2 + fi + else + # You cannot have a signed tag that is not annotated. + VCS_TAG_OPENPGP="$(git verify-tag --raw "${VCS_TAG}" 2>&1 | grep "VALIDSIG" | cut -d ' ' -f 12)" + fi + # Distance to last tag or an alias of VCS_NUM if there is no tag if [ ! -z "${DESCRIPTION}" ]; then VCS_TICK="$(echo "${DESCRIPTION}" | sed -e "s:${VCS_TAG}-::" -e "s:-g${VCS_SHORT_HASH}::")" @@ -199,7 +224,9 @@ # Date of the current commit VCS_DATE="$(TZ=UTC git show -s --date=iso-strict-local --pretty=format:%cd "${currentRev}" 2>/dev/null | sed -e 's|+00:00|Z|')" if [ -z "${VCS_DATE}" ]; then - echo "warning: Action stamps require git version 2.7+." 1>&2 + if [ ! "${WARNHIDE}" = "1" ]; then + echo "warning: Action stamps require git version 2.7+." 1>&2 + fi VCS_DATE="$(git log -1 --pretty=format:%ci "${currentRev}" | sed -e 's: :T:' -e 's: ::' -e 's|+00:00|Z|')" ${LOCAL} ASdis="1" fi @@ -429,11 +456,13 @@ VCS_DATE="${VCS_DATE}" VCS_BRANCH="${VCS_BRANCH}" VCS_TAG="${VCS_TAG}" +VCS_TAG_OPENPGP="${VCS_TAG_OPENPGP}" VCS_TICK="${VCS_TICK}" ${EXTRA_NAME}="${VCS_EXTRA}" VCS_ACTION_STAMP="${VCS_ACTION_STAMP}" VCS_FULL_HASH="${VCS_FULL_HASH}" +VCS_COMMIT_OPENPGP="${VCS_COMMIT_OPENPGP}" VCS_SHORT_HASH="${VCS_SHORT_HASH}" VCS_WC_MODIFIED="${VCS_WC_MODIFIED}" @@ -447,21 +476,23 @@ tee << EOF /* ${GENERATED_HEADER} */ -const char *VCS_TYPE = "${VCS_TYPE}"; -const char *VCS_BASENAME = "${VCS_BASENAME}"; -const char *VCS_UUID = "${VCS_UUID}"; -const int VCS_NUM = ${VCS_NUM}; -const char *VCS_DATE = "${VCS_DATE}"; -const char *VCS_BRANCH = "${VCS_BRANCH}"; -const char *VCS_TAG = "${VCS_TAG}"; -const int VCS_TICK = ${VCS_TICK}; -const char *${EXTRA_NAME} = "${VCS_EXTRA}"; - -const char *VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"; -const char *VCS_FULL_HASH = "${VCS_FULL_HASH}"; -const char *VCS_SHORT_HASH = "${VCS_SHORT_HASH}"; +const char *VCS_TYPE = "${VCS_TYPE}"; +const char *VCS_BASENAME = "${VCS_BASENAME}"; +const char *VCS_UUID = "${VCS_UUID}"; +const int VCS_NUM = ${VCS_NUM}; +const char *VCS_DATE = "${VCS_DATE}"; +const char *VCS_BRANCH = "${VCS_BRANCH}"; +const char *VCS_TAG = "${VCS_TAG}"; +const char *VCS_TAG_OPENPGP = "${VCS_TAG_OPENPGP}"; +const int VCS_TICK = ${VCS_TICK}; +const char *${EXTRA_NAME} = "${VCS_EXTRA}"; + +const char *VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"; +const char *VCS_FULL_HASH = "${VCS_FULL_HASH}"; +const char *VCS_COMMIT_OPENPGP = "${VCS_COMMIT_OPENPGP}"; +const char *VCS_SHORT_HASH = "${VCS_SHORT_HASH}"; -const int VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; +const int VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; /* end */ EOF @@ -479,11 +510,13 @@ set(VCS_DATE ${VCS_DATE}) set(VCS_BRANCH ${VCS_BRANCH}) set(VCS_TAG ${VCS_TAG}) +set(VCS_TAG_OPENPGP ${VCS_TAG_OPENPGP}) set(VCS_TICK ${VCS_TICK}) set(${EXTRA_NAME} ${VCS_EXTRA}) set(VCS_ACTION_STAMP ${VCS_ACTION_STAMP}) set(VCS_FULL_HASH ${VCS_FULL_HASH}) +set(VCS_COMMIT_OPENPGP ${VCS_COMMIT_OPENPGP}) set(VCS_SHORT_HASH ${VCS_SHORT_HASH}) set(VCS_WC_MODIFIED ${VCS_WC_MODIFIED}) @@ -506,11 +539,13 @@ #define VCS_DATE "${VCS_DATE}" #define VCS_BRANCH "${VCS_BRANCH}" #define VCS_TAG "${VCS_TAG}" +#define VCS_TAG_OPENPGP "${VCS_TAG_OPENPGP}" #define VCS_TICK ${VCS_TICK} #define ${EXTRA_NAME} "${VCS_EXTRA}" #define VCS_ACTION_STAMP "${VCS_ACTION_STAMP}" #define VCS_FULL_HASH "${VCS_FULL_HASH}" +#define VCS_COMMIT_OPENPGP "${VCS_COMMIT_OPENPGP}" #define VCS_SHORT_HASH "${VCS_SHORT_HASH}" #define VCS_WC_MODIFIED ${VCS_WC_MODIFIED} @@ -535,11 +570,13 @@ #define VCS_DATE ${VCS_DATE} #define VCS_BRANCH ${VCS_BRANCH} #define VCS_TAG ${VCS_TAG} +#define VCS_TAG_OPENPGP ${VCS_TAG_OPENPGP} #define VCS_TICK ${VCS_TICK} #define ${EXTRA_NAME} ${VCS_EXTRA} #define VCS_ACTION_STAMP ${VCS_ACTION_STAMP} #define VCS_FULL_HASH ${VCS_FULL_HASH} +#define VCS_COMMIT_OPENPGP ${VCS_COMMIT_OPENPGP} #define VCS_SHORT_HASH ${VCS_SHORT_HASH} #define VCS_WC_MODIFIED ${VCS_WC_MODIFIED} @@ -568,6 +605,11 @@ else VCS_TAG="\"${VCS_TAG}\"" fi + if [ -z "${VCS_TAG_OPENPGP}" ]; then + VCS_TAG_OPENPGP="nil" + else + VCS_TAG_OPENPGP="\"${VCS_TAG_OPENPGP}\"" + fi : "${VCS_TICK:="nil"}" if [ -z "${VCS_EXTRA}" ]; then VCS_EXTRA="nil" @@ -579,21 +621,28 @@ else VCS_ACTION_STAMP="\"${VCS_ACTION_STAMP}\"" fi + if [ -z "${VCS_COMMIT_OPENPGP}" ]; then + VCS_COMMIT_OPENPGP="nil" + else + VCS_COMMIT_OPENPGP="\"${VCS_COMMIT_OPENPGP}\"" + fi tee << EOF /* ${GENERATED_HEADER} */ let VCS_TYPE = "${VCS_TYPE}" let VCS_BASENAME = "${VCS_BASENAME}" -let VCS_UUID: String? = ${VCS_UUID} -let VCS_NUM: Int = ${VCS_NUM} +let VCS_UUID: String? = ${VCS_UUID} +let VCS_NUM: Int = ${VCS_NUM} let VCS_DATE = "${VCS_DATE}" -let VCS_BRANCH: String = "${VCS_BRANCH}" -let VCS_TAG: String? = ${VCS_TAG} -let VCS_TICK: Int? = ${VCS_TICK} -let ${EXTRA_NAME}: String? = ${VCS_EXTRA} +let VCS_BRANCH: String = "${VCS_BRANCH}" +let VCS_TAG: String? = ${VCS_TAG} +let VCS_TAG_OPENPGP: String? = ${VCS_TAG_OPENPGP} +let VCS_TICK: Int? = ${VCS_TICK} +let ${EXTRA_NAME}: String? = ${VCS_EXTRA} let VCS_ACTION_STAMP: String? = ${VCS_ACTION_STAMP} let VCS_FULL_HASH: String = "${VCS_FULL_HASH}" +let VCS_COMMIT_OPENPGP: String? = ${VCS_COMMIT_OPENPGP} let VCS_SHORT_HASH: String = "${VCS_SHORT_HASH}" let VCS_WC_MODIFIED: Bool = ${VCS_WC_MODIFIED} @@ -618,14 +667,16 @@ VCS_DATE = "${VCS_DATE}" VCS_BRANCH = "${VCS_BRANCH}" VCS_TAG = "${VCS_TAG}" +VCS_TAG_OPENPGP = "${VCS_TAG_OPENPGP}" VCS_TICK = ${VCS_TICK} ${EXTRA_NAME} = "${VCS_EXTRA}" VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}" VCS_FULL_HASH = "${VCS_FULL_HASH}" +VCS_COMMIT_OPENPGP = "${VCS_COMMIT_OPENPGP}" VCS_SHORT_HASH = "${VCS_SHORT_HASH}" -VCS_WC_MODIFIED = ${PY_VCS_WC_MODIFIED} +VCS_WC_MODIFIED = ${VCS_WC_MODIFIED} # end EOF @@ -643,11 +694,13 @@ \$VCS_DATE = '${VCS_DATE}'; \$VCS_BRANCH = '${VCS_BRANCH}'; \$VCS_TAG = '${VCS_TAG}'; +\$VCS_TAG_OPENPGP = '${VCS_TAG_OPENPGP}'; \$VCS_TICK = ${VCS_TICK}; \$${EXTRA_NAME} = '${VCS_EXTRA}'; \$VCS_ACTION_STAMP = '${VCS_ACTION_STAMP}'; \$VCS_FULL_HASH = '${VCS_FULL_HASH}'; +\$VCS_COMMIT_OPENPGP = '${VCS_COMMIT_OPENPGP}'; \$VCS_SHORT_HASH = '${VCS_SHORT_HASH}'; \$VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; @@ -673,11 +726,13 @@ VCS_DATE = "${VCS_DATE}" VCS_BRANCH = "${VCS_BRANCH}" VCS_TAG = "${VCS_TAG}" +VCS_TAG_OPENPGP = "${VCS_TAG_OPENPGP}" VCS_TICK = ${VCS_TICK} ${EXTRA_NAME} = "${VCS_EXTRA}" VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}" VCS_FULL_HASH = "${VCS_FULL_HASH}" +VCS_COMMIT_OPENPGP = "${VCS_COMMIT_OPENPGP}" VCS_SHORT_HASH = "${VCS_SHORT_HASH}" VCS_WC_MODIFIED = ${VCS_WC_MODIFIED} @@ -704,10 +759,12 @@ "VCS_DATE" => "${VCS_DATE}", "VCS_BRANCH" => "${VCS_BRANCH}", "VCS_TAG" => "${VCS_TAG}", + "VCS_TAG_OPENPGP" => "${VCS_TAG_OPENPGP}", "VCS_TICK" => ${VCS_TICK}, "${EXTRA_NAME}" => "${VCS_EXTRA}", "VCS_ACTION_STAMP" => "${VCS_ACTION_STAMP}", "VCS_FULL_HASH" => "${VCS_FULL_HASH}", + "VCS_COMMIT_OPENPGP" => "${VCS_COMMIT_OPENPGP}", "VCS_SHORT_HASH" => "${VCS_SHORT_HASH}", "VCS_WC_MODIFIED" => ${VCS_WC_MODIFIED} ); @@ -733,10 +790,12 @@ VCS_DATE = "${VCS_DATE}" VCS_BRANCH = "${VCS_BRANCH}" VCS_TAG = "${VCS_TAG}" +VCS_TAG_OPENPGP = "${VCS_TAG_OPENPGP}" VCS_TICK = ${VCS_TICK} ${EXTRA_NAME} = "${VCS_EXTRA}" VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}" VCS_FULL_HASH = "${VCS_FULL_HASH}" +VCS_COMMIT_OPENPGP = "${VCS_COMMIT_OPENPGP}" VCS_SHORT_HASH = "${VCS_SHORT_HASH}" VCS_WC_MODIFIED = ${VCS_WC_MODIFIED} ; end @@ -760,11 +819,13 @@ VCS_DATE: "${VCS_DATE}", VCS_BRANCH: "${VCS_BRANCH}", VCS_TAG: "${VCS_TAG}", + VCS_TAG_OPENPGP: "${VCS_TAG_OPENPGP}", VCS_TICK: ${VCS_TICK}, ${EXTRA_NAME}: "${VCS_EXTRA}", VCS_ACTION_STAMP: "${VCS_ACTION_STAMP}", VCS_FULL_HASH: "${VCS_FULL_HASH}", + VCS_COMMIT_OPENPGP: "${VCS_COMMIT_OPENPGP}", VCS_SHORT_HASH: "${VCS_SHORT_HASH}", VCS_WC_MODIFIED: ${VCS_WC_MODIFIED} @@ -795,11 +856,13 @@ "VCS_DATE": "${VCS_DATE}", "VCS_BRANCH":"${VCS_BRANCH}", "VCS_TAG": "${VCS_TAG}", + "VCS_TAG_OPENPGP": "${VCS_TAG_OPENPGP}", "VCS_TICK": ${VCS_TICK}, "${EXTRA_NAME}": "${VCS_EXTRA}", "VCS_ACTION_STAMP": "${VCS_ACTION_STAMP}", "VCS_FULL_HASH": "${VCS_FULL_HASH}", + "VCS_COMMIT_OPENPGP": "${VCS_COMMIT_OPENPGP}", "VCS_SHORT_HASH": "${VCS_SHORT_HASH}", "VCS_WC_MODIFIED": ${VCS_WC_MODIFIED} @@ -824,11 +887,13 @@ public static final String VCS_DATE = "${VCS_DATE}"; public static final String VCS_BRANCH = "${VCS_BRANCH}"; public static final String VCS_TAG = "${VCS_TAG}"; + public static final String VCS_TAG_OPENPGP = "${VCS_TAG_OPENPGP}"; public static final long VCS_TICK = ${VCS_TICK}; public static final String ${EXTRA_NAME} = "${VCS_EXTRA}"; public static final String VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"; public static final String VCS_FULL_HASH = "${VCS_FULL_HASH}"; + public static final String VCS_COMMIT_OPENPGP = "${VCS_COMMIT_OPENPGP}"; public static final String VCS_SHORT_HASH = "${VCS_SHORT_HASH}"; public static final boolean VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; @@ -858,10 +923,12 @@ public static string VcsDate = "${VCS_DATE}"; public static string VcsBranch = "${VCS_DATE}"; public static string VcsTag = "${VCS_TAG}"; + public static string VcsTagOpenpgp = "${VCS_TAG_OPENPGP}"; public static string VcsTick = "${VCS_TICK}"; public static string ${EXTRA_NAME} = "${VCS_EXTRA}"; public static string VcsActionStamp = "${VCS_ACTION_STAMP}"; public static string VcsFullHash = "${VCS_FULL_HASH}"; + public static string VcsCommitOpenpgp = "${VCS_COMMIT_OPENPGP}"; public static string VcsShortHash = "${VCS_SHORT_HASH}"; public static string VcsWcModified = "${VCS_WC_MODIFIED}"; } @@ -885,11 +952,13 @@ VCS_DATE=${VCS_DATE} VCS_BRANCH=${VCS_BRANCH} VCS_TAG=${VCS_TAG} +VCS_TAG_OPENPGP=${VCS_TAG_OPENPGP} VCS_TICK=${VCS_TICK} ${EXTRA_NAME}=${VCS_EXTRA} VCS_ACTION_STAMP=${VCS_ACTION_STAMP} VCS_FULL_HASH=${VCS_FULL_HASH} +VCS_COMMIT_OPENPGP=${VCS_COMMIT_OPENPGP} VCS_SHORT_HASH=${VCS_SHORT_HASH} VCS_WC_MODIFIED=${VCS_WC_MODIFIED} @@ -907,16 +976,19 @@ define(\`VCS_DATE', \`${VCS_DATE}')dnl define(\`VCS_BRANCH', \`${VCS_BRANCH}')dnl define(\`VCS_TAG', \`${VCS_TAG}')dnl +define(\`VCS_TAG_OPENPGP', \`${VCS_TAG_OPENPGP}')dnl define(\`VCS_TICK', \`${VCS_TICK}')dnl define(\`${EXTRA_NAME}', \`${VCS_EXTRA}')dnl define(\`VCS_ACTIONSTAMP', \`${VCS_ACTION_STAMP}')dnl define(\`VCS_FULLHASH', \`${VCS_FULL_HASH}')dnl +define(\`VCS_COMMIT_OPENPGP', \`${VCS_COMMIT_OPENPGP}')dnl define(\`VCS_SHORTHASH', \`${VCS_SHORT_HASH}')dnl define(\`VCS_WC_MODIFIED', \`${VCS_WC_MODIFIED}')dnl EOF } # For (La)TeX output +# shellcheck disable=SC1117 texOutput() { case "${VCS_WC_MODIFIED}" in 0) VCS_WC_MODIFIED="false" ;; @@ -934,10 +1006,12 @@ \def \vcsDate {${VCS_DATE}} \def \vcsBranch {${VCS_BRANCH}} \def \vcsTag {${VCS_TAG}} +\def \vcsTagOpenpgp {${VCS_TAG_OPENPGP}} \def \vcsTick {${VCS_TICK}} \def \\${EXTRA_NAME} {${VCS_EXTRA}} \def \vcsACTIONSTAMP {${VCS_ACTION_STAMP}} \def \vcsFullHash {${VCS_FULL_HASH}} +\def \vcsCommitOpenpgp {${VCS_COMMIT_OPENPGP}} \def \vcsShortHash {${VCS_SHORT_HASH}} \def \vcsWCModified {${VCS_WC_MODIFIED}} \endinput @@ -959,12 +1033,14 @@ (define VCS_DATE "${VCS_DATE}") (define VCS_BRANCH "${VCS_BRANCH}") (define VCS_TAG "${VCS_TAG}") +(define VCS_TAG_OPENPGP "${VCS_TAG_OPENPGP}") (define VCS_TICK ${VCS_TICK}) -(define ${EXTRA_NAME} "${VCS_EXTRA}") +(define ${EXTRA_NAME} "${VCS_EXTRA}") (define VCS_ACTION_STAMP "${VCS_ACTION_STAMP}") -(define VCS_FULL_HASH "${VCS_FULL_HASH}") -(define VCS_SHORT_HASH "${VCS_SHORT_HASH}") +(define VCS_FULL_HASH "${VCS_FULL_HASH}") +(define VCS_COMMIT_OPENPGP "${VCS_COMMIT_OPENPGP}") +(define VCS_SHORT_HASH "${VCS_SHORT_HASH}") (define VCS_WC_MODIFIED ${VCS_WC_MODIFIED}) ;; end @@ -986,11 +1062,13 @@ (def VCS_DATE "${VCS_DATE}") (def VCS_BRANCH "${VCS_BRANCH}") (def VCS_TAG "${VCS_TAG}") +(def VCS_TAG_OPENPGP "${VCS_TAG_OPENPGP}") (def VCS_TICK ${VCS_TICK}) (def ${EXTRA_NAME} "${VCS_EXTRA}") (def VCS_ACTION_STAMP "${VCS_ACTION_STAMP}") (def VCS_FULL_HASH "${VCS_FULL_HASH}") +(def VCS_COMMIT_OPENPGP "${VCS_COMMIT_OPENPGP}") (def VCS_SHORT_HASH "${VCS_SHORT_HASH}") (def VCS_WC_MODIFIED ${VCS_WC_MODIFIED}) @@ -1008,12 +1086,14 @@ $([ "${VCS_NUM}" ] && echo "%define vcs_num ${VCS_NUM}") $([ "${VCS_DATE}" ] && echo "%define vcs_date ${VCS_DATE}") $([ "${VCS_BRANCH}" ] && echo "%define vcs_branch ${VCS_BRANCH}") +$([ "${VCS_TAG_OPENPGP}" ] && echo "%define vcs_tag_openpgp ${VCS_TAG_OPENPGP}") $([ "${VCS_TAG}" ] && echo "%define vcs_tag ${VCS_TAG}") $([ "${VCS_TICK}" ] && echo "%define vcs_tick ${VCS_TICK}") $([ "${VCS_EXTRA}" ] && echo "%define ${EXTRA_NAME} ${VCS_EXTRA}") $([ "${VCS_ACTION_STAMP}" ] && echo "%define vcs_action_stamp ${VCS_ACTION_STAMP}") $([ "${VCS_FULL_HASH}" ] && echo "%define vcs_full_hash ${VCS_FULL_HASH}") +$([ "${VCS_COMMIT_OPENPGP}" ] && echo "%define vcs_commit_openpgp ${VCS_COMMIT_OPENPGP}") $([ "${VCS_SHORT_HASH}" ] && echo "%define vcs_short_hash ${VCS_SHORT_HASH}") $([ "${VCS_WC_MODIFIED}" ] && echo "%define vcs_wc_modified ${VCS_WC_MODIFIED}") @@ -1035,19 +1115,21 @@ namespace $(echo "${NAMESPACE}" | tr '[:upper:]' '[:lower:]') { - const std::string VCS_TYPE = "${VCS_TYPE}"; - const std::string VCS_BASENAME = "${VCS_BASENAME}"; - const std::string VCS_UUID = "${VCS_UUID}"; - const int VCS_NUM = ${VCS_NUM}; - const std::string VCS_DATE = "${VCS_DATE}"; - const std::string VCS_BRANCH = "${VCS_BRANCH}"; - const std::string VCS_TAG = "${VCS_TAG}"; - const int VCS_TICK = ${VCS_TICK}; + const std::string VCS_TYPE = "${VCS_TYPE}"; + const std::string VCS_BASENAME = "${VCS_BASENAME}"; + const std::string VCS_UUID = "${VCS_UUID}"; + const int VCS_NUM = ${VCS_NUM}; + const std::string VCS_DATE = "${VCS_DATE}"; + const std::string VCS_BRANCH = "${VCS_BRANCH}"; + const std::string VCS_TAG = "${VCS_TAG}"; + const std::string VCS_TAG_OPENPGP = "${VCS_TAG_OPENPGP}"; + const int VCS_TICK = ${VCS_TICK}; const std::string ${EXTRA_NAME} = "${VCS_EXTRA}"; - const std::string VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"; - const std::string VCS_FULL_HASH = "${VCS_FULL_HASH}"; - const std::string VCS_SHORT_HASH = "${VCS_SHORT_HASH}"; + const std::string VCS_ACTION_STAMP = "${VCS_ACTION_STAMP}"; + const std::string VCS_FULL_HASH = "${VCS_FULL_HASH}"; + const std::string VCS_COMMIT_OPENPGP = "${VCS_COMMIT_OPENPGP}"; + const std::string VCS_SHORT_HASH = "${VCS_SHORT_HASH}"; const int VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; } @@ -1074,11 +1156,13 @@ VCS_DATE = '${VCS_DATE}'; VCS_BRANCH = '${VCS_BRANCH}'; VCS_TAG = '${VCS_TAG}'; +VCS_TAG_OPENPGP = '${VCS_TAG_OPENPGP}'; VCS_TICK = ${VCS_TICK}; ${EXTRA_NAME} = '${VCS_EXTRA}'; VCS_ACTION_STAMP = '${VCS_ACTION_STAMP}'; VCS_FULL_HASH = '${VCS_FULL_HASH}'; +VCS_COMMIT_OPENPGP = '${VCS_COMMIT_OPENPGP}'; VCS_SHORT_HASH = '${VCS_SHORT_HASH}'; VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; @@ -1099,11 +1183,13 @@ VCS_DATE = '${VCS_DATE}'; VCS_BRANCH = '${VCS_BRANCH}'; VCS_TAG = '${VCS_TAG}'; +VCS_TAG_OPENPGP = '${VCS_TAG_OPENPGP}'; VCS_TICK = ${VCS_TICK}; ${EXTRA_NAME} = '${VCS_EXTRA}'; VCS_ACTION_STAMP = '${VCS_ACTION_STAMP}'; VCS_FULL_HASH = '${VCS_FULL_HASH}'; +VCS_COMMIT_OPENPGP = '${VCS_COMMIT_OPENPGP}'; VCS_SHORT_HASH = '${VCS_SHORT_HASH}'; VCS_WC_MODIFIED = ${VCS_WC_MODIFIED}; @@ -1112,6 +1198,31 @@ EOF } +sedOutput() { + tee << EOF +# ${GENERATED_HEADER} + +s|@VCS_TYPE@|${VCS_TYPE}|g +s|@VCS_BASENAME@|${VCS_BASENAME}|g +s|@VCS_UUID@|${VCS_UUID}|g +s|@VCS_NUM@|${VCS_NUM}|g +s|@VCS_DATE@|${VCS_DATE}|g +s|@VCS_BRANCH@|${VCS_BRANCH}|g +s|@VCS_TAG@|${VCS_TAG}|g +s|@VCS_TAG_OPENPGP@|${VCS_TAG_OPENPGP}|g +s|@VCS_TICK@|${VCS_TICK}|g +s|@${EXTRA_NAME}@|${VCS_EXTRA}|g + +s|@VCS_ACTION_STAMP@|${VCS_ACTION_STAMP}|g +s|@VCS_FULL_HASH@|${VCS_FULL_HASH}|g +s|@VCS_COMMIT_OPENPGP@|${VCS_COMMIT_OPENPGP}|g +s|@VCS_SHORT_HASH@|${VCS_SHORT_HASH}|g + +s|@VCS_WC_MODIFIED@|${VCS_WC_MODIFIED}|g + +# end +EOF +} # Helper functions # Count path segments @@ -1296,6 +1407,8 @@ xcodeOutput elif [ "${AFILETYPE}" = "swift" ]; then swiftOutput + elif [ "${AFILETYPE}" = "sed" ]; then + sedOutput elif [ "${AFILETYPE}" = "sh" ]; then shOutput elif [ "${AFILETYPE}" = "py" ] || [ "${AFILETYPE}" = "python" ]; then diff -Nru autorevision-1.20/contribs/autorevision_declr.h autorevision-1.21/contribs/autorevision_declr.h --- autorevision-1.20/contribs/autorevision_declr.h 2016-05-06 13:18:02.000000000 +0000 +++ autorevision-1.21/contribs/autorevision_declr.h 2017-09-30 18:51:47.000000000 +0000 @@ -9,11 +9,13 @@ extern const char *VCS_DATE; extern const char *VCS_BRANCH; extern const char *VCS_TAG; +extern const char *VCS_TAG_OPENPGP; extern const int VCS_TICK; extern const char *VCS_EXTRA; extern const char *VCS_ACTION_STAMP; extern const char *VCS_FULL_HASH; +extern const char *VCS_COMMIT_OPENPGP; extern const char *VCS_SHORT_HASH; extern const int VCS_WC_MODIFIED; diff -Nru autorevision-1.20/contribs/logo.svg autorevision-1.21/contribs/logo.svg --- autorevision-1.20/contribs/logo.svg 2014-02-27 19:45:03.000000000 +0000 +++ autorevision-1.21/contribs/logo.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ - - - - - - - - - - - - #define VCS_TYPE                    "git" - #define VCS_BASENAME        "autorevision" - #define VCS_UUID                    "da2830f81fec4c6ebce8ebf23f35b0e6b066c149" - #define VCS_NUM                    218 - #define VCS_DATE                    "2014-01-01T14:44:20-0500" - #define VCS_BRANCH            "master" - #define VCS_TAG                    "v/1.8" - #define VCS_TICK                    6 - #define VCS_FULL_HASH            "5f5ef3165c882132bd43daed1211c7b9ee5c28b8" - #define VCS_SHORT_HASH        "5f5ef31" - #define VCS_WC_MODIFIED        0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru autorevision-1.20/debian/changelog autorevision-1.21/debian/changelog --- autorevision-1.20/debian/changelog 2017-01-04 02:03:03.000000000 +0000 +++ autorevision-1.21/debian/changelog 2017-10-01 05:54:10.000000000 +0000 @@ -1,3 +1,12 @@ +autorevision (1.21-1) unstable; urgency=medium + + * New upstream release + * Avoid installing texlive along with asciidoc + * Bump Standards-Version, no changes needed + * Bump debhelper compat, no changes detected + + -- Paul Wise Sun, 01 Oct 2017 13:54:10 +0800 + autorevision (1.20-1) unstable; urgency=medium * New upstream release diff -Nru autorevision-1.20/debian/compat autorevision-1.21/debian/compat --- autorevision-1.20/debian/compat 2013-08-13 14:59:02.000000000 +0000 +++ autorevision-1.21/debian/compat 2017-10-01 05:51:02.000000000 +0000 @@ -1 +1 @@ -9 +10 diff -Nru autorevision-1.20/debian/control autorevision-1.21/debian/control --- autorevision-1.20/debian/control 2016-11-16 03:12:44.000000000 +0000 +++ autorevision-1.21/debian/control 2017-10-01 05:50:19.000000000 +0000 @@ -3,13 +3,13 @@ Priority: optional Maintainer: Paul Wise Build-Depends: - asciidoc, - debhelper (>= 9), + asciidoc-base | asciidoc (<< 8.6.9-4~), + debhelper (>= 10), docbook-xml, docbook-xsl, libxml2-utils, xsltproc, -Standards-Version: 3.9.8 +Standards-Version: 4.1.1 Homepage: https://autorevision.github.io/ Package: autorevision diff -Nru autorevision-1.20/logo.svg.in autorevision-1.21/logo.svg.in --- autorevision-1.20/logo.svg.in 1970-01-01 00:00:00.000000000 +0000 +++ autorevision-1.21/logo.svg.in 2017-05-16 14:23:10.000000000 +0000 @@ -0,0 +1,55 @@ + + + + + + + + + + + + #define VCS_TYPE                    "@VCS_TYPE@" + #define VCS_BASENAME        "@VCS_BASENAME@" + #define VCS_UUID                    "@VCS_UUID@" + #define VCS_NUM                    @VCS_NUM@ + #define VCS_DATE                    "@VCS_DATE@" + #define VCS_BRANCH            "@VCS_BRANCH@" + #define VCS_TAG                    "@VCS_TAG@" + #define VCS_TICK                    @VCS_TICK@ + #define VCS_FULL_HASH            "@VCS_FULL_HASH@" + #define VCS_SHORT_HASH        "@VCS_SHORT_HASH@" + #define VCS_WC_MODIFIED        @VCS_WC_MODIFIED@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru autorevision-1.20/Makefile autorevision-1.21/Makefile --- autorevision-1.20/Makefile 2016-12-21 05:59:06.000000000 +0000 +++ autorevision-1.21/Makefile 2017-05-16 14:23:10.000000000 +0000 @@ -40,11 +40,12 @@ control EXTRA_DIST = \ + logo.svg.in \ contribs \ AUTHORS.txt \ autorevision.cache -all : cmd man +all : cmd man logo.svg # The script cmd: autorevision @@ -55,7 +56,10 @@ chmod +x autorevision # The Man Page -man: autorevision.1 +man: autorevision.1.gz + +autorevision.1.gz: autorevision.1 + gzip --no-name < autorevision.1 > autorevision.1.gz autorevision.1: autorevision.asciidoc a2x --attribute="revdate=$(DOCDATE)" --attribute="revnumber=$(VERS)" -f manpage autorevision.asciidoc @@ -67,9 +71,15 @@ # Authors auth: AUTHORS.txt -AUTHORS.txt: +AUTHORS.txt: .mailmap autorevision.cache git log --format='%aN <%aE>' | sort -f | uniq -c | sort -rn | sed 's:^ *[0-9]* *::' > AUTHORS.txt +autorevision.sed: autorevision.cache + ./autorevision.sh -f -t sed -o $< > $@ + +logo.svg: logo.svg.in autorevision.sed + sed -f autorevision.sed $< > $@ + # The tarball signed and sealed dist: tarball autorevision-$(VERS).tgz.md5 autorevision-$(VERS).tgz.sig @@ -88,20 +98,21 @@ autorevision-$(VERS).tgz: $(SOURCES) all auth mkdir autorevision-$(VERS) cp -pR $(SOURCES) $(EXTRA_DIST) autorevision-$(VERS)/ - @COPYFILE_DISABLE=1 tar -czf autorevision-$(VERS).tgz --exclude=".DS_Store" autorevision-$(VERS) + @COPYFILE_DISABLE=1 GZIP=-n9 tar -czf autorevision-$(VERS).tgz --exclude=".DS_Store" autorevision-$(VERS) rm -fr autorevision-$(VERS) install: all install -d "$(target)/bin" install -m 755 autorevision "$(target)/bin/autorevision" install -d "$(target)$(mandir)/man1" - gzip --no-name < autorevision.1 > "$(target)$(mandir)/man1/autorevision.1.gz" + install -m 644 autorevision.1.gz "$(target)$(mandir)/man1/autorevision.1.gz" uninstall: rm -f "$(target)/bin/autorevision" "$(target)$(mandir)/man1/autorevision.1.gz" clean: - rm -f autorevision autorevision.html autorevision.1 + rm -f autorevision autorevision.html autorevision.1 autorevision.1.gz + rm -f autorevision.sed logo.svg rm -f *.tgz *.md5 *.sig rm -f docbook-xsl.css rm -f CONTRIBUTING.html COPYING.html README.html diff -Nru autorevision-1.20/NEWS autorevision-1.21/NEWS --- autorevision-1.20/NEWS 2017-01-03 17:47:21.000000000 +0000 +++ autorevision-1.21/NEWS 2017-09-30 19:02:45.000000000 +0000 @@ -1,5 +1,13 @@ autorevision history +1.21 @ 2017-09-30: + Try to make tarballs more reproducible. + Add an option to silence warnings. + Add a sed script output. + Auto generate the logo with update commit info. + Note if the tag (in git) is not annotated. + Extract info about OpenPGP keys used to sign tags/commits. + 1.20 @ 2017-01-03: Better determinism in the order of the author file. Better tests for `local` support.