mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
release.sh: Automate release process.
This commit is contained in:
parent
ab63f5d934
commit
4f5a18237b
@ -1,6 +1,5 @@
|
|||||||
- Neovim version:
|
- Neovim version:
|
||||||
- [ ] Vim behaves differently?
|
- [ ] Vim behaves differently? Vim version:
|
||||||
- Vim version:
|
|
||||||
- Operating system/version:
|
- Operating system/version:
|
||||||
- Terminal name/version:
|
- Terminal name/version:
|
||||||
- `$TERM`:
|
- `$TERM`:
|
||||||
@ -9,7 +8,9 @@
|
|||||||
|
|
||||||
### Expected behaviour
|
### Expected behaviour
|
||||||
|
|
||||||
### Steps to reproduce using `nvim -u NONE`
|
### Steps to reproduce using `nvim -u NORC`
|
||||||
|
|
||||||
1. `nvim -u NONE`
|
```
|
||||||
2.
|
nvim -u NORC
|
||||||
|
|
||||||
|
```
|
||||||
|
32
scripts/git-log-pretty-since.sh
Executable file
32
scripts/git-log-pretty-since.sh
Executable file
@ -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
|
63
scripts/release.sh
Executable file
63
scripts/release.sh
Executable file
@ -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"
|
Loading…
Reference in New Issue
Block a user