diff --git a/.gitignore b/.gitignore
index 33ecb63593c..7b8050a6563 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,3 +27,5 @@ util/gh-pages/lints.json
 
 # rustfmt backups
 *.rs.bk
+
+helper.txt
diff --git a/pre_publish.sh b/pre_publish.sh
index 960722c8c2a..656ed6eff89 100755
--- a/pre_publish.sh
+++ b/pre_publish.sh
@@ -2,8 +2,22 @@
 
 set -e
 
-cd clippy_lints && cargo fmt && cd ..
-cargo fmt
-cargo test
 ./util/update_lints.py
 
+git status --short | sort | grep -v README.md | grep -v helper.txt > helper.txt
+
+# abort if the files differ
+diff "publish.files" "helper.txt"
+
+rm helper.txt
+
+# add all changed files
+git add .
+git commit -m "version bump"
+
+set +e
+
+cd clippy_lints && cargo fmt -- --write-mode=overwrite && cd ..
+cargo fmt -- --write-mode=overwrite
+
+echo "remember to add a git tag and running 'cargo test' before committing the rustfmt changes"
diff --git a/publish.files b/publish.files
new file mode 100644
index 00000000000..9ee50447f99
--- /dev/null
+++ b/publish.files
@@ -0,0 +1,3 @@
+ M Cargo.toml
+ M CHANGELOG.md
+ M clippy_lints/Cargo.toml