So, I'm reaching out for polite suggestions on an ongoing issue at my "work". I'm currently an Undergraduate student - seeking Master's - and I work with many other Graduate students on this relatively large research project.
The problem lies in getting some cooperation from others. I've used GitHub for almost five years, across every platform out there. I know quite a bit about its ins and outs, and I've come to rely on version control and commit history. The thing is - all of our coworkers, though one in specific (the one who happens to be doing a lot of the work right now, though I did lay down the backbone of the code that he's working on) practically refuse to use it.
This one individual has adopted what I call an "unplanned repository". He has several (approximately 8) folders of our repository he downloaded straight from GitHub, unzipped, and began working on. He hasn't used GitHub at all on these folders, and at this point he's keeping them all as separate "versions" with names that only he could distinguish from one another (stuff such as "(repo name)-REC-ONE", "(repo name)-WITH-HTTP", etc.).
I've politely (and recently, not so politely but in a joking manner) told him that he should really consider using the GitHub repository I took so much time in preparing with separate branches for our varying "working stages". His most recent excuse was "well, last time we did that you started working on my branch", which while true, it was after one line of code and then I immediately noticed and changed branches, discarding all changes and making no changes to his branch.
So, my question is: how would you suggest I practically force him to use it? It's becoming literally unbearable, and other professionals in the field have already pointed out to us that our "version control" is negligent, which I totally agree though it's not my fault. The hardest thing is that everyone has been at this work for longer than I have, but I've also somewhat been put in main control of this project, so I don't want to overstep my bounds or burn any bridges, but this just has to stop. Any suggestions? Do we just have to wait for something catastrophic to happen to convince him to use version control?
As soon as I read your third paragraph I thought of this: (source: deviq)
It seems unacceptable and irresponsible on his part to not use a version control system like Git.
If those poorly named folders are deleted, overwritten or otherwise lost, it affects more people than just him. If the timing is especially poor, it might happen right before the project is due and cause all of you to fail.
It's ironic that he was annoyed you changed his line of code, when Git is exactly what allowed you to roll it back. If someone (including him) makes an unwanted change in one of those folders and inadvertently saves it, that's it. There's no rolling back from that unless he's creating a new set of folders as often as many of us commit our changes.
Git (and GitHub) is an essential tool for any developer. I assume you're all working towards development, but maybe he's not. Someone refusing to use it would be a huge red flag when it comes hiring time. It'd be totally acceptable if someone had to learn to use it, but not even seeing the point of it..?
It doesn't sound like you can force him - just continue to make arguments to impress the important problem version control solves... and hope his disk doesn't crash.
Have you tried pair-programming with him? If you show him version control in action, including jumping between branches, looking back through logs, and perhaps an "oops" followed by rolling back to a good version, there's a good chance he'll see the benefits it would bring him.
If he is worried that people will tread on each other's branches, then maybe it would be advantageous for him to have a separate GitHub fork of the project and collaborate via pull requests, like in the open-source world. That way, he will have full control over what is allowed in his version of a branch.
Could he be command-line-phobic? Do you use an editor with git integration or could he use one of the GUI clients?
The best way to enforce git usage is to create scripts that deploy from github to production. Nothing can get to the users without passing through these scripts.
This is a dumpster fire. Run away. It can not be saved.