1. Syllabus#

1.1. 1. Part: Working with git#

1.1.1. 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

1.1.2. 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

1.1.3. Some useful commands#

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

1.1.4. 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

1.1.5. 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.

1.1.6. 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


1.2. 2. Part: Git and its Remotes#

1.2.1. Git features vs remote services#

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

1.2.3. 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)

1.2.4. 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

1.2.5. Contributing to OpenSource projects#

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

1.2.6. 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


1.3. 3. Part: CI/CD Workflows#

1.3.1. 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

1.3.2. 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

1.3.3. 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

1.3.4. 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

1.3.5. Examples and learning by doing#

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


1.4. 4. Part: Git and Science#

1.4.1. 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

1.4.2. git LFS#

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

1.4.3. git submodules#

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

1.4.4. Remotes project management tools#

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

1.4.5. 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

1.4.6. Examples and learning by doing#

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