diff mbox series

[3/4] release.sh: update version files make commit optional

Message ID 20250110-update-release-v1-3-61e40b8ffbac@kernel.org (mailing list archive)
State New
Headers show
Series Update release.sh | expand

Commit Message

Andrey Albershteyn Jan. 10, 2025, 11:05 a.m. UTC
Based on ./VERSION script updates all other files. For
./doc/changelog script asks maintainer to fill it manually as not
all changes goes into changelog.

--no-commit|-n flag is handy when something got into the version commit
and need to be changed manually. Then ./release.sh -c will use fixed
history

Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
---
 release.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 59 insertions(+), 17 deletions(-)

Comments

Darrick J. Wong Jan. 16, 2025, 10:33 p.m. UTC | #1
On Fri, Jan 10, 2025 at 12:05:08PM +0100, Andrey Albershteyn wrote:
> Based on ./VERSION script updates all other files. For
> ./doc/changelog script asks maintainer to fill it manually as not
> all changes goes into changelog.
> 
> --no-commit|-n flag is handy when something got into the version commit
> and need to be changed manually. Then ./release.sh -c will use fixed
> history
> 
> Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
> ---
>  release.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++++++--------------
>  1 file changed, 59 insertions(+), 17 deletions(-)
> 
> diff --git a/release.sh b/release.sh
> index a23adc47efa5163b4e0082050c266481e4051bfb..c34efcbcdfcaf50a08853e65542e8f16214cfb4e 100755
> --- a/release.sh
> +++ b/release.sh
> @@ -11,16 +11,33 @@
>  
>  set -e
>  
> -. ./VERSION
> -
> -version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION}
> -date=`date +"%-d %B %Y"`
> -
>  KUP=0
> +COMMIT=1
>  
>  help() {
>  	echo "$(basename) - create xfsprogs release"
>  	printf "\t[--kup|-k] upload final tarball with KUP\n"
> +	printf "\t[--no-commit|-n] don't create release commit\n"
> +}
> +
> +update_version() {
> +	echo "Updating version files"
> +	# doc/CHANGES
> +	header="xfsprogs-${version} ($(date +'%d %b %Y'))"
> +	sed -i "1s/^/$header\n\t<TODO list user affecting changes>\n\n/" doc/CHANGES
> +	$EDITOR doc/CHANGES
> +
> +	# ./configure.ac
> +	CONF_AC="AC_INIT([xfsprogs],[${version}],[linux-xfs@vger.kernel.org])"
> +	sed -i "s/^AC_INIT.*/$CONF_AC/" ./configure.ac
> +
> +	# ./debian/changelog
> +	sed -i "1s/^/\n/" ./debian/changelog
> +	sed -i "1s/^/ -- Nathan Scott <nathans@debian.org>  `date -R`\n/" ./debian/changelog
> +	sed -i "1s/^/\n/" ./debian/changelog
> +	sed -i "1s/^/  * New upstream release\n/" ./debian/changelog
> +	sed -i "1s/^/\n/" ./debian/changelog
> +	sed -i "1s/^/xfsprogs (${version}-1) unstable; urgency=low\n/" ./debian/changelog
>  }
>  
>  while [ $# -gt 0 ]; do
> @@ -28,6 +45,9 @@ while [ $# -gt 0 ]; do
>  		--kup|-k)
>  			KUP=1
>  			;;
> +		--no-commit|-n)
> +			COMMIT=0
> +			;;
>  		--help|-h)
>  			help
>  			exit 0
> @@ -40,6 +60,36 @@ while [ $# -gt 0 ]; do
>  	shift
>  done
>  
> +if [ -z "$EDITOR" ]; then
> +	EDITOR=$(command -v vi)
> +fi

I wonder if it would be sensible to try nano as well?  Probably most
systems have a vi of some kind, or a nano of some kind, but they
probably don't lack both.

> +
> +if [ $COMMIT -eq 1 ]; then
> +	if git diff --exit-code ./VERSION > /dev/null; then
> +		$EDITOR ./VERSION
> +	fi
> +fi

Er... what does this do?  If something has changed VERSION, then we pop
it open in an editor before sourcing it?

Also, do you want to update debian/changelog at the same time?  Normally
Debian maintainers use dch(1) to create the changelog entry, but it's
basically this:

rm -f /tmp/whatever
debdate="$(date '+%a, %d %b %Y %T %z')"
cat > /tmp/whatever << ENDL
xfsprogs ($version) unstable; urgency=low

  * New upstream release

 -- Nathan Scott <nathans@debian.org>  $debdate

ENDL
cat debian/changelog >> /tmp/whatever
cat /tmp/whatever > debian/changelog
rm -f /tmp/whatever

(I can also send a patch atop your series to do that, if you'd rather I
go mess with the debian stuff)

> +
> +. ./VERSION
> +
> +version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION}
> +date=`date +"%-d %B %Y"`
> +
> +if [ $COMMIT -eq 1 ]; then
> +	update_version
> +
> +	git diff --color=always | less -r
> +	[[ "$(read -e -p 'All good? [Y/n]> '; echo $REPLY)" == [Nn]* ]] && exit 0
> +
> +	echo "Commiting new version update to git"
> +	git commit --all --signoff --message="xfsprogs: Release v${version}
> +
> +Update all the necessary files for a v${version} release."
> +
> +	echo "Tagging git repository"
> +	git tag --annotate --sign --message="Release v${version}" v${version}
> +fi
> +
>  echo "Cleaning up"
>  make realclean
>  rm -rf "xfsprogs-${version}.tar" \
> @@ -47,17 +97,6 @@ rm -rf "xfsprogs-${version}.tar" \
>  	"xfsprogs-${version}.tar.asc" \
>  	"xfsprogs-${version}.tar.sign"
>  
> -echo "Updating CHANGES"
> -sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/CHANGES.tmp && \
> -	mv doc/CHANGES.tmp doc/CHANGES
> -
> -echo "Commiting CHANGES update to git"
> -git commit --all --signoff --message="xfsprogs: Release v${version}
> -
> -Update all the necessary files for a v${version} release."
> -
> -echo "Tagging git repository"
> -git tag --annotate --sign --message="Release v${version}" v${version}
>  
>  echo "Making source tarball"
>  make dist
> @@ -83,4 +122,7 @@ if [ $KUP -eq 1 ]; then
>  		pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz
>  fi;
>  
> -echo "Done. Please remember to push out tags using \"git push origin v${version}\""
> +echo ""
> +echo "Done. Please remember to push out tags and the branch."
> +printf "\tgit push origin v${version}\n"
> +printf "\tgit push origin master\n"

