Repository Setup

In order to share your code and allow other people to contribute to your project, one of the best options is to use open repositories such as GitHub. GitHub provides a single place to keep all source code and a powerful version control. It also facilitates collaboration between team members.

The GitHub Help page contains complete documentation about how to use the repository and the tools related to it. This section only includes the basic steps needed to start a new repository and create a project:

  • Create a GitHub Repository: use your GitHub account and log in to GitHub.com to create a new repository. This is the place where the project will be stored.

  • Download and install Git (local command line application). This is the tool used to create a local repository and all the files that will comprise the project. Git is the tool that will connect and synchronize the local repository with the online repository in GitHub.

  • Create the local repository and the project files using Git.

  • Commit and push the local repository and files to the online repository.

One critical aspect of code repositories is how to manage files, versions and releases. The first commit in the project source code repository must be done by a team member that belongs to the Architecture team. This team member should decide how the project must be modularized, how the files of each module must be stored (folder structure) and what dependencies should exist. Regarding version and release management, there are common branching models for Git that define the workflow the team should follow to simplify development.

One of these workflows is GitFlow. This branching model combines feature, develop, release and master branches. Developers work on feature branches and commit changes to the develop branch. They decide when to create a release branch but at the same time the team is still working developing more features. This model also provides the concept of hotfix branch that is used to fix issues found in production (master branch).

All the details of GitFlow and other Git models are described in Atlassian Tutorials, Comparing Workflows.