I currently practice magic and often participated in group projects. It is not unusual for only 1 or 2 team members to complete a project. Not only from my projects, but also with other people. Basically what you said about the SquareCog show and friends is not unrealistic.
Indeed, the more people you have in the group, the more lazy people will be. In addition, more time is lost in communicating with them, as they invent a ton of ideas that they do not intend to follow. It is well known that there is a moment when additional programmers no longer help the project. There is only so much that you can break something. Moreover, it will slow down the work, and not only give part of one person and create more dependencies.
Also, the average student has a comfort zone, so even if you can get them to do some work, they will remain in their comfortable zone. Someone must leave their comfort zone for most projects (if someone does not already know the information in the classroom) in order to succeed. Most of the time I find that I am the only one who wants to do this in my group, and in some groups there is nobody. The most radical example is a project of 7 people, where almost no one did anything. Another guy was ready to do some lightweight sys administration tasks, and then web design, which was in his comfort zone. One girl developed some kind of database project (and I mean some of them, because I basically did the design as a high-level outline, which she formalized with column names / data types). The rest did nothing. The class was distributed systems, so someone needed to learn JBoss (and Enterprise Java Beans), Amazon Web Services, etc. But it does not matter for the class. In the data mining class, someone will have to figure out which methods to use and how to use the tools.
Also, many students are not good programmers. In fact, in one of my groups there was someone who could not program at all. In fact, based on his description, the MBA sounded like the right degree for him, but in any case, he went with the masters in CS, developing his programs for friends / contractors ... Many of them are just scary programmers, and not just in style , they could "Debug the hi world with a visual studio ... Instead of understanding what went wrong, they just keep adding code until it works by coincidence.
One thing that happens quite often is that people come up with rather ambitious projects that are unrealistic for a semester. Usually I end up taking his scissors and cutting into a project with barebones, and suggest that as soon as we finish the barebone part, then we can improve it and add more advanced things. What almost always ends is that people are dragging it out, and in the end, after we get the barebones, no one wants to do anything.
There are 2 types of gradient students. Full-time students who take grades 4-5, in which case they cannot afford to spend 40/80 or even 20-hour work weeks working on a project. Or part-time students who have full-time work, in which case they take 1 or 2 classes and have a full time job so that they have even less time. I would say that as a general assessment you can make up 6 hours of homework for a graduate class (most will spend less). Assuming a normal class, maybe 3-4 or that you need to spend on studying / reading for the class. This leaves 2-3 hours per week per person to work on the project. Even get what would be good.
Some of the ideas that float like team lunches are not realistic at all. Many hail classes have group projects, and full timers cannot run 4 or 5 group lunches per week, that is, 5 hours wasted per week that can be spent on rpoject. There may also be money problems if you go to restaurants and expect everyone to buy lunch. And for those who go with time, like me, I am not going to make lunch as a team, because I work 9-6 + or 8-5 at night clubs in college.
Probably your best bet is to find people's comfort zones and find out the tasks you can assign to them. Also, to identify freeloaders and not waste your time with them.
Also, using version control for a school project seems redundant. If the whole class is just a project, maybe not. But if we assume that this is a regular class with lectures, exams and homework with a project completed on the side, then any time spent on infrastructure is the time when you are not completing the project. Indeed, although this is unrealistic for the professional environment, school projects are like startups. Get them even if the code is a mess. You can always clean it later. But if you do not, your class will suffer. And in fact, as soon as this is done, I do not want to clean it, and no one else does it .... Getting everyone to use the source control (if you do not share the machine) will spend a lot of time fixing problems, and adjusting people to use it. I do not know what your project is. But with many graduation projects, you need to do some research / experimentation, and then the program code is relatively simple. One class got me with a project of 5,000 lines, lucky that it was not a group project.
Again, keep it simple in the project. You can simply coordinate the details, assign different parts and, as they do, check / test, and then integrate them with your version control and leave them free to work on the project, which is most convenient.
Many will gladly allow you to design a thing, realize a thing, and then learn absolutely nothing and just get an estimate. This is their loss, because they will not receive project lessons. But they are quite happy that the square and the friends are just a square. Some want to contribute something, but they are in the minority. If you get one of them is great for you! Also keep an eye out for engineering. You have to look at things realistically. 3 hours a week for a group member would be great, but I think this is unrealistic. When a project arises, sometimes you can get 5 or 10 hours a week from the one who backed off. But you cannot expect more.