Ask HN: How to ease in Git to someone with Git PTSD
I came across some colleagues who can’t stand Git (even the slightest whisper).
Alternatively, Perforce is used extensively in the gaming industry, really good integration with Unreal Engine.
Yesterday, I finally understood why: in their previous team, someone who didn’t understand Git at all, brought it in, and they ended up commiting directly to master and using spreadsheets to track who was editing what (no gitflow, no PRs) - just baffling, of course it didn’t went well, and of course they hate it.
How do I get them to trust the Git system again is an interesting challenge, but Perforce works, and basically wanted to share this amazing story.
19 comments
[ 3.0 ms ] story [ 59.8 ms ] threadI truly detest Perforce with a passion but I understand this use case.
Do not speculate; quantify it. The switch to Git will affect the whole team, your proposal should be as complete as possible.
My last workplace---also in the gaming industry---once used a mix of Git and Perforce, but now exclusively uses Git. This was not a light decision, artists and client programmers preferred Perforce for a good reason and using both Git and Perforce did work albeit with caveats (we had lots of tooling to synchronize both repos for example). But engine and server programmers also did have a good reason to use Git, especially because they did a full code review and relied on fast branching. So we developed a simple graphical interface to Git LFS for artists and client programmers, which finally made the switch viable. If we didn't have such interface and forced Git for everyone it wouldn't have worked at all. (To be fair, some still complain and it is an ongoing challenge to maintain the interface though. My very last job in that company was working around a bug in Gitlab's handling of Git LFS.)
Wow. My experience is that it wasn't worth the hassle of trying to make this change. Actually the other way (standardizing on Perforce) would have been a major hassle too.
At a prior job where we confronted this we had Perforce (game and some other host code), git (various low level stuff like kernel) and whatever the cad guys used. And google docs which of course have a painful and vestigial versioning system. In that case we had bigger fish to fry than the data control systems.
We might have been able to eliminate Perforce (though there was one particularly cantakerous game dev) but then we'd still have the CAD data issues, so I threw in the towel on this problem.
Oh, I should be clear: I didn't mean "synchronize" in that code went back and forth between control systems, if that's what you meant. Device code (kernel, drivers, etc) was in git and stayed there; game code and assets were in Perforce and stayed there; and CAD stuff was in whatever that system was. And we never had good document control as we used (ugh) google docs and text files in the various repos.
The answer to that question gives you what you need, bit could allow you consider whether the trade is worth it.
I have convinced gitophobes in the past, but the team was mostly on board, it was the minority that needed coaxing. That is much easier, because you can suggest trying it by working with those open to it. Generally people will cave to FOMO as others are learning together.
I would also keep in mind that there is a upper limit to how much 'selling' you can do to someone, so make sure this fight is worth it before using up the political capital needed to get them there.
https://youtu.be/4XpnKHJAok8
If you're making a game perforce is the only legitimate option. Unless you hate your developers, then try alienbrain.
Instead of showing you a graph and letting you change it.
It's mainly used by people who would say they're writing software, not manipulating graphs.
It also doesn't tell you this is happening, so people coming from another VCS don't even know there's this whole other part they should know. They memorize commands that seem to work, it goes ok, and then one day they ruin everything. Silly, that command means something different in the context you had no idea you were in. Duh.
Their experience with Git is that it's hard to make it work and then it randomly blows up. It's not because they're stupid or lazy. They're normal people dealing with a system that from their perspective is almost cartoonishly hostile.
They might wonder why they need to care about some underlying data model just to save their work instead of what they're doing now. If you have an answer that will make them want to switch, I suggest you spend a good while showing them pictures of history trees and ways you can change them. Name things slowly: this node is a "commit," this state change is a "reset," this transformation is a "rebase." If you have a workflow on top, draw more pictures of its states and changes using those terms. Then (re)introduce Git, a tool that does what you've shown them. Then set them up with a client where they have that flow with those terms and a graph they can look at, if not manipulate directly.
To answer some of the questions:
- Perforce isn’t going way, Git would just there for projects that will benefit from it (generic tools, less overhead setting up a repo)
- Git will need to bring value for the people using it (it’s just a tool), so something to think about
- Git graphical ui is definitely a good idea, I think it will also show better what operations are available for different contexts
- Definitely taking into account understanding Git graph and snapshot concepts is a very good start, as well having graphical visualisations