Version Control

Hero image for Version Control

We always use Git for our code version control needs. No matter how big or small the project is, Git is required at all times as it allows us to track changes, revert to previous without using ctrl-z 😨 and primarily work efficiently as a team.

Services

We use Github to host our code for all kinds of projects.

This is how we decide whether the repository should be public or private:

  • Private repository for our closed source or clients’ projects.
  • Public repository for open source projects developed by us.

When a client already uses another provider, such as Gitlab or Bitbucket, we will always prefer using the existing service. Co-locating all code repositories in one service, instead of spreading them over multiple services, is always preferred.

Tools

No specific tool is enforced at the team level to use Git on a local machine. The following tools are the ones most commonly used.

Terminal

The built-in terminal in Mac OS or the powerful iTerm2 replacement terminal.

The terminal experience can be greatly enhanced when used in combination with Github CLI.

Both iTerm 2 and Github CLI are installed by default with our laptop setup script.

Built-in Tool in IDEs

Whether using Visual Studio Code or one of the JetBrain’s IDE - we mostly use RubyMine, GoLand and Android Studio - all IDEs come with a built-in panel to interact visually with Git.

Standalone Applications

Github Desktop and Sourcetree provide similar benefits as the built-in Git tool in IDEs in interacting visually with Git but, as a standalone and focused application, they also come with more advanced functionalities.

These tools, while targeted at developers, are also well-suited for non-technical team members as it removes the need to learn Git commands.

Template

When starting a new project, our custom and maintained template repositories for each stack must be used:

In the event that none of this project template is suited, the Git project template repository must be used to initialize the project.

Form to create a new Github repository using a template

The repository comes with a standardized README, pull request and issue templates.