Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added gitignore-file for Beckhoff TwinCAT3. #3092

wants to merge 4 commits into
base: master


Copy link

sagatowski commented Jun 22, 2019

Provide a link to the application or project’s homepage:
TwinCAT3 is a realtime kernel and development environment for PLCs (programmable logic controller). The IDE is based on Visual Studio, which TwinCAT is integrated into. It's one of the more popular development environments for industrial automation.

Provide links to documentation:
The official one:
This only covers part of the files (specifying that TMC and TPY-files are not necessary to version control). Unfortunately, even Beckhoff (the manufacturer of TwinCAT) have failed to properly document which files should be version controlled and not.

Regarding the other files included in the gitignore-file of the pull request:

  • *.tclrs - These are license response files, basically license files that are residing on the target PLC device
  • *.compiled-library and *.library - which are libraries of which the project depends on. These are put here when they are referenced in the project, but the actual libraries needed for development are installed in "C:\TwinCAT\3.1\Components\Plc\Managed Libraries", which need to be installed there prior of compilation. The ones residing in the project must not be version controlled.
  • *.compileinfo - Self explaining, file created everytime a compilation is made. Beckhoff documentation says: "The compile information was created during the last download of the PLC project and stored in a file".
  • _Boot/ - Folder generated when project is compiled with all the binaries. This is what is transferred to the actual target device (PLC) for execution.
  • _CompileInfo/ - Self explaining. Folder created during compilation. Holding the *.compileinfo-files.
  • _Libraries/ - Folder holding the *.compiled-library and *.library in the local development folder.

There are various github repos for TwinCAT that use this list for gitignore, one being TcUnit, a unit testing framework for TwinCAT3:

Note that because TwinCAT is using visual studio as development environment (it integrates itself into VS during installation), all visual studio files that are normally ignored shall be ignored as well (therefore the comment # Recommended: VisualStudio.gitignore).

Update 2019-12-05: I've published a blog post that goes through these files and the reason for having a gitignore-file for TwinCAT3 in a much greater detail now which is accessible here:

Explain why you’re making a change:
Unfortunately version control by modern VCS is yet quite uncommon in industrial automation, and therefore proper practices and documentation around it have not yet been fully defined. It's quite common within the world of automation to do version control by simply taking a complete project folder and copying it to a new folder, adding the new date and calling that version control. Now that more and more automation engineers are starting to do version control more properly, and also starting to use GIT, it makes sense to create this file.

If this is a new template:
Link to application or projects homepage:
This would be TcUnit, which is a popular unit testing framework for TwinCAT3:

…is a gitignore file only applicable for TwinCAT3 and not also TwinCAT2 (which stores everything in a big binary blob).
@sagatowski sagatowski changed the title Added gitignore-file for Beckhoff TwinCAT. Added gitignore-file for Beckhoff TwinCAT3. Jul 13, 2019

This comment has been minimized.

Copy link

sagatowski commented Aug 21, 2019

@shiftkey - it's been two months since the creation of this PR and I just wanted to double-check if there is something expected from me that I need to do for this to progress? I tried to document the reason for this addition as well as I could, but maybe there is still some information missing that you expect?

- tmcRefac
- project.~u
- tsproj.bak
- xti.bak (TwinCAT export files backup)

This comment has been minimized.

Copy link

sagatowski commented Nov 17, 2019

@shiftkey , just doing a ping on this one as it's now been 5 months since the creation of this ticket... :-P

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
2 participants
You can’t perform that action at this time.