Intro to source management in Unreal Engine

We recently started experimenting with using Subversion for our Unreal Engine projects, but I find myself being a little confused about some of the basics. Just to be clear, I’m not confused about Subversion or Unreal Engine, it’s the intersection between the two that’s causing me some head-scratching.

Without actually having studied up on it, I just installed Subversion, created a repo, created and Unreal Engine project, then activated the Subversion in the project. But I was surprised that it only wanted to check in a few .ini files at first. After clicking around in the project (without actually editing anything) it seemed to want to add more things.

My assumption was that Unreal Engine would, as soon as the source management system had been activated, add all the project files it knew belonged in the SCM to the SCM. I now believe this to be incorrect; the user needs to manually add all files. So this is my first question: Am I right in that during the initial setup (the very first checkin), all files must be manually added by the users?

I later decided to watch a few videos on youtube about using SCM’s with Unreal Engine (yeah, should probably have started in that end) and I noticed in a webinar the used the SVN desktop integration to simply add the entire project folder. Wouldn’t this add a bunch of temporary/local files as well?

The git integration appears to create a .gitignore, but the subversion integration does nothing similar (well, obviously not, since subversion uses propsets…). However, I’m wondering if Unreal Engine is supposed to ignore things automatically when using the Subversion support, or should I manually add the propsets to the repo? And is there any way to know exactly what should be ignored? (I guess I could always just create a dummy project and pair it to git and extract its .gitignore…).

Should be some kind of ignore list & file type setup somewhere.
Else you could quickly end up submitting debug files only programmers need or end up with 50 versions of a large map when a few would be fine.

I hope this helps

Unfortunately it kind of adds to the confusion. :slight_smile:

I’ll explain: If you check step 3 under the section Adding files to Subversion, the screenshot shows that Binaries/ is being added – and not only that, .dll and .pdb files are being checked in as well. Now granted, perhaps the idea here is that the user should understand that these should be unchecked before pressing OK, but the bigger question is “Shouldn’t all those directories have been explicitly ignored by some means?”.

I kind of understand why Epic doesn’t want to go through the hassle of doing all this for the user with Subversion, because working with proplists in Subversion is painful.

I’ve written some scripts for creating Unreal repositories in Subversion which creates an ignore prop for the root directories, as well as a recursive/global ignore prop for the wildcard ignores – all modelled after the .gitignore file Unreal Engine creates. My plan is to release this so others can look at it and improve it as needed. I have a feeling that even the .gitignore file is just a template, and there are more files that can be safely ignored.

It would be nice if Epic could provide a more detailed guide with regards to the exact files/directories to add/ignore so we could lean on official documentation.

Yeah, that’s sort of the problem. Even following the basic rules in .gitignore leaves a bunch of files called _BuildData checked in. My gut feeling is that these should not be checked in, but it would be nice to have some official documentation on this. At the same time, I’m sure there are cases where target files can be checked in because they may save time for all other users (they don’t have to regenerate targets that would anyway end up being identical on every developer’s system anyway).

BuildData files contain lighting and other information for the map.
Their size will vary based on the size of the map and type of lighting etc.

With baked lighting, they can easily get into the hundreds of megabytes each.
With dynamic lighting, they are a lot more manageable.

If it helps any, here are the files we ignore with our Perforce based source control setup, minus some game specific files.


# Directories
Saved/
Intermediate/
DerivedDataCache/
obj/
.vs/
FileOpenOrder/

# Files with extentions.
*.pdb
*.vcxproj
*.sln
*-Debug.*

Perforce has a thing called a type map for telling the software what files are what, how many versions to keep and if they are editable etc.
Can’t recall SVN version of the same thing, but seeing the Perforce list may help later: