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.2. Most popular remotes#
Come to know the most popular remote services (GitLab, GitHub, …)
Learn what remote services are used at the university and what are good approaches to set up a collaborative project (for internal and external collaborations).
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