vedderb / bldc

The VESC motor control firmware
2.1k stars 1.32k forks source link

Create git tags to mark versions #585

Closed jaykup26 closed 1 year ago

jaykup26 commented 1 year ago

Creating tags to mark versions in the code would help when comparing features, or troubleshooting bugs.

Git has a built in tagging feature that is independent from GitHub. This means that the feature would also work on other git platforms such as GitLab. The releases feature, on the other hand, seems to be GitHub specific and may or may not translate well to other platforms. This issue addresses tagging only. Other open issues that have brought up this topic include #31 and #208

I like the branch idea for separating releases. To further improve upon that, tagging would mark older versions, allow the use of the GitHub compare feature to see specific changes, and add dates to the version releases.

To figure out where in the code the releases were created, and on what date, I used

gitk --follow CHANGELOG Filtered by changes made to "=== FW"

gitk --follow conf_general.h Filtered by changes made to "FW_VERSION_MINOR"

That created a list which I converted to a bash script which can be run on a Linux machine. This script uses the GIT_COMMITER_DATE variable to set the tag date to the release date, including timezone so it can be run anywhere.

#!/bin/bash
# Set the date, then create the tag locally
export GIT_COMMITTER_DATE="2015-05-20 16:13:48 +0200"
git tag -a 1.02 87932662b76b2c163e2ac3148df1d429d61162ec -m "VESC Firmware Version 1.02"
export GIT_COMMITTER_DATE="2015-06-03 18:21:09 +0200"
git tag -a 1.03 43b362f92bc258e34c99f658ef520c6067fc58d8 -m "VESC Firmware Version 1.03"
export GIT_COMMITTER_DATE="2015-06-11 01:57:32 +0200"
git tag -a 1.04 b44e43edaad65d7e622a247589771607b158fc4e -m "VESC Firmware Version 1.04"
export GIT_COMMITTER_DATE="2015-06-19 23:38:46 +0200"
git tag -a 1.05 24380c3fc0c516f1f99770c02a889d806436b94b -m "VESC Firmware Version 1.05"
export GIT_COMMITTER_DATE="2015-06-26 21:45:28 +0200"
git tag -a 1.06 d07d65a5cabb653cb62954f85ad0cbe5309069dc -m "VESC Firmware Version 1.06"
export GIT_COMMITTER_DATE="2015-07-04 20:05:49 +0200"
git tag -a 1.07 ae41d14390eeffe62d8e96fcbd20fc75d0057cd4 -m "VESC Firmware Version 1.07"
export GIT_COMMITTER_DATE="2015-07-11 23:19:18 +0200"
git tag -a 1.08 23e40634d961baffd284dea16074ecbd41a8c30a -m "VESC Firmware Version 1.08"
export GIT_COMMITTER_DATE="2015-07-31 23:26:50 +0200"
git tag -a 1.09 f032111b9bda7e30cee9e011ec8cb416531296bb -m "VESC Firmware Version 1.09"
export GIT_COMMITTER_DATE="2015-08-03 23:43:34 +0200"
git tag -a 1.10 383208bdbd9b56cca18bf6016a2743d621b7ff01 -m "VESC Firmware Version 1.10"
export GIT_COMMITTER_DATE="2015-08-23 18:26:05 +0200"
git tag -a 1.11 58d892935df335d2911d8171fa043f3644627b1c -m "VESC Firmware Version 1.11"
export GIT_COMMITTER_DATE="2015-08-26 23:12:39 +0200"
git tag -a 1.12 c3e82f76518e821f0d826dbabc17b1829360d354 -m "VESC Firmware Version 1.12"
export GIT_COMMITTER_DATE="2015-09-17 23:24:55 +0200"
git tag -a 1.13 06129bb66c756b8071567072f1589858dc0eef5f -m "VESC Firmware Version 1.13"
export GIT_COMMITTER_DATE="2015-10-04 01:43:26 +0200"
git tag -a 1.14 984b8464019c73ff78e2982c264bd2be7bdc5931 -m "VESC Firmware Version 1.14"
export GIT_COMMITTER_DATE="2015-12-08 21:01:23 +0100"
git tag -a 2.03 ff090fd4e0028f6a8ceb28f5441c1d0cca40af7e -m "VESC Firmware Version 2.03"
export GIT_COMMITTER_DATE="2015-12-10 23:21:04 +0100"
git tag -a 2.04 59309d977207b9813e701a605114626c7e28c2a1 -m "VESC Firmware Version 2.04"
export GIT_COMMITTER_DATE="2015-12-19 21:24:46 +0100"
git tag -a 2.05 2377a45bcbb8570a1a9810b8ec25a38029d964a3 -m "VESC Firmware Version 2.05"
export GIT_COMMITTER_DATE="2015-12-24 00:43:31 +0100"
git tag -a 2.06 d995cf674979991002c0dc13a44779a814ff8b0f -m "VESC Firmware Version 2.06"
export GIT_COMMITTER_DATE="2015-12-28 01:50:23 +0100"
git tag -a 2.07 42c1b79a08ddad618cac39bbe66fc4823bd3e90f -m "VESC Firmware Version 2.07"
export GIT_COMMITTER_DATE="2015-12-29 02:37:09 +0100"
git tag -a 2.08 cc171422641a50c56452280575f2074f8a88aa45 -m "VESC Firmware Version 2.08"
export GIT_COMMITTER_DATE="2016-01-24 13:44:51 +0100"
git tag -a 2.09 90986c31defe50830b4795a388ee5b2687dc2516 -m "VESC Firmware Version 2.09"
export GIT_COMMITTER_DATE="2016-01-27 23:57:23 +0100"
git tag -a 2.10 e6ea308a48b244a53970c5a651243c0557658967 -m "VESC Firmware Version 2.10"
export GIT_COMMITTER_DATE="2016-01-30 15:57:51 +0100"
git tag -a 2.11 02f140e335873104dff13b362e139715e49fd262 -m "VESC Firmware Version 2.11"
export GIT_COMMITTER_DATE="2016-02-02 17:19:37 +0100"
git tag -a 2.13 6d33ac83b6f16b7109dea6f9d924557f89c056a7 -m "VESC Firmware Version 2.13"
export GIT_COMMITTER_DATE="2016-02-09 12:25:13 +0100"
git tag -a 2.15 d52906fbe8a3b61851f30a66a3860a6d3accb280 -m "VESC Firmware Version 2.15"
export GIT_COMMITTER_DATE="2016-02-24 21:19:44 +0100"
git tag -a 2.16 08a27cfbbd309d852a8a451b5e20839d8f248c3d -m "VESC Firmware Version 2.16"
export GIT_COMMITTER_DATE="2016-04-27 15:32:32 +0200"
git tag -a 2.17 cb2a205cb8f99f9dd5a75d7a1606394b6c2cf58f -m "VESC Firmware Version 2.17"
export GIT_COMMITTER_DATE="2016-05-19 19:24:01 +0200"
git tag -a 2.18 ed61c4d332009aa2f284321380a49d6b170548d9 -m "VESC Firmware Version 2.18"
export GIT_COMMITTER_DATE="2016-06-27 17:29:09 +0200"
git tag -a 3.00 d2f6d8756033017b9595edba44dd75abd6d0b736 -m "VESC Firmware Version 3.00"
export GIT_COMMITTER_DATE="2016-11-04 15:18:34 +0100"
git tag -a 3.07 5dbc94c5251298f3b9b4db3c7a8d27f60e29918d -m "VESC Firmware Version 3.07"
export GIT_COMMITTER_DATE="2016-11-06 18:14:06 +0100"
git tag -a 3.09 bb2bfa3b9cc39162d08876d80476f53eda4108d0 -m "VESC Firmware Version 3.09"
export GIT_COMMITTER_DATE="2016-11-06 20:28:07 +0100"
git tag -a 3.10 0b59fb1445a573b3415493c9af9414cd36295cf5 -m "VESC Firmware Version 3.10"
export GIT_COMMITTER_DATE="2017-09-04 21:12:43 +0200"
git tag -a 3.27 f14115735812938ccd6142bbdcb7e1799c83d69a -m "VESC Firmware Version 3.27"
export GIT_COMMITTER_DATE="2017-09-06 21:13:28 +0200"
git tag -a 3.28 79bfbe62344a29817c5e3ea982a2c27d34c6c881 -m "VESC Firmware Version 3.28"
export GIT_COMMITTER_DATE="2017-09-21 21:12:09 +0200"
git tag -a 3.29 d073622fff41690c16a2e2f6e8f795f95f228cdd -m "VESC Firmware Version 3.29"
export GIT_COMMITTER_DATE="2017-10-20 20:07:17 +0200"
git tag -a 3.30 cf2502c2684850aa6e0ebd12ae354b9cc92748b7 -m "VESC Firmware Version 3.30"
export GIT_COMMITTER_DATE="2017-10-27 21:29:12 +0200"
git tag -a 3.31 6277cf74ca7bce4a01cd547abdcb510b474d4ad2 -m "VESC Firmware Version 3.31"
export GIT_COMMITTER_DATE="2017-11-08 14:07:35 +0100"
git tag -a 3.32 5348662197c69a00b7bdea42423674e339db3976 -m "VESC Firmware Version 3.32"
export GIT_COMMITTER_DATE="2017-11-08 22:04:56 +0100"
git tag -a 3.33 47c0826c5eaf9d020097a969241ef2d8d6a77f88 -m "VESC Firmware Version 3.33"
export GIT_COMMITTER_DATE="2018-01-24 09:39:06 +0100"
git tag -a 3.34 5a189290bcd86c1b113d8f0dd9111c253290078c -m "VESC Firmware Version 3.34"
export GIT_COMMITTER_DATE="2018-02-17 17:59:21 +0100"
git tag -a 3.35 29c771d7c57966cdbcc7d462c9ce9e7e774ae9c6 -m "VESC Firmware Version 3.35"
export GIT_COMMITTER_DATE="2018-03-24 22:32:58 +0100"
git tag -a 3.37 22dc2ce33c64593beb1e01a3b062d8c1df73beec -m "VESC Firmware Version 3.37"
export GIT_COMMITTER_DATE="2018-04-22 12:13:08 +0200"
git tag -a 3.38 beea1c86045e4ae50949ab0626b557fb2a74ef83 -m "VESC Firmware Version 3.38"
export GIT_COMMITTER_DATE="2018-07-06 21:20:54 +0200"
git tag -a 3.39 a20c35b33863b85bc5a11b80d30e4df3d8066cc3 -m "VESC Firmware Version 3.39"
export GIT_COMMITTER_DATE="2018-07-23 15:43:58 +0200"
git tag -a 3.40 43c3bbaf91f5052a35b75c2ff17b5fe99fad94d1 -m "VESC Firmware Version 3.40"
export GIT_COMMITTER_DATE="2019-02-18 19:30:19 +0100"
git tag -a 3.48 123bb00ab4d8aa2fef8bc9e3c0edb283a1c552ad -m "VESC Firmware Version 3.48"
export GIT_COMMITTER_DATE="2019-03-01 17:18:07 +0100"
git tag -a 3.49 f9ce429447fbe6e4cc0e036118f1e26a16ad3d3b -m "VESC Firmware Version 3.49"
export GIT_COMMITTER_DATE="2019-03-01 21:36:58 +0100"
git tag -a 3.50 01e72eb55575776419fb40335619f8d1ba666ce6 -m "VESC Firmware Version 3.50"
export GIT_COMMITTER_DATE="2019-03-04 19:23:38 +0100"
git tag -a 3.51 35c1c72ab45a72437d1d371ffedd1f43f69c4c03 -m "VESC Firmware Version 3.51"
export GIT_COMMITTER_DATE="2019-03-10 14:57:42 +0100"
git tag -a 3.52 65298263b6ff09791b014d36d787632e90f73ed7 -m "VESC Firmware Version 3.52"
export GIT_COMMITTER_DATE="2019-03-20 22:46:36 +0100"
git tag -a 3.53 39bb8a6b09d3fbb3a1d6e7b08649438d4f338bcd -m "VESC Firmware Version 3.53"
export GIT_COMMITTER_DATE="2019-03-31 10:49:18 +0200"
git tag -a 3.54 1161f8417c124953895fe703ae4d3d4da5308148 -m "VESC Firmware Version 3.54"
export GIT_COMMITTER_DATE="2019-04-14 07:44:55 +0200"
git tag -a 3.55 e09bc7ce22498cd0b139147c58b95bc12d856e55 -m "VESC Firmware Version 3.55"
export GIT_COMMITTER_DATE="2019-05-03 19:55:36 +0200"
git tag -a 3.56 404bbcf64b33f8e6655d7ee67e034bde82524705 -m "VESC Firmware Version 3.56"
export GIT_COMMITTER_DATE="2019-05-16 23:30:40 +0200"
git tag -a 3.57 a141e750bb667cd828e9fd5e5b185724f22fae0b -m "VESC Firmware Version 3.57"
export GIT_COMMITTER_DATE="2019-07-01 17:17:49 +0200"
git tag -a 3.58 30aabb77d74d792f5c2ef120cad6f989f4d3148c -m "VESC Firmware Version 3.58"
export GIT_COMMITTER_DATE="2019-09-03 20:39:05 +0200"
git tag -a 3.59 602db7435be1808911cc67176529eb5c6901ccba -m "VESC Firmware Version 3.59"
export GIT_COMMITTER_DATE="2019-09-08 18:25:38 +0200"
git tag -a 3.60 a233367be812e6babebcad87071b587214f19aeb -m "VESC Firmware Version 3.60"
export GIT_COMMITTER_DATE="2019-09-09 19:34:26 +0200"
git tag -a 3.61 eb6f5945ce1b052276afd0070cfcd94dd1c8bda8 -m "VESC Firmware Version 3.61"
export GIT_COMMITTER_DATE="2019-09-17 19:39:11 +0200"
git tag -a 3.62 db6ba047d9c430125ab4ef791e432ceab28ab3c3 -m "VESC Firmware Version 3.62"
export GIT_COMMITTER_DATE="2019-12-05 19:50:17 +0100"
git tag -a 3.63 23e61925b6555296575ea75389a17e44efffc7fa -m "VESC Firmware Version 3.63"
export GIT_COMMITTER_DATE="2019-12-19 17:06:52 +0100"
git tag -a 3.64 5e4f6759361543f8e227aa50d4b9a7f8d7ea46f3 -m "VESC Firmware Version 3.64"
export GIT_COMMITTER_DATE="2019-12-22 21:22:07 +0100"
git tag -a 3.65 210ec40d746236264fc9ec6bd95384d171488331 -m "VESC Firmware Version 3.65"
export GIT_COMMITTER_DATE="2020-01-12 21:25:21 +0100"
git tag -a 3.66 b002e5d78ef03a5a02bc9582863f3fbf57059f1d -m "VESC Firmware Version 3.66"
export GIT_COMMITTER_DATE="2020-01-20 09:39:33 +0100"
git tag -a 3.67 ffbc6eb89b951c0d3df735045ffa2dd15039c8b9 -m "VESC Firmware Version 3.67"
export GIT_COMMITTER_DATE="2020-01-28 19:46:19 +0100"
git tag -a 4.00 b6949d60dcca4dc8757ebd035889b8d214e66636 -m "VESC Firmware Version 4.00"
export GIT_COMMITTER_DATE="2020-02-01 00:37:25 +0100"
git tag -a 4.01 97ef43cff8ab7f92a9767b40e6985dca4de72527 -m "VESC Firmware Version 4.01"
export GIT_COMMITTER_DATE="2020-02-27 17:49:35 +0100"
git tag -a 4.02 5df92463f3830ccc23595604c968c02ccdadabda -m "VESC Firmware Version 4.02"
export GIT_COMMITTER_DATE="2020-04-27 14:23:49 +0200"
git tag -a 5.00 80fffdea7340f3b7d4faea63f24339c2212ab62f -m "VESC Firmware Version 5.00"
export GIT_COMMITTER_DATE="2020-04-27 14:23:49 +0200"
git tag -a 5.01 80fffdea7340f3b7d4faea63f24339c2212ab62f -m "VESC Firmware Version 5.01"
export GIT_COMMITTER_DATE="2021-01-11 12:19:10 +0100"
git tag -a 5.02 3f670137e27e6e383fa79c50cc6b1fa85aab1554 -m "VESC Firmware Version 5.02"
export GIT_COMMITTER_DATE="2022-01-16 17:19:03 +0100"
git tag -a 5.03 92efab4896850ae18d26c56dbe39a683a5083d99 -m "VESC Firmware Version 5.03"
export GIT_COMMITTER_DATE="2022-12-08 14:01:44 +0100"
git tag -a 6.00 4b822f0f944918957c55391ca0672925153f3fde -m "VESC Firmware Version 6.00"

# Push changes
git push --tags

# Clear date variable
unset GIT_COMMITTER_DATE

# These tags can be deleted at any time by running these two commands

# Delete from remote
#git push origin --delete $(git tag -l)

# Delete locally
#git tag -l | xargs git tag -d

To create new tags for future releases, simply run these two commands on the master branch:

git tag -a [version] [commit] -m "VESC Firmware Version [version]"
git push --tags

To see an example of how this looks on GitHub, check out this repository:

https://github.com/jaykup26/bldc/tags

vedderb commented 1 year ago

Nice, thanks! The tags are now added and the readme is updated with instructions for future releases.