I think you can do that all in one push, e.g.

git push origin v6.13.0 master

--D

> 
> -- 
> 2.47.0
> 
>
Andrey Albershteyn Jan. 20, 2025, 11:53 a.m. UTC | #2
On 2025-01-16 14:33:18, Darrick J. Wong wrote:
> On Fri, Jan 10, 2025 at 12:05:08PM +0100, Andrey Albershteyn wrote:
> > Based on ./VERSION script updates all other files. For
> > ./doc/changelog script asks maintainer to fill it manually as not
> > all changes goes into changelog.
> > 
> > --no-commit|-n flag is handy when something got into the version commit
> > and need to be changed manually. Then ./release.sh -c will use fixed
> > history
> > 
> > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
> > ---
> >  release.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++++++--------------
> >  1 file changed, 59 insertions(+), 17 deletions(-)
> > 
> > diff --git a/release.sh b/release.sh
> > index a23adc47efa5163b4e0082050c266481e4051bfb..c34efcbcdfcaf50a08853e65542e8f16214cfb4e 100755
> > --- a/release.sh
> > +++ b/release.sh
> > @@ -11,16 +11,33 @@
> >  
> >  set -e
> >  
> > -. ./VERSION
> > -
> > -version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION}
> > -date=`date +"%-d %B %Y"`
> > -
> >  KUP=0
> > +COMMIT=1
> >  
> >  help() {
> >  	echo "$(basename) - create xfsprogs release"
> >  	printf "\t[--kup|-k] upload final tarball with KUP\n"
> > +	printf "\t[--no-commit|-n] don't create release commit\n"
> > +}
> > +
> > +update_version() {
> > +	echo "Updating version files"
> > +	# doc/CHANGES
> > +	header="xfsprogs-${version} ($(date +'%d %b %Y'))"
> > +	sed -i "1s/^/$header\n\t<TODO list user affecting changes>\n\n/" doc/CHANGES
> > +	$EDITOR doc/CHANGES
> > +
> > +	# ./configure.ac
> > +	CONF_AC="AC_INIT([xfsprogs],[${version}],[linux-xfs@vger.kernel.org])"
> > +	sed -i "s/^AC_INIT.*/$CONF_AC/" ./configure.ac
> > +
> > +	# ./debian/changelog
> > +	sed -i "1s/^/\n/" ./debian/changelog
> > +	sed -i "1s/^/ -- Nathan Scott <nathans@debian.org>  `date -R`\n/" ./debian/changelog
> > +	sed -i "1s/^/\n/" ./debian/changelog
> > +	sed -i "1s/^/  * New upstream release\n/" ./debian/changelog
> > +	sed -i "1s/^/\n/" ./debian/changelog
> > +	sed -i "1s/^/xfsprogs (${version}-1) unstable; urgency=low\n/" ./debian/changelog
> >  }
> >  
> >  while [ $# -gt 0 ]; do
> > @@ -28,6 +45,9 @@ while [ $# -gt 0 ]; do
> >  		--kup|-k)
> >  			KUP=1
> >  			;;
> > +		--no-commit|-n)
> > +			COMMIT=0
> > +			;;
> >  		--help|-h)
> >  			help
> >  			exit 0
> > @@ -40,6 +60,36 @@ while [ $# -gt 0 ]; do
> >  	shift
> >  done
> >  
> > +if [ -z "$EDITOR" ]; then
> > +	EDITOR=$(command -v vi)
> > +fi
> 
> I wonder if it would be sensible to try nano as well?  Probably most
> systems have a vi of some kind, or a nano of some kind, but they
> probably don't lack both.

I added this only to make line below '$EDITOR ./VERSION' spit out
some more meaningful error. Probably this would be even better to
just change 'command -v vi' to 'vi'.

> 
> > +
> > +if [ $COMMIT -eq 1 ]; then
> > +	if git diff --exit-code ./VERSION > /dev/null; then
> > +		$EDITOR ./VERSION
> > +	fi
> > +fi
> 
> Er... what does this do?  If something has changed VERSION, then we pop
> it open in an editor before sourcing it?

ops, right, that's should be if edit if not modified.

*without --no-commit* Starting from clean repo -> open ./VERSION to
let maintaner update version -> update version in all other places
-> commit

> 
> Also, do you want to update debian/changelog at the same time?  Normally
> Debian maintainers use dch(1) to create the changelog entry, but it's
> basically this:
> 
> rm -f /tmp/whatever
> debdate="$(date '+%a, %d %b %Y %T %z')"
> cat > /tmp/whatever << ENDL
> xfsprogs ($version) unstable; urgency=low
> 
>   * New upstream release
> 
>  -- Nathan Scott <nathans@debian.org>  $debdate
> 
> ENDL
> cat debian/changelog >> /tmp/whatever
> cat /tmp/whatever > debian/changelog
> rm -f /tmp/whatever
> 
> (I can also send a patch atop your series to do that, if you'd rather I
> go mess with the debian stuff)

I do, above in update_version()

> 
> > +
> > +. ./VERSION
> > +
> > +version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION}
> > +date=`date +"%-d %B %Y"`
> > +
> > +if [ $COMMIT -eq 1 ]; then
> > +	update_version
> > +
> > +	git diff --color=always | less -r
> > +	[[ "$(read -e -p 'All good? [Y/n]> '; echo $REPLY)" == [Nn]* ]] && exit 0
> > +
> > +	echo "Commiting new version update to git"
> > +	git commit --all --signoff --message="xfsprogs: Release v${version}
> > +
> > +Update all the necessary files for a v${version} release."
> > +
> > +	echo "Tagging git repository"
> > +	git tag --annotate --sign --message="Release v${version}" v${version}
> > +fi
> > +
> >  echo "Cleaning up"
> >  make realclean
> >  rm -rf "xfsprogs-${version}.tar" \
> > @@ -47,17 +97,6 @@ rm -rf "xfsprogs-${version}.tar" \
> >  	"xfsprogs-${version}.tar.asc" \
> >  	"xfsprogs-${version}.tar.sign"
> >  
> > -echo "Updating CHANGES"
> > -sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/CHANGES.tmp && \
> > -	mv doc/CHANGES.tmp doc/CHANGES
> > -
> > -echo "Commiting CHANGES update to git"
> > -git commit --all --signoff --message="xfsprogs: Release v${version}
> > -
> > -Update all the necessary files for a v${version} release."
> > -
> > -echo "Tagging git repository"
> > -git tag --annotate --sign --message="Release v${version}" v${version}
> >  
> >  echo "Making source tarball"
> >  make dist
> > @@ -83,4 +122,7 @@ if [ $KUP -eq 1 ]; then
> >  		pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz
> >  fi;
> >  
> > -echo "Done. Please remember to push out tags using \"git push origin v${version}\""
> > +echo ""
> > +echo "Done. Please remember to push out tags and the branch."
> > +printf "\tgit push origin v${version}\n"
> > +printf "\tgit push origin master\n"
> 
> I think you can do that all in one push, e.g.
> 
> git push origin v6.13.0 master

