top of page
Writer's pictureJack Self

Version Control (VCS)

Updated: Apr 12, 2022

Week 7 (Research & Activity) - This week is about version control or version control software (VCS). During the spark forum, we were asked to watch a lecture on creating and using tools to employ AI and computational creativity by Dr Michael Cook. Cook is currently developing an artificial intelligence software named 'Angelina', which designs games. The software started by creating simple games via game jams, whereby the user would take an abstract concept and develop it into a game. Its list of games can be found here, gamesbyangelina.org. Angelina builds games by expanding on phrases and themes from events such as games jams. For instance, Cook explains how he uses ConceptNet and Metaphor Magnet to achieve just that, by "[sprinkling] knowledge into software". The lecture was insightful and expanded on knowledge from week three's post, 'What IS Creativity?'.


In addition, the spark forum required us to briefly evaluate RI/E1 and create aims for RI/E2. I have decided to break this into two sections and move them into Post-Production & Post-Mortem (RI/E1) and The Reveal + Implementing ICEDIP (RI/E2), respectively.


What is VCS?

Bitbucket.com describes version control as the "practise of tracking and managing changes to software code. [VCS] are software tools that help software teams manage changes to source code over time" (What is version control?, 2022). To summarise, VCS is a tool used to record changes to a project file over time. Users then have the option to recall specific versions if they so desire (Figure 1).
















Why VCS?

Version control allows users to experiment without the risk of losing or endangering their work. Furthermore, VCS is most effective in teams, as it permits multiple users to work on the same project (Figure 2). However, users must be aware to "pull" the current project when they begin working and not work on the same thing - at the same time. This scenario could cause a system conflict, whereby one user must discard his/her work because it interferes with what the other user has uploaded.
















Git Version Control

VCS, such as Git, allows the user to store multiple versions of the same file, in addition to creating branches for experimentation from the 'master' file. These branches can be merged with the 'master' file later (if they do not cause a system conflict).


With Git software, users are able to:

  • Set up a repositories.

  • Clone repositories.

  • Commit changes to a branch.

  • Push and pull changes.

  • Create and merge branches.

  • Revert commits.

Experience with Git Software

I was first introduced to VCS during my undergraduate degree. I used popular Git tools such as GitKraken and GitHub. Since then, whether I am working alone or in a team and if the project is big enough, I will implement version control. VCS is convenient and has substantial benefits when developing projects over long periods. For instance, during my FMP (Final Major Project), I was able to work at home and the university on separate machines because the project files were uploaded via version control.


Furthermore, version control allows the user to pinpoint mistakes if any errors occur with updated project files. Nowadays, I stick to using GitHub Desktop (Git Client) because of its simple UI design. Although, I am not opposed to experimenting with alternative software in the future.


Alternate Git Clients

Below I have listed popular version control software and clients, in addition to their pros and cons based on personal preference and research:

VCS

Pros

Cons

Personal Experience

Great for collaboration, backups, and has detailed documentation (Clancy, 2018).

Weak security (does include an option to private repositories) and certain features are locked behind a paywall.

UI is beginner-friendly, and I have the most experience using GitHub Desktop.

Beginner-friendly and open to a variety of experience levels. Great documentation. GUI is modern (Nolle, 2020).

Not free for commercial-use. In addition, private repos are no longer free.

The UI is extremely visual, and it takes time to understand. I have some experience using GitKraken.

Affordable and trustworthy. Has the option to integrate Trello.

​Lack of plugins and the user community is not as large as other Git tools, such as GitHub.

N/A

Task organised GUI. Highlights merge conflicts.

Better for experienced Git users.

N/A

GitHub Repository (RI/E2)

Figure 3: How to use GitHub with Unity (Brackeys)


The challenge activity for this week was to create a repository for RI/E2. Moreover, Giovanni Rubino provided a lecture on how we may achieve it using GitHub Desktop. It was incredibly insightful and reminded me of a video by Brackeys that shows how to integrate a repository from GitHub into Unity (Figure 3). Fortunately, I created a repository for RI/E1 and after watching the videos I successfully managed to setup my repository for RI/E2 (Figure 4).


Figure 4: RI/E2 Repo (GitHub)


Currently, I am well underway in developing a project for RI/E2. I'm using GitHub Desktop to commit regular updates and track overall development (Figure 5). In hindsight, I could have challenged myself and experimented with other VCS. However, I am already experimenting with other development goals, such as using unfamiliar fostering techniques, that I did not want to overburden myself.


Figure 5: RI/E2 (GitHub Desktop)


Conclusion & Reflection

In conclusion, the lectures from both Dr Michael Cook and Giovanni Rubino were helpful in terms of preparing for the second rapid ideation event. Cook discussed his work on an AI system named 'Angelina' whilst Rubino helped set up a repository for the upcoming event. I was not unfamiliar with VCS before the week's material was released, although I believe I have benefited from researching alternate Git tools and the pros and cons of using such a software in depth.


I chose these specific Git tools on a popularity basis. In hindsight, this limits my selection. However, it provides the best and most modern VCS with credible documentation and active communities. I am curious to try new Git clients in the future, and with the added benefit of integrating Trello, Bitbucket may be the client I decided to choose. Unfortunately, I decided against using any other Git client other than GitHub. This decision was mainly made due to my overall experience using the software.


References

  • Bitbucket. 2022. What is version control?. [online] Available at: <https://www.atlassian.com/git/tutorials/what-is-version-control> [Accessed 15 March 2022].

  • Brackeys, 2017. How to use GitHub with Unity. [video] Available at: <https://www.youtube.com/watch?v=qpXxcvS-g3g&ab_channel=Brackeys> [Accessed 15 March 2022].

  • G2. 2022. Best Version Control Clients for 2022. [online] Available at: <https://www.g2.com/categories/version-control-clients> [Accessed 16 March 2022].

  • Cook, M., 2018. [online] Games By Angelina. Available at: <http://www.gamesbyangelina.org/> [Accessed 16 March 2022].

  • Speer, R., 2017. ConceptNet. [online] Conceptnet.io. Available at: <https://conceptnet.io/> [Accessed 16 March 2022].

  • Veale, T., 2019. Metaphor Magnet. [online] Afflatus.ucd.ie. Available at: <http://afflatus.ucd.ie/?q=node/2> [Accessed 16 March 2022].

  • Clancy, J., 2018. The Pros and Cons of Using GitHub for Repository Management. [online] CodeClouds. Available at: <https://www.codeclouds.com/blog/advantages-disadvantages-using-github/> [Accessed 16 March 2022].

  • Nolle, T., 2020. GitKraken vs. Sourcetree: Pick a Git GUI that fits dev needs. [online] SearchSoftwareQuality. Available at: <https://www.techtarget.com/searchsoftwarequality/tip/GitKraken-vs-Sourcetree-Pick-a-Git-GUI-that-fits-dev-needs> [Accessed 16 March 2022].

  • iDalko. 2022. 7 reasons Bitbucket is better than GitHub. [online] Available at: <https://www.idalko.com/bitbucket-vs-github/> [Accessed 16 March 2022].


Comments


bottom of page