If you build a software product or system as a part of your project, you might want to use some form of version control.
If you don’t know what version control (or version management) is, the idea will probably be familiar to you from your previous experiences of writing and submitting TMAs. You probably begin with a rough draft (or even a plan), then move to an initial draft, and then to a final proof-read final draft; each draft is a version, and you might well give them different names. Version control, or version management, is a similar idea, but it applies to software code, with additional functionality that is designed to make your life easier and to protect the integrity of your software. When used well, version control tool can help you to manage project risks and protect you from your own mistakes.
Introducing Git
The world’s most popular version management tool is Git. If you intend to work as a professional software developer or engineer, you need to know about it.
Git is a bit of software that works with a software repository, which keep your source code safe. Git is is now so important and widely recognised within the computing industry that it is now common practice is to include a link to your personal Git repository on your CV or LinkedIn profile.
With Git being so important and useful, a practical suggestion is to consider using it as a part of your project. Not only does this provide an opportunity to learn how to use Git, but can also take the opportunity to create a code repository that can be shared with your project examiner, and any potential employer.
Key components
Git – this is the core software. As mentioned on the Git website, Git is accompanied by an ecosystem of hosting services and GUIs.
GitHub – this is the most popular repository hosting service. For your project, you could set up a private repository. If you wish to share your work with an examiner or an employer, you may wish to create a public repository.
GitLab – this is another hosting service, but one that offers a richer set of functions for the building and delivery of large software products.
GitHub Desktop – since Git was historically a command line tool, GitHub Desktop is a graphical user interface that simplifies its use.
GitHub and GitLab are code repositories. If you were to ever work on commercial software, you might find yourself working on a corporate or institutional repository which is hosted on private servers. For your project, a good place to start, is GitHub.
Reflecting the point about an ecosystem, Git can be also connected to popular integrated development environments, such as Microsoft Visual Studio Code.
Advantages of using Git
Although one of the biggest advantages of Git is that it allows many different people to work collaboratively, it can also be useful if you are working on your own, on a single project. One really important advantage is that it provides a way to maintain a secure backup of your software; you create software on your computer, and then push what you have done to your Git repository.
Git also allows you to keep multiple versions of your software. This can be really useful when you are trying to debug your software, and understand the cause and effect between different changes. Git also helps you to create defined builds of your software. It helps you to keep track of what bits of software (what versions) contribute to what releases. In other words, it helps you to manage complexity.
Using evidence from Git in your project
The examiner will be looking for evidence of consistent work throughout your project. The official way to provide this evidence is by sharing a project log, which is a regular set of notes that you have made throughout your project. If you use Git, you can also include an appendix where you can share copies (screenshot) of your Git logs, to provide clear evidence of what code commits you have made, and when. The more evidence you leave the examiner, the more impressed they will be with your project.
Further resources
These accompanying blog posts might be useful:
Reflections
Git is mentioned in TM113 Computing Fundamentals 2, and will be used by students studying TM253 Object-oriented software engineering. Rather than saying why it might be a good idea to use Git in your project, an alternative question should be ‘why am I not choosing to use Git?’ If you’re not going to use Git, what else are you going to do instead? Version management (and Git) is an integral and important part of modern software engineering and software development.
As a project examiner, if you have created some software, one of the questions I always ask myself is: how have they managed their source code?
There is, of course, an overhead that accompanies the use of any sophisticated and powerful tool. You’re not expected to become a Git master by the end of your project, but the project examiner will also be looking to see what you have done, what you have learnt, and what problems you have solved.