Yup, seems to work, will change it
Darrick J. Wong Jan. 22, 2025, 1:45 a.m. UTC | #3
On Mon, Jan 20, 2025 at 12:53:05PM +0100, Andrey Albershteyn wrote:
> On 2025-01-16 14:33:18, Darrick J. Wong wrote:
> > On Fri, Jan 10, 2025 at 12:05:08PM +0100, Andrey Albershteyn wrote:
> > > Based on ./VERSION script updates all other files. For
> > > ./doc/changelog script asks maintainer to fill it manually as not
> > > all changes goes into changelog.
> > > 
> > > --no-commit|-n flag is handy when something got into the version commit
> > > and need to be changed manually. Then ./release.sh -c will use fixed
> > > history
> > > 
> > > Signed-off-by: Andrey Albershteyn <aalbersh@kernel.org>
> > > ---
> > >  release.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++++++--------------
> > >  1 file changed, 59 insertions(+), 17 deletions(-)
> > > 
> > > diff --git a/release.sh b/release.sh
> > > index a23adc47efa5163b4e0082050c266481e4051bfb..c34efcbcdfcaf50a08853e65542e8f16214cfb4e 100755
> > > --- a/release.sh
> > > +++ b/release.sh
> > > @@ -11,16 +11,33 @@
> > >  
> > >  set -e
> > >  
> > > -. ./VERSION
> > > -
> > > -version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION}
> > > -date=`date +"%-d %B %Y"`
> > > -
> > >  KUP=0
> > > +COMMIT=1
> > >  
> > >  help() {
> > >  	echo "$(basename) - create xfsprogs release"
> > >  	printf "\t[--kup|-k] upload final tarball with KUP\n"
> > > +	printf "\t[--no-commit|-n] don't create release commit\n"
> > > +}
> > > +
> > > +update_version() {
> > > +	echo "Updating version files"
> > > +	# doc/CHANGES
> > > +	header="xfsprogs-${version} ($(date +'%d %b %Y'))"
> > > +	sed -i "1s/^/$header\n\t<TODO list user affecting changes>\n\n/" doc/CHANGES
> > > +	$EDITOR doc/CHANGES
> > > +
> > > +	# ./configure.ac
> > > +	CONF_AC="AC_INIT([xfsprogs],[${version}],[linux-xfs@vger.kernel.org])"
> > > +	sed -i "s/^AC_INIT.*/$CONF_AC/" ./configure.ac
> > > +
> > > +	# ./debian/changelog
> > > +	sed -i "1s/^/\n/" ./debian/changelog
> > > +	sed -i "1s/^/ -- Nathan Scott <nathans@debian.org>  `date -R`\n/" ./debian/changelog
> > > +	sed -i "1s/^/\n/" ./debian/changelog
> > > +	sed -i "1s/^/  * New upstream release\n/" ./debian/changelog
> > > +	sed -i "1s/^/\n/" ./debian/changelog
> > > +	sed -i "1s/^/xfsprogs (${version}-1) unstable; urgency=low\n/" ./debian/changelog
> > >  }
> > >  
> > >  while [ $# -gt 0 ]; do
> > > @@ -28,6 +45,9 @@ while [ $# -gt 0 ]; do
> > >  		--kup|-k)
> > >  			KUP=1
> > >  			;;
> > > +		--no-commit|-n)
> > > +			COMMIT=0
> > > +			;;
> > >  		--help|-h)
> > >  			help
> > >  			exit 0
> > > @@ -40,6 +60,36 @@ while [ $# -gt 0 ]; do
> > >  	shift
> > >  done
> > >  
> > > +if [ -z "$EDITOR" ]; then
> > > +	EDITOR=$(command -v vi)
> > > +fi
> > 
> > I wonder if it would be sensible to try nano as well?  Probably most
> > systems have a vi of some kind, or a nano of some kind, but they
> > probably don't lack both.
> 
> I added this only to make line below '$EDITOR ./VERSION' spit out
> some more meaningful error. Probably this would be even better to
> just change 'command -v vi' to 'vi'.
> 
> > 
> > > +
> > > +if [ $COMMIT -eq 1 ]; then
> > > +	if git diff --exit-code ./VERSION > /dev/null; then
> > > +		$EDITOR ./VERSION
> > > +	fi
> > > +fi
> > 
> > Er... what does this do?  If something has changed VERSION, then we pop
> > it open in an editor before sourcing it?
> 
> ops, right, that's should be if edit if not modified.
> 
> *without --no-commit* Starting from clean repo -> open ./VERSION to
> let maintaner update version -> update version in all other places
> -> commit
> 
> > 
> > Also, do you want to update debian/changelog at the same time?  Normally
> > Debian maintainers use dch(1) to create the changelog entry, but it's
> > basically this:
> > 
> > rm -f /tmp/whatever
> > debdate="$(date '+%a, %d %b %Y %T %z')"
> > cat > /tmp/whatever << ENDL
> > xfsprogs ($version) unstable; urgency=low
> > 
> >   * New upstream release
> > 
> >  -- Nathan Scott <nathans@debian.org>  $debdate
> > 
> > ENDL
> > cat debian/changelog >> /tmp/whatever
> > cat /tmp/whatever > debian/changelog
> > rm -f /tmp/whatever
> > 
> > (I can also send a patch atop your series to do that, if you'd rather I
> > go mess with the debian stuff)
> 
> I do, above in update_version()

Oops, I didn't recognize that it was backwards changelog.

--D

> > 
> > > +
> > > +. ./VERSION
> > > +
> > > +version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION}
> > > +date=`date +"%-d %B %Y"`
> > > +
> > > +if [ $COMMIT -eq 1 ]; then
> > > +	update_version
> > > +
> > > +	git diff --color=always | less -r
> > > +	[[ "$(read -e -p 'All good? [Y/n]> '; echo $REPLY)" == [Nn]* ]] && exit 0
> > > +
> > > +	echo "Commiting new version update to git"
> > > +	git commit --all --signoff --message="xfsprogs: Release v${version}
> > > +
> > > +Update all the necessary files for a v${version} release."
> > > +
> > > +	echo "Tagging git repository"
> > > +	git tag --annotate --sign --message="Release v${version}" v${version}
> > > +fi
> > > +
> > >  echo "Cleaning up"
> > >  make realclean
> > >  rm -rf "xfsprogs-${version}.tar" \
> > > @@ -47,17 +97,6 @@ rm -rf "xfsprogs-${version}.tar" \
> > >  	"xfsprogs-${version}.tar.asc" \
> > >  	"xfsprogs-${version}.tar.sign"
> > >  
> > > -echo "Updating CHANGES"
> > > -sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/CHANGES.tmp && \
> > > -	mv doc/CHANGES.tmp doc/CHANGES
> > > -
> > > -echo "Commiting CHANGES update to git"
> > > -git commit --all --signoff --message="xfsprogs: Release v${version}
> > > -
> > > -Update all the necessary files for a v${version} release."
> > > -
> > > -echo "Tagging git repository"
> > > -git tag --annotate --sign --message="Release v${version}" v${version}
> > >  
> > >  echo "Making source tarball"
> > >  make dist
> > > @@ -83,4 +122,7 @@ if [ $KUP -eq 1 ]; then
> > >  		pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz
> > >  fi;
> > >  
> > > -echo "Done. Please remember to push out tags using \"git push origin v${version}\""
> > > +echo ""
> > > +echo "Done. Please remember to push out tags and the branch."
> > > +printf "\tgit push origin v${version}\n"
> > > +printf "\tgit push origin master\n"
> > 
> > I think you can do that all in one push, e.g.
> > 
> > git push origin v6.13.0 master
> 
> Yup, seems to work, will change it
> 
> -- 
> - Andrey
> 
>
diff mbox series

