This Sprint I learned another important lesson about collaboration, repository management, and maybe DevOps. That lesson is people don’t listen. We needed to rename the entire project for some networking reason which meant completely reorganizing the file structure. Our brilliant solution was to do it at the end of the sprint, have everyone delete their local versions of the repository and just clone it again. There might have also been a force push involved, although I did not handle the renaming. Regardless, we somehow messed it up and ended up with both a MyProject and FrogBath folder which both contained a copy of the game.
I ignored this because I was busy and everyone knew to work in the FrogBath project rather than the old one. At least everyone did until someone pushed a significant amount of level building work in the previous project folder. To fix this, so far all I’ve done is added the MyProject folder to the gitignore and asked the designer to move their work into the actual project. At the end of this sprint I plan to delete the folder for good. Hopefully with the folder being ignored it will not get added again, although I suspect that someone will still manage to do work in it.
Some other options to help avoid this sort of problem in the future are adding pre-commit hooks which would be great, but would require each person to run a script to set them up each time the repo is cloned or the hooks change. A better option might be Husky which enforces pre-commit and pre-push hooks, but would require everyone to install Node.js / NPM. This seems like a ridiculous solution, to wrap an Unreal Project inside another project just for commit hooks.