Should I keep binary assets under TFS? How?

Our product is a gaming product and it is very rich (~ 40M - 100M) in binary support files - textures, grids, films, etc. Like kai1968 , I would like to synchronize these assets, not just the code, with one click.

Actually, this is different from version control: I have no desire to burden our TFS with an irrelevant history of these files. Can I somehow upload files without saving history in TFS? It would be even better if I could save the story at certain points (for example, on labels), and not in each control.

More generally, how do you manage binary asset synchronization?

(I know other tools , perhaps better suited for such tasks, but the divergence - or migration in general - from TFS is not an option now).

+7
version-control tfs
source share
2 answers

We always saved binary assets in TFS when we needed it, and just looked at the side effects of this choice (additional storage, longer checks, because you cannot distinguish between binary files, etc.). I do not think that there is a way to selectively destroy the history of certain files, except manually. If you want to do this periodically, manually, you can do the following:

  • Get current copy of binary files
  • Destroy (delete via history) binary copies in TFS
  • Manually add files back to TFS

You will only have the latest copy, but this has a side effect - you would break any previous builds, as trying to restore the original history will not return these new copies of the files. TFS will check the copy that matches the scan you are trying, and without detecting it, it will not receive a copy of these files. You will need to update the build scripts to pull out the latest binaries, as well as the historical code, if you want to create an old version, but even then it will not be true history.

The second option is to periodically check them - not with every minor change. For example, keep these files somewhere safe (file share with daily backups), and then check only the modified binary files every week or so, or before each shortcut or something else - this way you do not have incremental stories, but you still have the history of your labels. You might even think about writing some kind of automated procedure for applying labels, where first you will check for any changes in this folder, and then apply the label.

Please write back what you end up doing - I'm curious to find out!

+5
source share

Here are a few thoughts:

  • Consider using a separate VSTS project, so you do not mix binary files and code in one project. This simplifies management (for example, you can store assets separately, as well as any work items related to them are more easily requested by filtering by project). At the bottom, this would mean 2 clicks to get the latest versions.

  • Why don't you want to keep stories? The source control point is to save the story so that you can return to a specific assembly for a specific day. Otherwise, you can simply use the backup program on a network drive (and you really do not want to do this!)

  • If you are concerned only with disk space, do not do this. 100 MB is tiny, and hard drives are cheap. My last game project had hundreds of gigabytes of assets, and we kept a history of each change for more than 3 years.

  • Assets will not slow down anything. They take time only for processing if you check them or get what actions you need, even if you do not use source control. In fact, source control makes things faster because you have a one-click solution.

  • Many of the other benefits of version control are really useful for assets and far outweigh the negatives.

+4
source share

All Articles