I am new to Git, but I have been reading up and testing a lot of things with it in an effort to nail down a good work flow for my team. We used to use SVN but are trying to make the switch over to git. I did have some questions that my Google-Fu couldn’t answer though. Not all are about git, but proper version control practices in general.
-
What do you do about art assets? I know git doesn’t really handle binary files well, and it git can be a bit overwhelming for artists. There were three options I had thought of, assuming a standard git flow:
-
Having the artists make a feature branch for creating the asset, and then merging that back into the development branch. Then another feature branch is created by whomever will be implementing it into the game. This gives you a nice clear view of the history of your project, as well as keeping everything in the same repository. Of course that will mean you are storing all your art assets and those art asset’s project files in your git repository.
-
Have the artists use SVN, which both fits the more linear nature of their files as well as being easier to use. Then when the art asset is done it is implemented in a feature branch of the git repo. The downside obviously being that now your art assets are being stored entirely separately from everything else, as well as making the project history a bit harder to track.
-
Sub-modules in git for the artists. I haven’t actually done too much research on this one yet, but I figured I would list it as an option.
-
What do you do about documentation, do you store that on the same git repo as the project itself? When we used SVN we had 3 folders in the root directory: Art, Development, and Documentation. I’m not sure if that is proper practice though, and we did find our SVN to be a bit of a mammoth to deal with. I am sure that would have only been made worse had we been using git.
-
What about builds? Assuming the standard Git Flow, the master branch should contain released production files. In my head that would mean just the build itself, but that doesn’t seem to be the case. So how do you manage different builds? Do you even have a history of them, or do you just build them from the Unity Project as needed? I often see the advantage of having the master folder be that you could easily use that as a place to push updates to and have them go out live, so essentially anything you push their goes live right away. I am not sure how that applies to Unity projects.
-
I also assume that we can’t use something like GitLab’s “Builds” feature? I assume that is why Unity Cloud Build was made, but hey I could be wrong.
-
What do you do with miscellaneous material? Banners, posters, trailers, anything you have made related to your project. I assume you would want all of them to be backed up and versioned as well. We used to have a folder in our SVN for this, but those files can get quite large; we often just had updated this folder as it was needed.
I know this was a lengthy post, so I thank you for reading it! Stay classy, Unity Community.