Version Control
Version Control Systems or VCS (Git, SVN, Perforce, Mercurial, Bazaar, CVS, TFS, etc.) are used to manage changes to code and data, and enable teams to coordinate their development efforts. To make tracking of changes efficient and reduce the amount of disk space required, you should know which files must be tracked by the VCS and which can be ignored.
Ignore List#
In any project there are files and folders that are not subject to version control. These can be files created by the compiler, *.obj, *.tlog, or an output folder used to store binary executables.
The following files and folders in you project's root can be ignored, as they are generated automatically on your disk:
Common ignore list for every API and IDE#
- .thumbnails
- bin
Add this folder to version control before updating the engine’s version or reconfiguring the project in SDK Browser to provide the updated bin to all developers.
- data/.thumbnails
- data/microprofile_dump_html
- junk
- obj
- source/x64
- CMakeCache.txt
- source/**/*.obj
- unigine_editor.cfg
- *.cache
- *.modified
- *.tlog
.thumbnails
bin
data/.thumbnails
data/microprofile_dump_html
junk
obj
source/x64
CMakeCache.txt
source/**/*.obj
unigine_editor.cfg
*.cache
*.modified
*.tlog
Additional ignore list for C++ (CMake) projects#
Add these entries to the common .gitignore specified above when developing projects based on C++ (CMake).
- build-*
- CMakeFiles
- CMakeScripts
- CMakeCache.txt
- cmake_install.cmake
- CMakeUserPresets.json
- compile_commands.json
- CTestTestfile.cmake
build-*
CMakeFiles
CMakeScripts
CMakeCache.txt
cmake_install.cmake
CMakeUserPresets.json
compile_commands.json
CTestTestfile.cmake
Additional ignore list for C++ (Visual Studio 2015+) projects#
Add these entries to the common .gitignore specified above when developing projects based on C++ (Visual Studio 2015+).
- .vs
- *.vcxproj.user
- *.VC.db
- *.opendb
- *.opensdf
- *.pro.user
- *.sdf
- *.suo
.vs
*.vcxproj.user
*.VC.db
*.opendb
*.opensdf
*.pro.user
*.sdf
*.suo
Files and Folders to Add to Version Control#
The following files and folders should be subject to version control:
data folder with all its contents
If you do not want to share the editor and application settings with other team members, add the following configuration files to .gitignore:
- data/configs/unigine.user
- data/configs/default.user
- data/.editor2/*
This folder also contains runtime files (data/.runtimes) that should be committed. However, if you occasionally fail to commit runtimes, the runtimes validation process will run when UNIGINE Editor is started, and the missing/outdated runtimes are added/updated. The runtime validation is also performed on adding a new mount.
-
source folder contents except for the elements mentioned above
This folder is created only for projects that use C++ or C# API. -
*.cache files containing compiled shader cache
When team members develop a project using different GPUs or/and driver’s version for their machine configuration, it is better to add the shader cache files to .gitignore since these file will be recompiled by an end developer’s computer. - *.project file (and *.csproj for C# projects)
Other Notices#
This chapter contains recommendations based on the user experience.
Perforce#
- Set the Allwrite attribute in Perforce Workspace (the Advanced tab). It's disabled by default, which may cause issues with SDK Browser and *.project file.
- Checking out and locking a file does not prevent other users from modifying it, since that's only a Perforce abstraction.