I’m having a bit of an issue with my project rapidly growing in size. The project started off at around 2GB which was absolutely fine. It grew a bit more due to adding content, however it’s now on 7.33GB (there is no way I added that much content, my content folder is 693MB ). It’s pretty much eating up space on my SVN account and I don’t wish to spend any more on storage space at the moment!
I deleted some autosaves, backups and logs to free up space which seemed to help a little, however my project is still large overly large for what it is as a standalone game (the standalone is just over 1GB).
Binaries and saved are over 1 GB and intermediate is at almost 4GB!
Is this normal? Are there any other ways to reduce project sizes safely? What files or directory contents are safe to delete from a project?
It is easier to list files you must not delete Everything outside these folders is generated, and as long as you don’t deliberately put your files outside, you shall be fine after deleting everything except these. I have set up svn:ignore so that only these folders end up in the repository, and so far the checkout has gone well on two fresh machines.
- / (project files etc reside in the root)
There are two things to mention, though. If you accidentally delete Intermediate folder, you can always generate new project files. In fact, I do not have ProjectFiles in the repo at all, because VS Solution paths are specific to the machine, and I am totally fine with generating my own project files. The only thing I commit from it is the filter (.vcxproj.filters), which contains the project structure. I need this because added source files do not just pop up in Visual Studio, they need to be referenced in the filter. You might want to exclude machine-specific Editor settings folders, like Saved/Config/WindowsNoEditor, just for clarity. Take a look at my ignore list. Hope that helps.
For root directory:
Always keep in mind that ignored files will get deleted on the server upon commit. However, you can use ignore-on-commit or svn:global-ignore (really misleading name) to keep the files in the working copy but disable synchronization. The size of your repo cannot be easily reduced, however, as it stores all revisions as a whole. Your only option to remove these fles from existing repository is svndumpfilter. You can read about this process here, for example.
Are you using Tortoise SVN as your client? I’m not sure where to access the ignore list, however I know how to add things to it. Also do i need to make this recursive or do I just select the appropriate folder and ignore it without any recursion?
I’m also struggling to right click on folders in the Saved folder to try and add them to the ignore list.
Yes, I am using Tortoise. You can ignore a file (or folder) by right-clicking on the versioned file and selecting Unversion and ignore. (recursive means it will ignore all files with this name, you generally do not want that.) Keep in mind that ignored files will be deleted on next commit from the ropo and even on OTHER machines if the ignore doesn’t make its way to svn:ignores - so always check your ignore list as described below. (Although you can always roll back or exclude deleted files if you did this by accident).
As a sidenote, you can just “unversion” a file without deleting it from anywhere with ignore-on-commit changelist. I use this for things like my history and layout settings. Tortoise will automatically unselect these files from commit. Pop up the commit dialog, select only the files you want to stop versioning, right-click on them and select Add to changelist/ignore-on-commit from the very bottom of the context menu.
A little catch with svn:ignore is that it is a folder property, so you cannot easily access all ignores at once. Tortoise is great in that it does not apply icon glyphs to ignored items, so you can see them right away.
To view ignores for a folder, right-click on it, and select TortoiseSVN/Properties. I advise you to move everything from global-ignores until you have a read on that property.
Thank you fed0r for your help and advice. I’ve set my ignores up and everything seems to be a lot more manageable to send and receive from SVN without paying for extra storage!
Just to confirm, its safe to delete Intermediate, DerivedDataCache and Config folders when archiving?