Revision 7b83eacb17e69b0605c785960ab94c0d69f2fedd authored by Markus Kurtz on 02 October 2023, 11:16:02 UTC, committed by GitHub on 02 October 2023, 11:16:02 UTC
Rationale: currently, the Markdown documentation specifies the necessary
indent for code blocks and lists only. As there are people out there,
who indent their lines by only two spaces (or whatever amount)
documenting the indent could help in finding the reason for malformed
Markdown. See #45622. For an example where this problem occurred see
https://github.com/oscar-system/Oscar.jl/pull/1369#discussion_r893488230.
1 parent 4119dcf
Raw File
version_git.sh
#!/bin/sh
# This file is a part of Julia. License is MIT: https://julialang.org/license

# This file collects git info and create a julia file with the GIT_VERSION_INFO struct

echo "# This file was autogenerated by base/version_git.sh"
echo "struct GitVersionInfo"
echo "    commit::String"
echo "    commit_short::String"
echo "    branch::String"
echo "    build_number::Int"
echo "    date_string::String"
echo "    tagged_commit::Bool"
echo "    fork_master_distance::Int"
echo "    fork_master_timestamp::Float64"
echo "    build_system_commit::String"
echo "    build_system_commit_short::String"
echo "end"
echo ""

cd $1

# If the script didn't ask not to use git info
if [  "$#" = "2"  -a "$2" = "NO_GIT" ]; then
    # this comment is used in base/Makefile to distinguish boilerplate
    echo "# Default output if git is not available."
    echo 'const GIT_VERSION_INFO = GitVersionInfo("", "", "", 0, "", true, 0, 0.0, "", "")'
    exit 0
fi
# Collect temporary variables
origin=$(git config -l 2>/dev/null | grep 'remote\.\w*\.url.*JuliaLang/julia' | sed -n 's/remote\.\([a-zA-Z]*\)\..*/\1\//p')
if [ -z "$origin" ]; then
    origin="origin/"
fi
git_time=$(git log -1 --pretty=format:%ct)

#collect the contents
commit=$(git rev-parse HEAD)
commit_short=$(git rev-parse --short HEAD)
if [ -n "$(git status --porcelain)" ]; then
    # append dirty mark '*' if the repository has uncommitted changes
    commit_short="$commit_short"*
fi

# Our CI system checks commits out as a detached head, and so we must
# use the provided branch name, as we cannot autodetect this commit as
# the tip of any such branch.
if [ -n "${BUILDKITE_BRANCH}" ]; then
    branch="${BUILDKITE_BRANCH}"
else
    branch=$(git rev-parse --abbrev-ref HEAD)
fi

topdir=$(git rev-parse --show-toplevel)
verchanged=$(git blame -L ,1 -sl -- "$topdir/VERSION" | cut -f 1 -d " ")
if [ $verchanged = 0000000000000000000000000000000000000000 ]; then
    # uncommitted change to VERSION
    build_number=0
else
    build_number=$(git rev-list --count HEAD "^$verchanged")
fi

case $(uname) in
  Darwin | FreeBSD)
    if (date --version 2>/dev/null | grep -q 'GNU coreutils')
    then # GNU date installed and earlier on PATH than BSD date
        date_string="$(date --date="@$git_time" -u '+%Y-%m-%d %H:%M %Z')"
    else # otherwise assume BSD date
        date_string="$(date -jr $git_time -u '+%Y-%m-%d %H:%M %Z')"
    fi
    ;;
  MINGW*)
    git_time=$(git log -1 --pretty=format:%ci)
    date_string="$(date --date="$git_time" -u '+%Y-%m-%d %H:%M %Z')"
    ;;
  *)
    date_string="$(date --date="@$git_time" -u '+%Y-%m-%d %H:%M %Z')"
    ;;
esac
if [ $(git describe --tags --exact-match 2> /dev/null) ]; then
    tagged_commit="true"
else
    tagged_commit="false"
fi
fork_master_distance=$(git rev-list HEAD ^"$(echo $origin)master" | wc -l | sed -e 's/[^[:digit:]]//g')
fork_master_timestamp=$(git show -s $(git merge-base HEAD $(echo $origin)master) --format=format:"%ct")

# Check for errors and emit default value for missing numbers.
if [ -z "$build_number" ]; then
    build_number="-1"
fi
if [ -z "$fork_master_distance" ]; then
    fork_master_distance="-1"
fi
if [ -z "$fork_master_timestamp" ]; then
    fork_master_timestamp="0"
fi

build_system_directory="../.buildkite"
if [ -d "${build_system_directory}/.git" ]; then
    build_system_commit=$(git -C "${build_system_directory}" rev-parse HEAD)
    build_system_commit_short=$(git -C "${build_system_directory}" rev-parse --short HEAD)
else
    build_system_commit=""
    build_system_commit_short=""
fi

echo "const GIT_VERSION_INFO = GitVersionInfo("
echo "    \"$commit\","
echo "    \"$commit_short\","
echo "    \"$branch\","
echo "    $build_number,"
echo "    \"$date_string\","
echo "    $tagged_commit,"
echo "    $fork_master_distance,"
echo "    $fork_master_timestamp.0,"
echo "    \"$build_system_commit\","
echo "    \"$build_system_commit_short\","
echo ")"
back to top