Patch

diff --git a/release.sh b/release.sh
index a23adc47efa5163b4e0082050c266481e4051bfb..c34efcbcdfcaf50a08853e65542e8f16214cfb4e 100755
--- a/release.sh
+++ b/release.sh
@@ -11,16 +11,33 @@ 
 
 set -e
 
-. ./VERSION
-
-version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION}
-date=`date +"%-d %B %Y"`
-
 KUP=0
+COMMIT=1
 
 help() {
 	echo "$(basename) - create xfsprogs release"
 	printf "\t[--kup|-k] upload final tarball with KUP\n"
+	printf "\t[--no-commit|-n] don't create release commit\n"
+}
+
+update_version() {
+	echo "Updating version files"
+	# doc/CHANGES
+	header="xfsprogs-${version} ($(date +'%d %b %Y'))"
+	sed -i "1s/^/$header\n\t<TODO list user affecting changes>\n\n/" doc/CHANGES
+	$EDITOR doc/CHANGES
+
+	# ./configure.ac
+	CONF_AC="AC_INIT([xfsprogs],[${version}],[linux-xfs@vger.kernel.org])"
+	sed -i "s/^AC_INIT.*/$CONF_AC/" ./configure.ac
+
+	# ./debian/changelog
+	sed -i "1s/^/\n/" ./debian/changelog
+	sed -i "1s/^/ -- Nathan Scott <nathans@debian.org>  `date -R`\n/" ./debian/changelog
+	sed -i "1s/^/\n/" ./debian/changelog
+	sed -i "1s/^/  * New upstream release\n/" ./debian/changelog
+	sed -i "1s/^/\n/" ./debian/changelog
+	sed -i "1s/^/xfsprogs (${version}-1) unstable; urgency=low\n/" ./debian/changelog
 }
 
 while [ $# -gt 0 ]; do
@@ -28,6 +45,9 @@  while [ $# -gt 0 ]; do
 		--kup|-k)
 			KUP=1
 			;;
+		--no-commit|-n)
+			COMMIT=0
+			;;
 		--help|-h)
 			help
 			exit 0
