Here is my mine
GitKraken seem to be an excellent tool to use.
I imagine two students dividing the group assignment (although I guess it would require at least two local repositories and one remote, just experimenting with branches for now ).
Can’t really correctly model my scenario with this graphical viz tool, there are several clones of the repo, one on the machine in the lab class, end probably one on the home machine of each student. The tricky part is when to clone, push and pull, and if necessary merge when the students have worked in parallel on separate copies.
I suppose this takes some explaining, since it doesn’t look like much. My students have had a lot of conflicting information about version control (and git), and even when they get to my senior level classes haven’t had much (or any) experience with it. I’m focusing more on the formation of good habits (specifically commit small and often, and only related changes). My assignments specify “milestones”, small related things that require they have at least one commit. For example, a recent Data Structures assignment had the following milestones:
- add required code comment header to all files
- complete exception class
- complete non-default constructor
and so on.
Students were required to have at least one commit that satisfied each milestone (to reinforce what you were talking about in the being selective with Git video).
In future assignments (and when I have them working in groups) I hope to introduce branches, but since that doesn’t change the fundamental workflow (develop, add, commit, repeat) I want to build that in later once I get them using the tool and seeing how frequent commits can give you that “infinite undo” functionality.
Our most common workflow is a simple topic branch pull request to master after some amount of local testing as well as some semi-automated testing against the remote topic branch from other sources.
I dig it, solid explanation! In my class, I’ve found that branches can also be integrated quite well if you have slightly larger individual projects, rather than necessarily waiting for group work. My professor and I set specific milestones that we group into levels, students complete each level on a separate branch, and can actually receive feedback from a TA while the assignment is ongoing through pull requests.
Also, I really like your method of enforcing best practices in commits.
We typically expect students to build new features on branches in the attempt to keep “master” to be “buildable” at all times.
The students have to implement a factorial function, both in an iterative and recursive fashion (factorial_recursive, factorial_iterative). They have to test both functions with user input (testIO_recursive and testIO_iterative).