Reputation: 2868
My Team currently uses an ancient, horrible source control library and we are looking to switch to a more mature system. Git is the one that's most appealing to us.
We develop software and scripts for internal consumption by our company and we work on many projects at the same time. The same developer might be working on a long term project over several weeks, with several small to tiny projects in the middle.
Our current VCS has a central repository and everyone checks out and back into this one location. You only ever have the current copy on your workstation.
One thing our current library lets me do is see who has checked out a file but forgot to check in the changes. With git, all repositories are local, so how can you know if someone forgot to push to the central copy?
Upvotes: 1
Views: 1062
Reputation: 76286
The important question is why do you need to know. Because it looks like you have people problem rather than technical one. Technical solutions to such problems rarely work well in practice.
The old version control systems knew about the "check out" operation on the server because they were bad at merging, so they needed to prevent two people from working on the same file at the same time. But that caused a lot of problems because people needed to wait for each other, so it was replaced by the "edit-merge-commit" workflow where multiple people can work on the same file at the same time, since in practice the changes are easy to combine most of the time. And version control servers stopped caring about local modifications. Distributed version control takes this even one step further by storing the intermediate steps as parallel histories.
So you don't need to know who has local changes because it would block anybody; it does not.
The only other reason you might want to know I can think of is so that you can remind them they still didn't finish it. And that's people problem and seeing the uncommitted changes does not solve it anyway. What if they didn't even start? Or they started and than cancelled the checkout for whatever reason?
So you need to keep track of what tasks they were assigned and ask them about their status anyway. And git makes it easy for them to show you their work-in-progress by pushing to temporary branch or sending the diffs by email or even exporting their local repository over network so you can pull from it.
Upvotes: 3