Release Control in IDE 2.x.x

Good Day;
Thank you for such an amazing IDE. I have a question, and hopeful consideration for some sort of release control. Probably dreaded words in this topic.

When you have completed a project there are sometimes many .c, .h, and .cpp files as include files. for example I used the ESP32 and various drivers for displays, SI5351, Port expanders, Font files, etc. Sometimes when you work on code the author has used an .h file from a few years ago, that's fine. BUT, if you use the latest include files, the software does not compile. So you are hunting
around for the Dated .h file for example.

Once a program is finished I want to be able to lock it down (hence release control at a project level). When I open a program a few years later a newer IDE will pull in the newer include files and the program will fail. If I could pull the original release of the .ino and then the original include files this would be great.

Can this be accomplished ? If not is there another IDE that incorporates release control for a project.

Thank You very much.

Not within the IDE. You can create a backup once your project is finished.

To include:

  • Your sketch
  • Current libraries
  • Board package

You can also include a text file with the verbose compiler output; it will give you the information about what was used (board package version as well as library versions.

For my own projects I still use portable installations of IDE 1.8.19; one installation per project. A portable installation contains everything needed as mentioned above plus the IDE. Once a project is finished I create a backup of the complete portable installation.

Hi @Gabester.

Arduino IDE doesn't have any capability for doing this automatically. When it comes to the library dependencies of the sketch, you can manually copy the libraries into the sketch folder, so that the specific versions of the libraries that you have verified working are bundled with the sketch. We would typically copy the libraries to the src subfolder of the sketch:

https://arduino.github.io/arduino-cli/latest/sketch-specification/#src-subfolder

If you took this approach, you would need to adjust the #include directives in the code to point to the relative path of the header files bundled with the sketch so that the globally installed libraries won't be used instead. If this is something you are interested in, we would be happy to provide more detailed instructions for doing it.


You can do exactly what you are hoping for by using the command line tool Arduino created for developing Arduino projects, which named Arduino CLI:

https://arduino.github.io/arduino-cli/latest/

Arduino CLI allows you to define all the dependencies of a sketch (libraries and boards platforms) in a "sketch project file":

https://arduino.github.io/arduino-cli/latest/sketch-project-file/#build-profiles

Unfortunately Arduino IDE does not have support for use with the sketch project file. The developers are tracking the request for adding such support here:

If you have a GitHub account, you can subscribe to that thread to get notifications of any new developments related to this subject:


:red_exclamation_mark: Please only comment on the GitHub issue thread if you have new technical information that will assist with the resolution. General discussion and support requests are always welcome here on the Arduino Forum.