aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ISSUE_TEMPLATE.md11
-rwxr-xr-xscripts/git-log-pretty-since.sh32
-rwxr-xr-xscripts/release.sh63
3 files changed, 101 insertions, 5 deletions
diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md
index e0185844ad..d9fd758177 100644
--- a/ISSUE_TEMPLATE.md
+++ b/ISSUE_TEMPLATE.md
@@ -1,6 +1,5 @@
- Neovim version:
-- [ ] Vim behaves differently?
- - Vim version:
+- [ ] Vim behaves differently? Vim version:
- Operating system/version:
- Terminal name/version:
- `$TERM`:
@@ -9,7 +8,9 @@
### Expected behaviour
-### Steps to reproduce using `nvim -u NONE`
+### Steps to reproduce using `nvim -u NORC`
-1. `nvim -u NONE`
-2.
+```
+nvim -u NORC
+
+```
diff --git a/scripts/git-log-pretty-since.sh b/scripts/git-log-pretty-since.sh
new file mode 100755
index 0000000000..d8e3282fb3
--- /dev/null
+++ b/scripts/git-log-pretty-since.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+
+# Shows a log with changes grouped next to their merge-commit.
+#
+# Parameters:
+# $1 "since" commit
+# $2 "inverse match" regex pattern
+
+set -e
+set -u
+set -o pipefail
+
+__SINCE=$1
+__INVMATCH=$2
+
+is_merge_commit() {
+ git rev-parse $1 >/dev/null 2>&1 \
+ || { echo "ERROR: invalid commit: $1"; exit 1; }
+ git log $1^2 >/dev/null 2>&1 && return 0 || return 1
+}
+
+for commit in $(git log --format='%H' --first-parent --since $__SINCE); do
+ if is_merge_commit ${commit} ; then
+ if [ -z "$__INVMATCH" ] || ! git log --oneline ${commit}^1..${commit}^2 \
+ | grep -E "$__INVMATCH" >/dev/null 2>&1 ; then
+ git log -1 --oneline ${commit}
+ git log --format=' %h %s' ${commit}^1..${commit}^2
+ fi
+ else
+ git log -1 --oneline ${commit}
+ fi
+done
diff --git a/scripts/release.sh b/scripts/release.sh
new file mode 100755
index 0000000000..514e5b380a
--- /dev/null
+++ b/scripts/release.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+
+# Performs steps to tag a release.
+#
+# Steps:
+# Create the "release" commit:
+# - CMakeLists.txt: Unset NVIM_VERSION_PRERELEASE
+# - Tag the commit.
+# Create the "version bump" commit:
+# - CMakeLists.txt: Set NVIM_VERSION_PRERELEASE to "-dev"
+#
+# Manual steps:
+# - CMakeLists.txt: Bump NVIM_VERSION_* as appropriate.
+# - git push --follow-tags
+
+set -e
+set -u
+set -o pipefail
+
+cd "$(git rev-parse --show-toplevel)"
+
+__LAST_TAG=$(git describe --abbrev=0)
+[ -z "$__LAST_TAG" ] && { echo 'ERROR: no tag found'; exit 1; }
+__VERSION_MAJOR=$(grep 'set(NVIM_VERSION_MAJOR' CMakeLists.txt\
+ |sed -r 's/.*NVIM_VERSION_MAJOR ([[:digit:]]).*/\1/')
+__VERSION_MINOR=$(grep 'set(NVIM_VERSION_MINOR' CMakeLists.txt\
+ |sed -r 's/.*NVIM_VERSION_MINOR ([[:digit:]]).*/\1/')
+__VERSION_PATCH=$(grep 'set(NVIM_VERSION_PATCH' CMakeLists.txt\
+ |sed -r 's/.*NVIM_VERSION_PATCH ([[:digit:]]).*/\1/')
+__VERSION="${__VERSION_MAJOR}.${__VERSION_MINOR}.${__VERSION_PATCH}"
+{ [ -z "$__VERSION_MAJOR" ] || [ -z "$__VERSION_MINOR" ] || [ -z "$__VERSION_PATCH" ]; } \
+ && { echo "ERROR: version parse failed: '${__VERSION}'"; exit 1; }
+__RELEASE_MSG="NVIM v${__VERSION}
+
+Features:
+
+Fixes:
+
+Changes:
+
+"
+__BUMP_MSG="version bump"
+
+echo "Most recent tag: ${__LAST_TAG}"
+echo "Release version: ${__VERSION}"
+sed -i -r 's/(NVIM_VERSION_PRERELEASE) "-dev"/\1 ""/' CMakeLists.txt
+echo "Building changelog since ${__LAST_TAG}..."
+__CHANGELOG="$(./scripts/git-log-pretty-since.sh $__LAST_TAG 'vim-patch:\S')"
+
+git add CMakeLists.txt
+git commit --edit -m "${__RELEASE_MSG} ${__CHANGELOG}"
+git tag -a v${__VERSION} -m "NVIM v${__VERSION}"
+
+sed -i -r 's/(NVIM_VERSION_PRERELEASE) ""/\1 "-dev"/' CMakeLists.txt
+nvim -c '/NVIM_VERSION' -c 'echo "Update version numbers"' CMakeLists.txt
+git add CMakeLists.txt
+git commit -m "$__BUMP_MSG"
+
+echo "
+Next steps:
+ - Double-check NVIM_VERSION_* in CMakeLists.txt
+ - git push --follow-tags
+ - update website: index.html"