@@ -40,6 +60,36 @@  while [ $# -gt 0 ]; do
 	shift
 done
 
+if [ -z "$EDITOR" ]; then
+	EDITOR=$(command -v vi)
+fi
+
+if [ $COMMIT -eq 1 ]; then
+	if git diff --exit-code ./VERSION > /dev/null; then
+		$EDITOR ./VERSION
+	fi
+fi
+
+. ./VERSION
+
+version=${PKG_MAJOR}.${PKG_MINOR}.${PKG_REVISION}
+date=`date +"%-d %B %Y"`
+
+if [ $COMMIT -eq 1 ]; then
+	update_version
+
+	git diff --color=always | less -r
+	[[ "$(read -e -p 'All good? [Y/n]> '; echo $REPLY)" == [Nn]* ]] && exit 0
+
+	echo "Commiting new version update to git"
+	git commit --all --signoff --message="xfsprogs: Release v${version}
+
+Update all the necessary files for a v${version} release."
+
+	echo "Tagging git repository"
+	git tag --annotate --sign --message="Release v${version}" v${version}
+fi
+
 echo "Cleaning up"
 make realclean
 rm -rf "xfsprogs-${version}.tar" \
@@ -47,17 +97,6 @@  rm -rf "xfsprogs-${version}.tar" \
 	"xfsprogs-${version}.tar.asc" \
 	"xfsprogs-${version}.tar.sign"
 
-echo "Updating CHANGES"
-sed -e "s/${version}.*/${version} (${date})/" doc/CHANGES > doc/CHANGES.tmp && \
-	mv doc/CHANGES.tmp doc/CHANGES
-
-echo "Commiting CHANGES update to git"
-git commit --all --signoff --message="xfsprogs: Release v${version}
-
-Update all the necessary files for a v${version} release."
-
-echo "Tagging git repository"
-git tag --annotate --sign --message="Release v${version}" v${version}
 
 echo "Making source tarball"
 make dist
@@ -83,4 +122,7 @@  if [ $KUP -eq 1 ]; then
 		pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-${version}.tar.gz
 fi;
 
-echo "Done. Please remember to push out tags using \"git push origin v${version}\""
+echo ""
+echo "Done. Please remember to push out tags and the branch."
+printf "\tgit push origin v${version}\n"
+printf "\tgit push origin master\n"