Syllabus#

1. Part: Working with git#

Introduction to git#

  • Know the basic building blocks of Git (Commits, Branches, Tags) and their relation

  • High-level understanding of how commits build up a history

The basic workflow with git#

  • Relate git operations (pull, push, etc.) to the typical workflow when developing a project

  • Understand how local changes integrate into the remote version and vice-versa

Some useful commands#

  • Know some commands beyond commit/pull/push and specific command options that facilitate the integration of git into the personal workflow

Collaboration with git#

  • Become familiar with the idea of maintaining a healthy reference and how it benefits collaboration

  • Understand how git operations and use patterns are designed to facilitate the maintenance of a healthy reference

  • Learn some best practices that facilitate the maintenance of a healthy branch and thus collaboration

  • Get acquainted with the “feature branch” workflow - A simple collaboration approach suitable for most cases

  • Recognise the benefits of using git even when working alone in a project

A word on versioning#

  • Grasp the difference between tags and commits and how tags facilitate navigation in the history of a repository

  • become acquainted with the semver versioning standard and how versioning relates to tags.

Examples and learning by doing#

  • Resolve some issues (merge conflicts, etc.) on your own with the Weekend Out project

That would be the end of part 1


2. Part: Git and its Remotes#

Git features vs remote services#

  • Be able to tell what features and tools belong to git and what belong to remote services

Organizing projects and more#

  • Discover how remote services can be used to organize collaboration across repositories

  • Basic understanding of GitHub’s organisational structure (user, organizations, teams, projects, …)

  • Basic understanding of GitLab’s organisational structure ([sub-]groups)

Project management with remotes#

  • Know the elementary building blocks for project management

  • Understand how these building blocks integrate into a “feature branch” development approach introduced in part 1

Contributing to OpenSource projects#

  • Become acquainted with the standard workflow for contributions to pubic GitHub/GitLab projects

Examples and learning by doing#

  • Step through a “feature branch” development cycle by means of the project management tolls provided by the remote services

  • Identify and resolve some conflicts directly on the remote service


3. Part: Continuous Integration and Delivery#

Why remotes offer automation#

  • Get an idea about the vast application possibilities of automation

  • Discover use cases of automation for non-software developer

  • Develop an idea how automation can help to maintain a healthy reference, facilitate collaboration and reduce errors

Basic structure of an automation workflow#

  • Become familiar with the principal elements that define a workflow and how workflows are defined on GitHub and GitLab

About runners#

  • Understand the purpose of runners and how they interact with remote services

  • Become aware of the security implications the usage of runners might entail

  • Learn about the possibility to setup and use dedicated runners

  • Understand how runners can be used to create reproducible environments

How to integrate automation in a project#

  • Get familiarized with how automation workflows are triggered

  • Learn how automated workflows integrate with project management tools

  • Be able to safely use sensitive information (credentials, etc.) in an automation workflow

Examples and learning by doing#

  • Create your own workflow to render and publish a LaTeX document


4. Part: Git and Science#

Versioning as basis for reproducibility#

  • Embrace how the commit based git history allows to recreate specific states and configurations

  • Apprehend the gap between versioning and reproducibility

git LFS#

  • Learn to version data and larger (binary) files with git

git submodules#

  • Become familiar with the approach to recreate environments with multiple git repositories

Remotes project management tools#

  • See how project management tools can facilitate to adhere to best practices and scientific integrity

CI/CD for reproducibility#

  • Be able to configure runners with completely reproducible environments

  • Get familiar with conducting an analysis or simulation via an automation workflow

  • Appreciate how automation workflows can bride the gap between versioning and reproducibility

Examples and learning by doing#

  • Complete, use and verify the reproducibility of an exemplary analysis automated with workflows