diff --git a/2022/2022-05-31_git-triology-part-1/slides/best_practices.md b/2022/2022-05-31_git-triology-part-1/slides/best_practices.md new file mode 100644 index 0000000000000000000000000000000000000000..f430fdfa5f9c4916cdf1654684259b260ba89a18 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/best_practices.md @@ -0,0 +1,46 @@ + +# Wrap-up + +* Git makes things separated but interlinked! + * separation of changes into commits - compare with standard "versioning" of dropbox/onedrive/owncloud or labeling v1.2 manually + * separation of work into branches - compare with standard work in parallel - making copy of file and renaming, then "putting it together" + * separation of work into forks - compare with "I will make my own copy of the whole folder" + + +<div class="fragment"> + +* GitLab creates a convenient working environment + * merge requests + * issues + * assignements + * and much much more... + + + <div style="position:absolute;left:55%;top:55%"> + <img src="slides/img/fox.png"> + https://pixabay.com/images/id-5236832/ + </div> +</div> + + + + +# Wrap-up +## Glossary +* git +* repository +* fork +* commit +* branch +* merge +* merge/pull request + +## Best practices + +* Work on your <font color="red">own</font> branch (in your own fork), and **not** on `master` and **not** on `develop` +* Do **not commit** to `master`/`develop`, but **submit a merge request (MR)** +* Get your code **reviewed** by your peers (submit a merge request!) +* Submit a merge request **often**! (as soon as the feature is ready) +* Make commits often (keeps increments small) + + diff --git a/2022/2022-05-31_git-triology-part-1/slides/branches.md b/2022/2022-05-31_git-triology-part-1/slides/branches.md new file mode 100644 index 0000000000000000000000000000000000000000..27473e4527951f92405d86b99afa522dd9a1a37a --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/branches.md @@ -0,0 +1,80 @@ +# New term: <font color="color:red">branch</font> + +* A sequence of commits (changes) is referred to as **branch**. +* A new branch can be created by __branching off__ from a commit. +* A **branch** can be understood as a named **version** of your repository. + +<div style="position:absolute;left:50%;top:1em"> +<img src="slides/img/branch_branch-off_detail.png" class="as-is" height="800px"/> +</div> + + + +# Development scheme + +Generally, in a repository, there are guidelines for contributing. + +<div class="fragment"> + +A common development scheme is dual with a: + +- **development** version on `develop` + - things are still being changed and mistakes are being fixed +- **stable** version on `master` + - actively used version in production environment + + +<div class="fragment"> +<div style="position:absolute;left:60%;top:1em"> +<img src="slides/img/branch_master-develop.png" height="800px"> +</div> + +<font color="red">In the practice repository, the development branch is called `develop`!</font> + +<div class="fragment"> + + Use this dual development scheme for your own repositories! + + + +# Create your own version + +Assume that you want to work on a new content. + +Best practice is to <font color="red">create a new **branch**!</font> + +<div class="fragment"> +<div style="position:absolute;left:60%;top:1em"> +<img src="slides/img/branch_my-branch.png" height="800em"/> +</div> + +<br> + +Using branches ensures: +* your changes are made separately from other changes +* your version won't be affected by others +* all related changes are aggregated on one place +* work can continue if the development of one feature gets stuck + +Are you working on more features in parallel? + +<font color="red">Create a new **branch**!</font> for each of them :) + + + + + +# Time to practice! + +1. What is the difference between **fork** and **branch**? + <div class="fragment fade-in-then-out"> + <div style="position:absolute;left:10%;top:8em"> + <img src="slides/img/forking_detail-with-branches.png" height="500em"/> + </div> + +2. Why is best practice to branch off from `develop`? +3. Switch between branches + <div class="fragment fade-in-then-out"> + <div style="position:absolute;left:10%;top:8em"> + <img src="slides/img/branch_GUI_switch.png" height="500em"/> + </div> diff --git a/2022/2022-05-31_git-triology-part-1/slides/commit.md b/2022/2022-05-31_git-triology-part-1/slides/commit.md new file mode 100644 index 0000000000000000000000000000000000000000..e3fdc167a2ba77f061bf64c53da4ad6d9f4a5e22 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/commit.md @@ -0,0 +1,54 @@ +# New term: <font color="color:red">commit</font> + +* Your repository (your file) is in a certain state. +* Every change moves the repository to a new state. +* Every change added to the sequence of changes is called **commit**. +* Every commit has: + * message - why + * author - who + * timestamp - when + * unique identifier + +<div style="position:absolute;left:60%;top:1em"> +<img src="slides/img/commit_history-diagram.png" class="as-is" height="800px"/> +</div> + +<div class="fragment"> +Gitlab UI: +<div style="position:absolute"> +<img src="slides/img/commit_GUI_1.png" class="as-is" height="350px"/> +</div> +</div> + + + +# New term: <font color="color:red">commit</font> +## Time to practice! + +1. Notice last commit on files +<!-- .element: class="fragment" data-fragment-index="1" --> +1. Review history of your repository +<!-- .element: class="fragment" data-fragment-index="2" --> +1. See changes in the last/second last/third last commit. +<!-- .element: class="fragment" data-fragment-index="3" --> + + +<div class="fragment fade-in-then-out" style="position:absolute;left:50%;top:1em" data-fragment-index="1"> + <img src="slides/img/commit_GUI_main-last-commit.png" class="as-is" height="500px"/> +</div> + +<div class="fragment fade-in-then-out" style="position:absolute;left:50%;top:1em" data-fragment-index="2"> + <img src="slides/img/commit_GUI_main-history.png" class="as-is" height="500px"/> +</div> + +<div class="fragment fade-in-then-out" style="position:absolute;left:50%;top:4em" data-fragment-index="3"> +<img src="slides/img/commit_GUI_click-on-commit.png" class="as-is" height="75px"/> +</div> +<div class="fragment fade-in-then-out" data-fragment-index="3"> +<img src="slides/img/commit_changes.png" class="as-is" height="600px"/> +</div> + +What is this + +Notes: +Congrats! Now you have reviewed recent changes in your repository! \ No newline at end of file diff --git a/2022/2022-05-31_git-triology-part-1/slides/forks.md b/2022/2022-05-31_git-triology-part-1/slides/forks.md new file mode 100644 index 0000000000000000000000000000000000000000..6246558f2695d77e929501efd5b27059dd015ed7 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/forks.md @@ -0,0 +1,66 @@ +# New term: <font color="color:red">fork</font> +## What is a `fork`? + +<center> +<img src="slides/img/fork.jpg" class="as-is" height="500em"/> +</center> +<!--http://www.cndajin.com/data/wls/246/22302193.jpg--> + + + +# New term: <font color="color:red">fork</font> +## Not really ... + +<center> +<img src="slides/img/fork-crossed.png" class="as-is" height="500em"/> +</center> + + + +# New term: <font color="color:red">fork</font> +## What is a `fork`? + +- In general, by default you can only **read** files in a repository. +- In general, by default you **cannot write** changes. + +<div class="fragment"> +<img src="slides/img/forking.png" height="400px"> + + +- You have to work on your **own copy** of the repository +- In other words, you have to work on your own <font color="red">**fork**</font>. +<br> + +## Why? + + + +# How to get a fork? + +Browse to the original repository and click on the button `Fork`: + +<img src="https://docs.gitlab.com/ee/user/project/repository/img/forking_workflow_fork_button_v13_10.png" height="250px"> + +<br> + +<img src="slides/img/icon-live-demo.png" height="100px"> + + +## Time to practice! + +1. Fork the practice repository: <br><br> +TODO<br><br> + +Congrats! Now you have your own **fork**! + + + +# How to update my fork? - TODO: move to the end or delete +\ +As you have your own fork, it will not automatically be updated once the original repository is updated. + + You have to update it yourself! + +<br> + +**More on that later!** diff --git a/2022/2022-05-31_git-triology-part-1/slides/gitlab.md b/2022/2022-05-31_git-triology-part-1/slides/gitlab.md new file mode 100644 index 0000000000000000000000000000000000000000..dc042490d5ed684ae6aa99a720f23b3b451bb8f4 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/gitlab.md @@ -0,0 +1,43 @@ +# Git repository hosting platforms +<div style="position:absolute; left:70%"> +<img src="https://gitlab.com/gitlab-com/gitlab-artwork/raw/master/logo/logo-extra-whitespace.png" alt="GitLab" style="width: 500px;"/> +</div> + +Web-based platforms with **many** features facilitating storing, tracking and collaborating on `git` repositories. + +* cloud based - everything on remote server +* authentication and authorization - who can see or access the repository and how +* access to files via browser - manage, view, make changes, ... +* collaboration supporting features - comment, create issues, documentation, ... + +**Gitlab** is both publicly available or can be deployed on-premise. + +- Public GitLab: [https://gitlab.com](https://gitlab.com) +- **LCSB** specific: [https://gitlab.lcsb.uni.lu](https://gitlab.lcsb.uni.lu) + +Another popular platforms: +- **GitHub**: [https://github.com](https://github.com) +- **BitBucket**: [https://bitbucket.org](https://bitbucket.org) +- **Gitea**: [https://gitea.io](https://gitea.io) + + + +# Time to practice! + +<img src="slides/img/icon-live-demo.png" height="100px"> + +1. Login to [https://gitlab.lcsb.uni.lu](https://gitlab.lcsb.uni.lu) + * use your LUMS credentials +2. browse the existing repositories + * Explore -> + * navigate to the training repository +3. Inspect project/repository folder structure +4. Discover an issue (see README.md) and report it + +<div class="fragment"> + +Congrats! You are a **reporter** :) +</div> + +notes: +- reporter is very important role diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/Git-logo.png b/2022/2022-05-31_git-triology-part-1/slides/img/Git-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..910f9936950b6e6cc5697c2e6bc761b7f80b9d76 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/Git-logo.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/branch_GUI_switch.png b/2022/2022-05-31_git-triology-part-1/slides/img/branch_GUI_switch.png new file mode 100644 index 0000000000000000000000000000000000000000..56262a57ae632d36c42f2de264cc84b5f0d3fe04 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/branch_GUI_switch.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/branch_branch-off_detail.png b/2022/2022-05-31_git-triology-part-1/slides/img/branch_branch-off_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..27ac109e180a42f442ed9a5cfcce58cb94a35e67 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/branch_branch-off_detail.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/branch_master-develop.png b/2022/2022-05-31_git-triology-part-1/slides/img/branch_master-develop.png new file mode 100644 index 0000000000000000000000000000000000000000..60079f423db6516aca238700363e7c50a5cb8e62 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/branch_master-develop.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/branch_merge-detail.png b/2022/2022-05-31_git-triology-part-1/slides/img/branch_merge-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..3e788295f42607e40c74254960782c7122aaba86 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/branch_merge-detail.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/branch_my-branch.png b/2022/2022-05-31_git-triology-part-1/slides/img/branch_my-branch.png new file mode 100644 index 0000000000000000000000000000000000000000..bd1e0d3b425f4128d0ca33393dd9f95a005d1c73 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/branch_my-branch.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/bulb.png b/2022/2022-05-31_git-triology-part-1/slides/img/bulb.png new file mode 100644 index 0000000000000000000000000000000000000000..590f8d9270fea6be86b5e356cb07cd9232ef7056 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/bulb.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_1.png b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5b3061469fba34dabbcf9ad523ea58cfacbc7534 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_1.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_click-on-commit.png b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_click-on-commit.png new file mode 100644 index 0000000000000000000000000000000000000000..3da8447364073dc96b8b3b9df1e9691f58d35232 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_click-on-commit.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_main-history.png b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_main-history.png new file mode 100644 index 0000000000000000000000000000000000000000..0d0f2f5308a7bb9e1c3e4a29cddef8f0f87e9a56 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_main-history.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_main-last-commit.png b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_main-last-commit.png new file mode 100644 index 0000000000000000000000000000000000000000..cca0006817b39a98e338a017bb33881c9a6418b4 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_main-last-commit.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_main.png b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_main.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad39e663903b15ff5656cacb64490d5c0cc6625 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_main.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_web-ide.png b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_web-ide.png new file mode 100644 index 0000000000000000000000000000000000000000..3754805afcdb4db3ca4d71dad807f8ba73e41016 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/commit_GUI_web-ide.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/commit_changes.png b/2022/2022-05-31_git-triology-part-1/slides/img/commit_changes.png new file mode 100644 index 0000000000000000000000000000000000000000..b053d9f13328ea3c36e0d67463a2e04fe62097c0 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/commit_changes.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/commit_history-diagram-branch-only.png b/2022/2022-05-31_git-triology-part-1/slides/img/commit_history-diagram-branch-only.png new file mode 100644 index 0000000000000000000000000000000000000000..625d366004291f85bb5b6a14b7167c54d9defcc1 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/commit_history-diagram-branch-only.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/commit_history-diagram.png b/2022/2022-05-31_git-triology-part-1/slides/img/commit_history-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..d9eef88b74d5d36139d50e5ef1160c204f498c58 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/commit_history-diagram.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/favicon.ico b/2022/2022-05-31_git-triology-part-1/slides/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9b935c03f6f841601835db006ed02b582166cdc8 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/favicon.ico differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/fork-crossed.png b/2022/2022-05-31_git-triology-part-1/slides/img/fork-crossed.png new file mode 100644 index 0000000000000000000000000000000000000000..cd93216af30439024a36d2d6355d0eae28324511 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/fork-crossed.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/fork.jpg b/2022/2022-05-31_git-triology-part-1/slides/img/fork.jpg new file mode 100644 index 0000000000000000000000000000000000000000..35ef53f4225b9286280c99d2c23f1594d380d6c5 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/fork.jpg differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/fork_branch-diagram-after-commit-with-back-arrow.png b/2022/2022-05-31_git-triology-part-1/slides/img/fork_branch-diagram-after-commit-with-back-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..e505ba66abad7597fd9fd710941b3311115b3b7b Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/fork_branch-diagram-after-commit-with-back-arrow.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/fork_branch-diagram-after-commit.png b/2022/2022-05-31_git-triology-part-1/slides/img/fork_branch-diagram-after-commit.png new file mode 100644 index 0000000000000000000000000000000000000000..15bbcd61416a91b0cb346d79520dcbf702aacf9d Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/fork_branch-diagram-after-commit.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/forking.png b/2022/2022-05-31_git-triology-part-1/slides/img/forking.png new file mode 100644 index 0000000000000000000000000000000000000000..09e317784ad2a2bcb2a0e5b08cf8ecc06eeb4602 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/forking.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/forking.svg b/2022/2022-05-31_git-triology-part-1/slides/img/forking.svg new file mode 100644 index 0000000000000000000000000000000000000000..362d98cde3f9d28de7da6d729cce13a65fbb8966 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/img/forking.svg @@ -0,0 +1,240 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="svg2" + width="512" + height="404" + viewBox="0 0 512 404" + sodipodi:docname="forking.svg" + inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> + <metadata + id="metadata8"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs6"> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path862" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path874" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path856" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4636"> + <rect + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:14.70300007;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4638" + width="457.06781" + height="457.06781" + x="-855.93219" + y="191.72882" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4636-5"> + <rect + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:14.70300007;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4638-3" + width="457.06781" + height="457.06781" + x="-855.93219" + y="191.72882" /> + </clipPath> + <clipPath + clipPathUnits="userSpaceOnUse" + id="clipPath4636-6"> + <rect + style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:14.70300007;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="rect4638-0" + width="457.06781" + height="457.06781" + x="-855.93219" + y="191.72882" /> + </clipPath> + </defs> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1848" + inkscape:window-height="1016" + id="namedview4" + showgrid="false" + inkscape:zoom="0.41306238" + inkscape:cx="614.44988" + inkscape:cy="412.11085" + inkscape:window-x="72" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:current-layer="svg2" /> + <g + id="g2264" + transform="matrix(0.66901186,0,0,0.66901186,-50.839779,-375.17846)"> + <image + y="0" + x="0" + id="image10" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAGUCAMAAAB0uWoAAAAArlBMVEUAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeyFOlAAAAOXRSTlMA fCRkbFjv31Sr/ZH5vj1gBdcRolDpyDINA/OLlm/kQTiFCcOduq4ZRnQtKHkezoHSW2kV3LZKprJy jHP9AAAO6ElEQVR42uzd63aiMBSG4S1OPSAigmgVtbZaq3Y8tNXaff83NvPXaVyrMAg7yffcwn6X GogJFcpZNe5EavgfBDfmjGOWyz2s7wluJ3j0WLi4QXAr4Zw18EhwG4EW82feE9xEi/XgrghuYOOy Jo4BQf4i1gZ+CN5AMGJtLAlyN2N9xAS567BGQoK8/WKNOAR5m7BGEAAhAEAAgAAAAQACAAQACAAQ ACAAyDOAZaVkBwSgVlAAHSpZEwFcgQAAAQACAAQACAAQACAAQADwI+H7eXesX6jpFMC0bopuO/Gp aGHL4+90CsAshxUVajZlRgCijAMqjj9iBCDNsrgCtjVGAPIkVJQTIwCBXJ+K4TMCEKlNxYgQgFAO FSJGAEJNqAhbRgBCLagIMwQg1YmK4HM6b1SyM9uiTUolB1D6iWy6nF1naABu6ccza3VyjXkB7Khs L9qcXmhkAO9Uui+2hMQAJBzJObDlI0BgAJ5PAjyyHeQF4FZJgqEljwLEBTC6IxmCMdtAWADuUtDG y88Dm6/MALzapfpzRdD4/xo+tPrTmjHEBdAiKFCIAOyGACyHACyHACyHACyHACyHACyHACyHACyH ACyHACyHACyHACyHACyHACyHACyHACyHACyHACyHAPQ3DIKn+/vw4+Nlu3Uc53WzGQxmM//hYbX6 7PV6jbu3TqdTfX+fTNbr378r+/1jkiSt1ni8WERREwEolDqiyj8jOjeby6+v03O7PZ/3+7vdodvt Huv1aRzXarWR57nMbNK28BICUI9olm5Ep+sj0u8fhRID+DaiwZURrVOOaKTliC7pEMBg0jo3L7RZ ZYoRlS9uXjq3qlv6H8Nql0Fr7vOMMtv2GbTntgLKZhMzmOCUrYCXKYMZIpysY7m7TKs9MEY9wAGr dmtQWsGIwRwRpTVgMEiX0uoxGGREaTUYDOJSWisGg8SU1iuDQeaUVshgkAWlhmWgSSqUGl4Em+SN UmszmGNGqUUM5vig1BIGY9QovQmDMXZEeBRos2ZuF4SeHBBtzypJblcEzwlES1ilSukFLiscCURb sspDbrfEewSiHVjFoQx2rBISSDZiBW+Y367gDYFgL5zfF/eYVT4JBLuydqMsKqwi4yZIuOKNVcY5 3rpeIRBszyprymJ1JSYQLGKVHmWxYZUvAsHmOf5yD1llRyBYzAruU45LyphArnvOc2ZHZU0BgVib XF/gtFllSyBWj1UiyubMKj6BWOs0S/cg25vFBoFY459vCXYir/+UZVPYhECs559uCX5deMzcy7Ip LCEQ6w97d9qcNgyEcXybw5QjJy1XUiiEI2dJSHPs9/9iJekwactq7SiaIq+e31sm4QUj25L+tn8W S4IvqzV+seOzsfBEEKvDRpFbw9vPq9ZniCjMlq0Ca3db1RqvNBGF2XLOkim96Zw0+M3EZ12xRxCr Rd5V26DCfzpCFGbLCUsWtDKv8V96iMJsmbLknH7rNvlfHZ9lhXOCSP1Qk+Axr7nyicIOCCIlJ8GH 9GpbGsyIwiy515Lg40wazIjCLPnOkomyT3SNKMwSNQk+Ez9DFGbJJy0JzlgwRRRmiZoEN1jQQhRm iZoEZyzoIwqzpM+SDr269RnMT46+AGI0qmln7AeWzBCF2XHJ2ml+LA9mRGF26EnwnNcgCrPlgiVz dat4h1T7iMJK5FTdunlkgV8UtkcQoweW7EsvgUIUZpGcBM/Wd4oQhZnUlZPgtY8RhRl1w5JbWqnw K0RhVg1ykuAWLyEKs2s7Z85eZWZEYYYNc5Lgus9DZLcRhZVGNedofeEzmB8RhZWGmgQv3TGiMNMy LQleGjCiMMvuWVLJu3N0SroGorCScCbBKyNGFGbZrnaE94/CzhCFlYSWBCMKS8A4t96aIAqz7Iwl bVpCFJYCJQlGFJYALQkOH4U1CSJzlT/J++IThW0hCiuHRyXfDB+FHRFE5ps7CV6ZIQozrO7e60MU lgIlCdYnCj2vf3xFEJcjfZXHPwobIworAy0J/lgUNkcUVgZaEowoLAGDIuXONaIws/QkOHwUNiWI ylBd5tWjMJ/SqEUQlar6qvfwUVifICpKEvzRKKyCKKwEMvevhCgsAcdqEqyvFtW6iMJKr52zaRs+ CvtCEJFdlozpjX8UduGYYEBErovN8Ic+g3nX0ZFARJQkGFFYCvbcSTCisBT0c6sN/yhshCgseloS jCgsAVoS/PEo7NbRkUA0tCQYUVgCvikXd4jCElAvWnpMEYWZ9JybBIePwq4JonHk3rBDFJYA+eK+ 0aWlAFFYG1FY5G7YPbtDFJaA/cIP87tCFGbRAUvqtK6DKMyiYYHHuISPwmYEkXhSkuAQUVgVUVjc Wu7lHURhKfha/BzdRBRmzzG7T+yIwhLgSoIlO4jC7PlcJAkOH4VNCOKgJcFhojBGFBazMUt2SeAZ hWWIwmLmSoIl3RqiMHMq7iQYUVgC5Gd5ZiQIG4UNCGKgJcGIwhLwyJIqyU59BvMCUVjEdopN7cNH YXWCGNRZsk2yA0Rh1jy7D+qIwlJw606CEYWloKckweGiMPk7YPNm71yo7yEKs2WfJQ8kCB2FtQk2 T0uCg0VhdURh0ZorSTCisAQoSXC4KOwOUVi0lCQYUVgK5CR4REuIwhLQUZJg0XdEYaa0WXJGTjfh orCMYOOUJFh2iCjMlIt3v9Srz4IMUVhJnbqTYERhKZgUX9cJH4XdEWxahSX3tIQoLAFaEowoLAFb LPlBLxCFJeCcJVX1T3wG8wxRWJwWysJuyCisiygsTidKEowoLAFT5ZI+aBTWQhQWJSUJfl8U1kAU Vkp6EizbQxRmhpYEvzMKa/vsOSwINkhPghGFJeBAudErbBQ2YMmYYIP0JBhRWAKa7qM5orAUtFhy SUuIwlKgJMH/JwobEWyMngSHjsImLPnF3t1tpQ0FYRgesQKithGlguAfWCoUBCsoc/83Vl093Rlx MmRP3N9zAZxkJSQzL6FGENFUSIIFj4jCvohz3Q92Npoo7A5RmD9SElxOFDYhiGigOyv3NFHYOaIw f4QkuKQo7JAgolV+EowoLAHZse417lNEYV+DkASL2qqT+RpRmDdSEowoLAF/OaRPEn0UNkYU5k1f qHQQhSVgzCEPJNFHYTNEYd48avczfbsobEEQgZQEZ/ShK0RhX8Ezh6zoY01NFPYHUZgzt9IRsY/C uhyyJIjlSUiCEYUlYCEuaO2jsFNEYb6ISbCsgyjsCxiJSbB9FHaGKMyXcBLcpTeIwhIwbHFAh94h CkuAlATrorAnRGFVIiXBiMISMBFm84jCEqBKgu2jsAZBHOv8JBhRWAp0SbB9FPZMEENPSII/tkIU VnU13XLOPgp7IYjhptDrm18RhVXdvpAEIwpLgJQEIwpLwKEuCbaPwtYEEUhJMKKwFNTzk2BEYQmQ kmBEYQmQkmBEYQlQJ8H2Udh3gvLtafMc+yjsgKB89/okWB+FfUMU5sYof5aLKCwF1wX/z31fE4Xd IgrzQp8E20dhI4LSTRVJj0EU1kIU5oSUBJcehRGU7krYzCIKS8BR/ut+EYWlYF14JjfSRGEDRGFO nAqHr/QobJ9gSz6SYH0U9gNRmA9zRZphEYU9IArzQUqCEYUlQEiCt/UdUViF3Smu3yZR2GV4Ag1b 8pEEW0dhLURhW3KSBBeIwk4QhblQ54BWRm8QhSWgzflbOURhCbgQbuAQhSXgwGIes7CLwvoEpdoT ei5EYQm455AmfcqLJgqbIwrz4ESxybOJwjJEYR4ISTCisAQokuCQY0RhFfVHOHcRhSXghUNe6R2i sARISTCisAQISTCisBRsbDYyE0RhFaVIgkMOEIVVk5QER4rCHgnKM2dFyxNQQxRWTTccsqHPGiIK q6YfwhYHUVgCpCQYUVgCXq2GcWtEYZX0U3Hcgu41UdgVojAtT0mwPgprIgrT8ZUEW0dhrwQKhknw Cb1DFJaApjCNjxaFrQjKMlMlwSHPqrCkgyhMxVcSXCAKe0QUpuMqCf6voYnCNhwyJShJg0Pa9AZR WAKylmKCbxmF7SEKU3CXBCMKqyopCbaJwv5qorAzgnLMFCGXaRQ2RRMU1VhIgiNGYa02QRmyumIf bxuFdXAXGNE5K54CbaOwUc5tKJThhBXTO9so7IiDzgl274GDNqSz1ERhTxzUwF3A7nVXrAhyjKOw OYetM4Ld6h0yK4Z3xlEYnXLYuEuwS8MzDuv0SGAdhVGfc6yaPYKduVlyjgEJzKMwuuBc1/ezb7AL k8Ep57ohgSoKky0ZPGn0bPvCMX3gisGTCUnsozDq1hn8uGyTQBmFye4Y/OiTQBuFydq4BPhRb5NA HYXJJgxezKiAQ+VcKcODgBfLjAo40u51blsMHrRuSaaPwmQLBg/uqJAD9Yf2fjHEN8oowCgKk7VX DLE1fpPAIAqT1K4Z4upMqaBhkVfOTTsMMdUvqLC6HIXJag2Gz/B2/gtR2HZ+/2SIZTkngVkUJsuO MA+I5GxIAssoTPaAr4EYOk0SGEdhsuHikqFcx4M2GfnX3r0uJwjEUAAO3qqIgm1tVexgARVp7UjV sXn/F+sLsD+YcS+S8z1DRtbdk+T3Du8L+xiPgyYFeYcU9IbC1BbdDGcBQ06HMykYCIWp7cN8FjDo 5F9uvQ4pmAuFqUWdZFh1QYdwmJQp3d9SEQoDKepDYWjwEONNEQoDIUbYBSvbGM3+sqlCYSBEpQiF gRAJxv7JpgqFgRCqUBhIMeAaK9wEiXFSZIJAiCv+B8q2VmwhAyF6XMfHN0CKKdcaEciQBpj9K1vG tQZYBKbdpkrJPo/rzTcEGqXdE3PmwHjdd1YIYuRCtPkaD5jZjQqYsUowiT3QYeszsysV8M1ggTsV sEee36rM+knwhcGmSUp2lejraqR9FYCfgGZaVwFHdHg307oK8BgaaVsFRD8Mdm1TsqnER6ChtlVA yNBM2yogZjDHwW6M5Y3BrieyKtox2LQKya4oZ7Bm9mH9UYjIw52wHcGuICcUGABuwfzzSK444yho Wla5tXe/wEIwg1a5e9N4ln3cCxtyOTyTkzZrnAW08/8Kh3uwo6l3xU4gjeZxh5y3KJPXYf9hDB9I kZJZ/9cg0gjgfru1AAAAAElFTkSuQmCC " + preserveAspectRatio="none" + height="404" + width="512" /> + <image + transform="matrix(0.52247993,0,0,0.52247993,692.85628,25.386292)" + clip-path="url(#clipPath4636)" + width="910" + height="380" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA44AAAF8CAMAAAC37BWdAAAAM1BMVEXwUDPwUDPwUDPwUDPwUDPw UDPwUDPwUDPwUDPwUDPwUDPwUDPwUDPwUDPwUDPwUDPwUDPNJiJ+AAAAEXRSTlMAIFCAsMAQQKDQ /5Bw4DDwYCESAgEAABWfSURBVHgB7N0HgoM8DkBhGYMFSgzc/7K7f29TQZ6YKO87wZS8UC3Lk0pD HqdfjXlIgldUNM/TYn9ZpttdizwY0q3aP9XbqxWJ9bbYu5bbKo8DneytSeVlIOVqb3T4esY62fum VfAS0mxfmh8RJLJ9LEt8KNm+ZS6Cn1UW+8xSJDhotW/aBsFPWqt9rq4SGrIdMAt+zrrZV7bQPWK2 Q6Yi6FAjPVIjly8daqRHajxgkY6okR7jutsJs3REjfQYldopu3REjfQYU6l2ypakC2qkRx5xvDVK T9RIjwGlzc5S6YIa6ZG7qm9N0hU10mM0ZbPzVumKGumRhxw87OhfIz3GtJjDJp1RIz1GksxlkFao kR5xN5dZWqFGesRoLlVaoUZ6xGY+SdCmRnpEMqdB0KZGeoSaUxa0qZEekc1pFjStkR7Jsf97ctRI j5jMaRG0qpEeydFL4K+RHkGOwWr09whypEZ6BDnGq5EeyRH+GukR5BivRm+PIEfNX0rU+JAeQY6z fUmpMXyPGM1pedCXglLjQ3oEL8lVd47UGKBH3C/xCrl9TanxET2CBVbFnyM1BugRxZz0Qd8JytT3 +D2imk8Rv/2lciyLXbdHMLoqR8iRHv2wX+BOzniVHOkRjD1erpIjPYJNASxEjvToh737uep6lRzp EWwoNwTJkR79cOs9Ri5fJUd6BJuRT1FypEc/5M4zVrcoOdKjH0q1U7YkLSQLkyM9+kHtlLs0sXtz pEd65G7OKG3cnDnSIz0yo2Mp0sbiy5Ee6ZFPxZakjWKuHOmRHvlU1FUa2WPmSI9wKKPnTNVhDp5j KvT4o3j8OBdpZoud47ot9IgTtNq31EHaWS10jutmRo84JW/2pS2XHs9Y9GlrpEecVHL1xHhCjZXj 2xrpEQ7DuNlHxl0aWy1cjm9rpEc4DHmyN6Y8SHtzwBzf1kiP8El6z3mefjHnfNfUe+2zPnWN9IhQ k0H0uWukR0Sam6VPXiM9ItDKLn32GukRcRaS6NPXSI8Is+xZn79GekSUVZYaoEZ6xHUNdoBGqJEe EWNiloaokR4RYp6kxqiRHnFJqx2iQWqkRwSYSaFRaqRHXM9sx2iQGukRAbax0zg10iOuZbCjNFCN 9Ijn+ty+oQF+qxg9ghpNg/1W9Ihr0M2O01g10iOuYbczNEiN9IgAe59rgBpP9VjHPOhv7nna6LEh rIudo3FqPNDjvCf5l/VW6bERZDtLg9To3+pEZ3psAFrtNA1Wo6NHSTM9wkknc9BwNTp6FF3oEQ7D ZC45YI2OHiXTI05KuZrXmE9IF6/R0aNu9Hgc0n2xXvTqNTp6XCs9HoI0zNU60svX6OixLPT4TUia x2qd6fVr9PRY6fG8VXXPv7pNv8u/G1T1/+zdB5bjKhCF4QJEKomw/82+nH3GbVfL9biH+jfQM5Y+ gSKkWrgvR/RYiJWXKCNoFHiU/33zmH0oX++fI0bBSlGi+qd3eF6lDKFR7tGzeXw950Ns/F6xXJk+ WzaOChpVPJ7m8bVyOAZLi6dP9LEu46igUcVjaubxy9x1jIV3yGAcFTTqeMz8NPPYz8q89A4ZjaOC RiWP0Tx++fzJ2hyrcdTXKPQoHx7N44zMvD5HNo4LamSu9w2P5jGFxozAMRnHJTVyu+tjJ+bRlcGM wTEbxyU18kWihnl8wMjMKByncVxSI7s71lcwjykMBuIYjOOSGusdn3Q3j3MwI3E8jOOKGvkkWYnN 41/1yIzFMRrHFTWyJ2HNPD7O/GA4DuO4okbuJOxg8/hbrjIeRzaOK2rkbw4J5nEOxuOYjaOCRnWO 5vFkBuTojeOSGiNJ88zmMUWG5BiMo4JGTY6ZzWOvjMnxNI76GmE5gnjsg0E5RuOov8FxOfLouBoB ODbjuOQGHyQtMIZH08hZZsU46m9wfY5yjxgaATg647joBnck7OCtPfbBuByzcVx0g3sSVnlnj6ky MMfLOK6pkQPJSsw7e4yMzDEYxzU1ciRZnnf2eDI0x2gcRRoVSvo7JLxHz1AZRxiNPElU5X09ugHO kY3joho56v8T0T1GBufYz2Ec19MoudVhHi/G4/iQL8M4LqiRC5lH/KmqYIech3FcSKNoeDSPB6Ny fCjNyPo7vCuqsAA0iodH85gZmeND7qraHCnhcOxj6eHcPFbGqMZYQrheWOTcnU15/4n6HHE0ckvm UXs1hBHjGX7viI1vKcZ4vibw2aVW46ivUThdNY83yKllPt56mGdlYWeYOXf6Zj4axzU0Mk/zqDQ4 HtPRD0rzkPGmeyrGcQ2N5lFncGzB0dOcaKWPQPcUjeMaGpm7efz0ZdU25UvvqOyn3jiuoNHGR4V7 jiPQa6VD61rcQ8ZRX6N4oUfz6FhcdPRyfugsfPRQNI6raGQ+knl8XmBp54e/35qNo65GhZo3j09r WmcCqcqnq8YRSKN8SmUeu4JGqcdgHNU1KlSyefxRp5pGotT4rYYzjrgaBa8jm8fGoi6V37MYRzyN co5ue4+ORR1Kbzk74winUc4xlN09XixpJCUcxTjiaZRz5N09HizJq43GzjjiaZRz3N3jYEFR75nu YhwBNco57u2xq+9CTj4tNo5yjTAct/Z4yX9NpeHxMo6IGuUcd/ZYWNDUfIGkGkdIjXKO+B5V99Wh e6ezG0dIjXKO+3pkQUX3OaDTOGJqlHPc1aNjQV73heBmHEE1yjlu6jGzIO0h2RlHuUZQjnt6vIS/ pSqQyzjKNaJy3NJj4PcL2i+RHMZRrhGW444eD34/rz0mD+Mo14jLEd+jyq7a1c9YnXGUa8TliOhR n6P+9VxvHCE1Cjju7ZHfb+j/2WAc8TVKOMJ51OcY9f/sYRzxNYo44ntE4Djkf9I44moUcMT0qM9R VYhxxNco5Ajt0Tgaxz4YnyOoR32OQZ8jO+MIrFHAUeBxxBDyr/lwRkyPEo6HPkfOxhFVo4CjwGO8 /iMln+1DHu3KqnHU17gSRy4kyB/6Ho2jcQTTKOAo80ju0PcIyNHxY8ZRXyMOR6FHyhXJo4RjU3jL 0jiqagTgKPVIJ5JHFqTwlqVx1NUIwFHs0Q8cjyyoK3y+zjjqagTgKPbYG4zHyu83FRbNMo7KGgE4 ij2miuJRsgudCldyjKO2RgCOco8NxOPB71f1P9CTjOMXOSSNUo5ij31geAwsyKkv8ErGUXk+tiZH sUfPN9fSMkt0XMq3OYyj/HI+JkeA+x11me+sVu1lQaJxfF7mXTiKPTa+uUD3l1hS/+CFHOMoqO3D kYv+EUuuQGVDFmUdwTg+bfJGHKV738E3F5dZi9yROH/7yapxbFtxFHp0fHeZbi8oHxhSu/v/bRwn 78WRC8DwqDql9qqjMT3LOB67cWwkySOcPbKo4RQH42Ycn5V4N47nInP6k24vsqia9KZVxTg+y2/H sS9y77HR7V0s61DTyNM4PuvcjWNb5rjl6O46CytaGtkZR8HftSurD/HdzQXuPErnq+UjUwLjOHbj eJGwCPBkzsnSWqbX6/UzJ8zGkXfjmElYAbjV0Vnemei1UmBx3jgax1tetwsAHKmyvDbplWZjcYP+ mXE0jiTNI3Cc/J3aleh56Wq33dwxjsZxrPPiy6D7S4O/1zGfiPTlzkcfjKNxjOtwjCRI4cZVDN7R QzkcCq95GkeAjKP6s+4xhhB8/iUfwhmbyq0d49g241jxOapdAFafnRvHYzOOvA7Hkz6R42ULxlFw +d446vxSk/YaHkcyjl/Vd+PYl+HY6SOlATs4Gkcam3H0qzwk1+hDBdzB0Tiem3E8VzluFfpUlVds knH8OrcZx7rKrD7Tp+owW804PhT34siJRF0oc9VFp6vdOL5U3ozjXGMGOOmDVdTrOMaRyl4cI0ly +oMj/hpIglME45jGVhzZrXDFK9NH87xUoxvHl/N7cSwLHLJO+nAB9aqqcaSwFUd2Cr/QjZ+mwT8F Ock4vlPZiuMhPxfTn7uJi6j3OIwjlR04yn+1A0Djsovo1mQctT0CcJSvPuwVNKp5BNBoHKlsxJGL fKoKo5EoRdSLqsaRykYceQpGGQCN623T2sk4iio7cBR4LLAaiQLqTNU4UtmI4+iAGgX5AarROFLZ hyOPCahRkKv8v1WIjKO+R0SOzJfgaoiiRvwJ60XGUd8jKkcuib6oNwCNkhVuFBqZjKOyRwCO8mWb UmAFjRpdg7U7EhlHfI+aHJkPJ18bBkcjUQq6IMckMo74HpU5MpcuxyjXqN8FOTQaRypbcWSu18MQ 2c/BplFay0R7cgwE5lGBo6B6zky/l/J1PFpE11hg56nGkQo+R0kjVv5epnGERPtyPAnfoz5HeZAa U2Gl2gPGvThG0vdoHME0VtapTiLammOlFTwaR9M4SifanSOTnkfjaBqfr2FuHLu+R+MIpLF/XuP4 y6JxnKTv0TjiaBz8WkN8iyjTXxnHQgt7NI4wGpObZ+S3GjHkRP/MODbS92gccTU+X/Wy+3BE/rpY Qnb0kHHkru/ROKJoFP6kOc8Qjhhj439UY4whXDnTDzOOJy3q0TjCaByO7sk4DlrTo3GE0ciBjONd KyTNJT0aRxyNlYzjbftSS/oejSO+RsHOahwXWJysGEdkjYL9xzheLM+v5tE4AmkcyTg+lPW2vbu6 3KNxRNaocDA3jjw8vVqah2B6Uowjnkb5r2kcE3+rM702LkbhozzFOMJplN9yNI7E36vNryjO0lj+ KE8xjnAa5bccjWPlbzbOTj8oX6V993PtBY2jvd8ov+VoHCN/v3EE/8+/nHIOIbZ7tkIxjqtqlB/W s3H8/M7U4i/xsxyARwFH01huuWVtHCdrNgnW47h+yNE0Tn5IcsvROHbW7CBljwrf8exxe4193HNQ No7EqiVMjyXRk+YA1qh/4thy34Sjl/wlzTwBehyZnpeOrTUGlhR/KfxS/qVEazfUPtZ/QqwTXRZf aX5urNENvqMaYzxDCDPn7Gipst65mWfNBsF5LPLTJ1yNC2yaFmMsIQSfcybQb8Z2erfEqmU0j4VI 3yOSRseyBDp/x5lItX4NFldyWvrk8SQsj4VI7hFJI9R2qb/SnLnTJ3P5Csf3dYxYgn9d5cWaNZDt Lpj99y01Jv5f+9Xl3Sx7DmesfHPxCDM7/cnG8xySx5rojeaGGmnyCrV4XjfMYn0ocXx6YA/hqYHK ml0E5LHTWx37aaTI69Ri8N8yyTqFdWarlXA8BnqvNLbTmHi1Wrk6MsfEqiUYj5Xeze+mkTyvWCsz QXLUH3MmoXjM9HZxM40UeNXi5TA5ZtbsIBCPkd4vb6aRIi9cnAmQI0XWjEA8ZhIU19FoHJlH6Xgc M2vmMTw2kjT30kiDVy9mNI4UWbFCEB4vEjW20kgMUMxgHDsrNgjCoyNRZSuNxBBFB8WRTlasI3hs JGtupZEYpADFMTXW6yQAjyfJSltppMog1Q7EkTLr1QjA4yRhbSeNFBmmC4gjBdbLAXjsJOzYSSMd jFNJOBwpsloXre+RpIWdNFJgoGrC4Zgqa1VJ3yMgRwCN5BnRIwBHRY+RlvcYSVreSSM5hvQIwFHL Y8x0UwWfI7hGogrmEYejisfS6b4KPkdwjXQyVgWFo8L3e1tIdGsFnyO2RnIM1gXAUeVCxOFxvmPW SNpE1igoMlajA3Gk3D41MDqo7wqStLCXRsoMVkXiSOlUeO1sfY+OhJW1NdrwyBcSR6Ieb7boAb+7 m0lY3EwjucFYjQTFkShHvqn2aBHDYyBh4BoFXQxWAONIlAt/vxo67HfpI8nK6BoFFezhEYAjUbqq wrf11t0fEok6l9dozwJwQOD4kBOKrGU6+OOzJ1FtQ42UwDw2EI4PJX9WfqN2hJxIv7LIByg7gkab r3ogjg/lq8Tx0qola+8PCrc6ygIa7XqO9FgbdLqFSc4hnDHG9rgK5swO4PisccI98DUK65WBSmRh eRyJ3i7ga5T3c3t3geg6CEBB9BKCJgT2v9nvrq/UIJ1ZQe3EoNDqtFer44fHrWNE/IU1Sn4veZKi ZguPF2tYJ9HIE52i2cJj0mUtaJwmo9nC49Z/qYpGbh4pPm+1VZ/QOE9W84THDhQRjRPldObwiMZR 4lkOHtE4WZoyPDb9P+/QOFmHThrPV4/y4hq3PF1Bc4bH9B8fNr+4xpbnq2n48Nix+dFSXl1juOjN hRCatXZ1zjHS0RUe62b0x5rLr67R1CsG300IYbfWOucKHPH45tbm9UvHVvLLa1S6IYEjhGCtjc65 Ckc8/jNng9GXQosfLaJxu+PQewih/UMn/+ng2Xt1zqX8JTSGjj+QduY/4txcYloOHv8YGn15wtDC 0bYERzyisf9SddNN822FIx7R2LefXPG6dSbCEY9o/J577rC7SXD8Eh7RGJ7+649wxCMaPxefP0V0 zX1tIjyeSqO59bJDnUvbMg0Aj2iUHWHCtoWjhEc0qoyw6rfPXe0iPJ5J4zHGc5PE/x3xiEbZMa4M VzjiEY1yY6xqalkrB49o1CCnIstKcnhE4zHIEvzu5WcB4BGNajNztCI8nkij7CAXq+zRgUc0ah3j x3+wgxUe0Sg3xgTRjSc5eETjJRyT7pavrJSDRzSqDLEEv+XWUXhEo/IFrXdc5JVJAHhEo4aYk+Zy T6sIj/0ap+dY/d2+TTbowCMalS8q+XG+yyo6l0c0qlzo0ejGecfCHHhEY99tWw26aUvNn2IOAB7R KHe7ffk6MitrOuIRjdd8iNXeCOQR2fgYj2i8egA+Xo/Bt8R2AHhE408tua+yBfVn9jX/HCdHPKJR JndXnQ1eFxf2P+2pyRQAPKJRqvmqirN7MHpLR9it+6tEHqviEY1a801yztkPtfBLu/3Q6lxiE3I8 ovG/tTxfSXRGj2iUyfN1iM7oEY2Sy7NlRXi8q0auVhlyxCMapZqnqnjRWT2iUTbfNL4FivwOuvM1 T9QiwuP9NXJ6ZAkAPKJRKmikQTyiUQGNNIhHNEoWjTSIRzRKCY00iEc0yhdGOGgUj/wOjprHLhkR HofQiMfoRXgcQSMeaxNNWURjZ0fJg+aMaNIiGjvzKY9Y3UXzFtHY28apkQbxiEYp1DxWZRFNXkRj bz5ynUrDeGTcOaRhMFovOkMRjf21AsabRnFqjYAsDYx4ROOXWspPbA0iPKLxeyHm51SsEeHxZ43k m8uPrm6HCI9/0khmf6TIsgURHv+ukXyLNT8gtx8iPP5XIx37eleSaVu8CI9v1UimbS7317FpK+Hx XxrpWOya8o1Kq12MCI/XaCQTdru6mnsrLtrlEOHxdhrJh7Bbuzrn3obQRWuXYER4ROPdcX6u2R8L n/pKkCiikWiYIhqJhimikWiYIhqHiSiikWiWTZoKGh8X0VLz31u9HhcR+TX/pbrosRFRcMOskURE R6z551J7FkYiCtbVrxRjMzpBRO8Bz1DpI+6WrtoAAAAASUVORK5CYII= " + id="image927" + x="-825.54236" + y="203.72882" /> + </g> + <path + style="fill:none;stroke:#000000;stroke-width:7.43499994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:7.43499994, 14.86999989;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend)" + d="m 398.45698,-229.21991 c 450.88829,-2.07771 512.89649,-2.07771 512.89649,-2.07771" + id="path851" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <flowRoot + xml:space="preserve" + id="flowRoot1891" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + transform="translate(-52.106759,-505.88167)"><flowRegion + id="flowRegion1893"><rect + id="rect1895" + width="362.91519" + height="54.779633" + x="-8.5593224" + y="446.7966" /></flowRegion><flowPara + id="flowPara1897" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">Original project</flowPara><flowPara + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" + id="flowPara2019" /></flowRoot> <flowRoot + xml:space="preserve" + id="flowRoot1891-6" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" + transform="translate(1053.0765,-501.84847)"><flowRegion + id="flowRegion1893-4"><rect + id="rect1895-5" + width="220.83046" + height="56.491547" + x="-8.5593224" + y="446.7966" /></flowRegion><flowPara + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" + id="flowPara2023">Your fork</flowPara></flowRoot> <flowRoot + xml:space="preserve" + id="flowRoot1891-9" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" + transform="translate(-241.12253,-896.22096)"><flowRegion + id="flowRegion1893-9" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"><rect + id="rect1895-4" + width="1294.1694" + height="102.71184" + x="-8.5593224" + y="446.7966" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" + id="flowPara2019-1">https://gitlab.com/[someone's-name]/<flowSpan + style="fill:#008000" + id="flowSpan2082">[repository-name]</flowSpan>/</flowPara></flowRoot> <flowRoot + xml:space="preserve" + id="flowRoot1891-9-8" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none" + transform="translate(824.56008,-896.22096)"><flowRegion + id="flowRegion1893-9-6" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"><rect + id="rect1895-4-0" + width="1294.1694" + height="102.71184" + x="-8.5593224" + y="446.7966" + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara + style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:26.66666603px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" + id="flowPara2019-1-4">https://gitlab.com/<flowSpan + style="fill:#ff0000" + id="flowSpan2080">[Your-name]</flowSpan>/<flowSpan + style="fill:#008000" + id="flowSpan2084">[repository-name]</flowSpan>/</flowPara></flowRoot> <g + id="g2264-9" + transform="matrix(0.66901186,0,0,0.66901186,973.83847,-375.17846)"> + <image + y="0" + x="0" + id="image10-7" + xlink:href="data:image/png;base64,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 kZJZ/9cg0gjgfru1AAAAAElFTkSuQmCC " + preserveAspectRatio="none" + height="404" + width="512" /> + <image + transform="matrix(0.52247993,0,0,0.52247993,692.85628,25.386292)" + clip-path="url(#clipPath4636-6)" + width="910" + height="380" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image927-5" + x="-825.54236" + y="203.72882" /> + </g> +</svg> diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/forking_detail-with-branches.png b/2022/2022-05-31_git-triology-part-1/slides/img/forking_detail-with-branches.png new file mode 100644 index 0000000000000000000000000000000000000000..f92a2e5130dc5f5480607a8eb2272364901467a8 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/forking_detail-with-branches.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/fox.png b/2022/2022-05-31_git-triology-part-1/slides/img/fox.png new file mode 100644 index 0000000000000000000000000000000000000000..d60776c995e3f83cb4081ed598ae45ca8778a1a8 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/fox.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/git_definition.png b/2022/2022-05-31_git-triology-part-1/slides/img/git_definition.png new file mode 100644 index 0000000000000000000000000000000000000000..0676fc7a299fae5c7c3389eed91e21fcb050c629 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/git_definition.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/icon-fork.png b/2022/2022-05-31_git-triology-part-1/slides/img/icon-fork.png new file mode 100644 index 0000000000000000000000000000000000000000..39d7ac227ea6351f8319fe28386e2920392b8be9 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/icon-fork.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/icon-live-demo.png b/2022/2022-05-31_git-triology-part-1/slides/img/icon-live-demo.png new file mode 100644 index 0000000000000000000000000000000000000000..4b9e6f031078329479b4cc8ea875b9657fda224a Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/icon-live-demo.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/icon-repo.png b/2022/2022-05-31_git-triology-part-1/slides/img/icon-repo.png new file mode 100644 index 0000000000000000000000000000000000000000..fb042be31721ba8711186b448444ae59d4b69038 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/icon-repo.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/linus.jpg b/2022/2022-05-31_git-triology-part-1/slides/img/linus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5b1cb08a41ecbd2962e253e56ee61f336f1a523b Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/linus.jpg differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/merge_GUI_detail.png b/2022/2022-05-31_git-triology-part-1/slides/img/merge_GUI_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..a3daa6c4356af3dd7efc7aa041744b982f0b34f8 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/merge_GUI_detail.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/merge_branch-to-branch.png b/2022/2022-05-31_git-triology-part-1/slides/img/merge_branch-to-branch.png new file mode 100644 index 0000000000000000000000000000000000000000..c31c0b441233223fad386d33b7800a063d8e0107 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/merge_branch-to-branch.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/merge_changes.png b/2022/2022-05-31_git-triology-part-1/slides/img/merge_changes.png new file mode 100644 index 0000000000000000000000000000000000000000..0c8718911beb15b0adad379dda0e5dd7ac6be5ff Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/merge_changes.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/merge_detail.png b/2022/2022-05-31_git-triology-part-1/slides/img/merge_detail.png new file mode 100644 index 0000000000000000000000000000000000000000..3e788295f42607e40c74254960782c7122aaba86 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/merge_detail.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/r3-training-logo.png b/2022/2022-05-31_git-triology-part-1/slides/img/r3-training-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..48a3aeaa54640a2bde1d4534dd9922d2ea90840c Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/r3-training-logo.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/remote-local_architecture.webp b/2022/2022-05-31_git-triology-part-1/slides/img/remote-local_architecture.webp new file mode 100644 index 0000000000000000000000000000000000000000..a89811917c35e4aa2781343b8caf664f0c156131 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/remote-local_architecture.webp differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/version-history_OneDrive.png b/2022/2022-05-31_git-triology-part-1/slides/img/version-history_OneDrive.png new file mode 100644 index 0000000000000000000000000000000000000000..f24e69c329a76cefc40f4da21d45e6878c0f4fb1 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/version-history_OneDrive.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_commit-button.png b/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_commit-button.png new file mode 100644 index 0000000000000000000000000000000000000000..23e775e6062402145a85286f595271723eee37e4 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_commit-button.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_commit-detail.png b/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_commit-detail.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b61f49861e50e2872f71818b315edc488861c5 Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_commit-detail.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_edit-file.png b/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_edit-file.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb18125fc8d764d0183985a6799877630580cfc Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_edit-file.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_select-branch.png b/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_select-branch.png new file mode 100644 index 0000000000000000000000000000000000000000..6fea344abd68a424d12c1cb5d84af9d9e8b4d1fa Binary files /dev/null and b/2022/2022-05-31_git-triology-part-1/slides/img/web-ide_select-branch.png differ diff --git a/2022/2022-05-31_git-triology-part-1/slides/index.md b/2022/2022-05-31_git-triology-part-1/slides/index.md new file mode 100644 index 0000000000000000000000000000000000000000..2e22a1125966dfbf32e38f303cd770d86a2d3c83 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/index.md @@ -0,0 +1,19 @@ +# Trilogy of Git Part 1 + +## May 31st, 2022 + +<div style="top: 6em; left: 0%; position: absolute;"> + <img src="theme/img/lcsb_bg.png"> +</div> + +<div style="top: 5em; left: 60%; position: absolute;"> + <img src="slides/img/r3-training-logo.png" height="200px"> + <br><br><br> + <h1>Contribute using Gitlab</h1> + <br><br><br> + <h4> + Laurent Heirendt<br><br> + laurent.heirendt@uni.lu<br><br> + <i>Luxembourg Centre for Systems Biomedicine</i> + </h4> +</div> diff --git a/2022/2022-05-31_git-triology-part-1/slides/list.json b/2022/2022-05-31_git-triology-part-1/slides/list.json new file mode 100644 index 0000000000000000000000000000000000000000..049189692443e5774f9f2883676a33c5a8c97422 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/list.json @@ -0,0 +1,15 @@ +[ + { "filename": "index.md" }, + { "filename": "versioning.md" }, + { "filename": "what_is_git.md" }, + { "filename": "repository.md" }, + { "filename": "gitlab.md" }, + { "filename": "forks.md" }, + { "filename": "commit.md"}, + { "filename": "branches.md" }, + { "filename": "web-ide.md" }, + { "filename": "merge.md" }, + { "filename": "syncFork.md" }, + { "filename": "best_practices.md" }, + { "filename": "thanks.md" } +] diff --git a/2022/2022-05-31_git-triology-part-1/slides/merge.md b/2022/2022-05-31_git-triology-part-1/slides/merge.md new file mode 100644 index 0000000000000000000000000000000000000000..c6311a79b8f9cfa3886d1b089878343c9a427bd9 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/merge.md @@ -0,0 +1,57 @@ +# New term: <font color="color:red">merge</font> + +* You have made changes on your branch +* Now you want your changes to be reflected on another branch </br>(most probably `develop` or `master`) + +<div style="position:absolute;left:60%;top:1em"> +<img src="slides/img/branch_merge-detail.png" height="800px" > +</div> + +You have to <font color="color:red">merge</font> the branches. + +**Remarks**: merging is directional - *Merge branch A to branch B* + +### The merge is initiated via so called **merge request** +* *Requesting* someone (from the original repository) to *merge* your changes. +* *merge request* is commonly abreviated as **MR** + +Your peers can comment on your changes in a merge request **review**! + + + +# Our state at the moment? + +<div style="position:absolute;top:2em" > +<img src="slides/img/fork_branch-diagram-after-commit.png" height="600px" > +</div> + +<div style="position:absolute;top:2em" class="fragment fade-in-then-out" data-fragment-index="1"> +<img src="slides/img/fork_branch-diagram-after-commit-with-back-arrow.png" height="600px" > +</div> + + + +# Time to practice! + +* After hitting the Commit button, you get redirected to the submission page for your merge request +* Please make sure that you see that you are proposing to merge your branch (version) into the develop branch. This is shown at the top of the page: +<!-- .element: class="fragment" data-fragment-index="1" --> +* Fill your merge request submission form and select an Assignee. +<!-- .element: class="fragment" data-fragment-index="3" --> +* Good practice is to select Delete source branch when merge request is accepted. (Why?) +<!-- .element: class="fragment" data-fragment-index="4" --> +* Under Changes tab, you can see your... changes :) +<!-- .element: class="fragment" data-fragment-index="5" --> + + +<div style="position:absolute;left:30%;top:4em" class="fragment fade-in-then-out" data-fragment-index="1"> +<img src="slides/img/merge_GUI_detail.png" height="720px" > +</div> + +<div style="position:absolute;left:30%;top:6em" class="fragment fade-in-then-out" data-fragment-index="2"> +<img src="slides/img/merge_branch-to-branch.png" height="100px" > +</div> + +<div style="position:absolute;left:5%;top:10em" class="fragment fade-in-then-out" data-fragment-index="5"> +<img src="slides/img/merge_changes.png" height="400px" > +</div> diff --git a/2022/2022-05-31_git-triology-part-1/slides/repository.md b/2022/2022-05-31_git-triology-part-1/slides/repository.md new file mode 100644 index 0000000000000000000000000000000000000000..04938227de8ec36475e5e92b4fa3cffdd41df277 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/repository.md @@ -0,0 +1,5 @@ +# New term: <font color="color:red">repository</font> + +<div style="position:relative;text-align:center;top:10em"> +Project folder keeping all your files and their history +</div> diff --git a/2022/2022-05-31_git-triology-part-1/slides/syncFork.md b/2022/2022-05-31_git-triology-part-1/slides/syncFork.md new file mode 100644 index 0000000000000000000000000000000000000000..52f36f8a32995f751fe9f2ddb5b6db9148305c61 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/syncFork.md @@ -0,0 +1,4 @@ +# Synchronize your fork + +<!-- TODO: do we need this slide? --> +<!-- Should it contain steps for deleting a branch --> \ No newline at end of file diff --git a/2022/2022-05-31_git-triology-part-1/slides/thanks.md b/2022/2022-05-31_git-triology-part-1/slides/thanks.md new file mode 100644 index 0000000000000000000000000000000000000000..542789e5512f6c5c808baa9e8995a55a2a41f761 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/thanks.md @@ -0,0 +1,8 @@ +# Thank you. + +<center><img src="slides/img/r3-training-logo.png" height="200px"></center> + +Contact us if you need help: + +<a href="mailto:lcsb-r3@uni.lu">lcsb-r3@uni.lu</a> + diff --git a/2022/2022-05-31_git-triology-part-1/slides/versioning.md b/2022/2022-05-31_git-triology-part-1/slides/versioning.md new file mode 100644 index 0000000000000000000000000000000000000000..4424fd72665e2b79c3ea9dc044b56c1d7a1b0920 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/versioning.md @@ -0,0 +1,100 @@ +# Using versioning system? +Basic feature: +* Ability to recover old versions + + +<div class="fragment"> +<div style="position:absolute; left:50%"> +<img src="slides/img/version-history_OneDrive.png" height="650px"> +</div> + +Common tools you are already using supporting "version control": +- Owncloud +- OneDrive +- DropBox +- ... + +Its clear **who** changed **which file** and **when** :) Huray! + +<div class="fragment"> + +### But something is missing, right? +- **What exactly** was changed? (which section or row?) +- **Why** it was changed? + + + +# Using versioning system? +## Manual file versioning + CHANGELOG + +<br> + +<div style="position:absolute; width:30%"> + +Your folder: +``` +my-document_v01.docx +my-document_v02.docx +... +my-document_v12.docx +CHANGELOG.txt +``` +</div> +<div style="position:relative; left:40%; width:60%""> + +CHANGELOG.txt: +``` +v01 -> v02 +- Chapter 1 updated to contain last findings +- fixing typo on page 3 + +v02 -> v03 +- rephrasing section 2 to adhere to standard +- add missing diagram +... +``` +</div> + +<br> +<br> + +<div class="fragment"> + +**What exactly** has changed? - Solved! + +**Why** it was changed? - Solved! +</div> +<div class="fragment"> +Really? + +note: overhead for doing this manually is huge +</div> + + + +# Using versioning system? +What happens if **3** people contribute? +``` +my-document_v01_AK.docx +my-document_v01_AK_BP.docx +my-document_v02_revised.docx +my-document_v02_LP_revised-and-approved.docx +my-document_v002_draft_LP-AK_do-not-touch.docx +... +my-document_v12_we-made-it.docx +CHANGELOG.txt +``` + +<div class="fragment"> + +What happens when **10** people contribute? +``` + _ ._ _ , _ ._ + (_ ' ( ` )_ .__) + ( ( ( ) `) ) _) + (__ (_ (_ . _) _) ,__) + `~~`\ ' . /`~~` + ; ; + / \ +_____________/_ __ \_____________ +``` diff --git a/2022/2022-05-31_git-triology-part-1/slides/web-ide.md b/2022/2022-05-31_git-triology-part-1/slides/web-ide.md new file mode 100644 index 0000000000000000000000000000000000000000..070d1d378ba410d556d43572e93f3a6ba74a428e --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/web-ide.md @@ -0,0 +1,44 @@ +# Time to practice! +To change content of a file: + +* Open Web IDE +<!-- .element: class="fragment" data-fragment-index="1" --> +* Select a branch you want to work on +<!-- .element: class="fragment" data-fragment-index="2" --> +* Edit file content +<!-- .element: class="fragment" data-fragment-index="3" --> +* Commit +<!-- .element: class="fragment" data-fragment-index="4" --> + * Hit Commit + * Select **Create a new branch** and type your branch name + * Leave the **Start a new merge request** checked + * Hit Commit + + +<div style="position:absolute;left:40%;top:1em" class="fragment fade-in-then-out" data-fragment-index="1"> +<img src="slides/img/commit_GUI_web-ide.png" height="600px" > +</div> + +<div style="position:absolute;left:40%;top:1em" class="fragment fade-in-then-out" data-fragment-index="2"> +<img src="slides/img/web-ide_select-branch.png" height="600px" > +</div> + +<div style="position:absolute;left:33%;top:1em" class="fragment fade-in-then-out" data-fragment-index="3"> +<img src="slides/img/web-ide_edit-file.png" height="400px" > +</div> + +<div style="position:absolute;left:50%;top:1em" class="fragment fade-in-then-out" data-fragment-index="4"> +<img src="slides/img/web-ide_commit-button.png" height="200px" > +</div> + +<div style="position:absolute;left:50%;top:10em" class="fragment fade-in-then-out" data-fragment-index="4"> +<img src="slides/img/web-ide_commit-detail.png" height="400px" > +</div> + + + +# What have we done? + +<div style="position:absolute;top:2em" class="fragment fade-in-then-out" data-fragment-index="1"> +<img src="slides/img/fork_branch-diagram-after-commit.png" height="600px" > +</div> diff --git a/2022/2022-05-31_git-triology-part-1/slides/what_is_git.md b/2022/2022-05-31_git-triology-part-1/slides/what_is_git.md new file mode 100644 index 0000000000000000000000000000000000000000..e6c92a3fdfda2ffb813f9f2d9ab256133c3e5e48 --- /dev/null +++ b/2022/2022-05-31_git-triology-part-1/slides/what_is_git.md @@ -0,0 +1,53 @@ +# What is `git`? + +`git` is a **version control system** (VCS) for tracking changes in computer files and coordinating work on those files among multiple people [1]. + +Designed and implemented in 2005 by **Linus Torvalds** + +<div style="position:relative; left:60%;"> +<img src="slides/img/linus.jpg"> +</div> + +<div style="position:absolute; left:50%;"> + +[1] *https://en.wikipedia.org/wiki/Git* +</div> + +<br> +<div class="fragment"> + +## The inventor of `git` + +<div align="center"> +<img src="slides/img/git_definition.png"> +</div> + +`I'm an egotistical bastard, and I name all my projects after myself. +First Linux, now git.` +Linus Torvald (2007-06-14) + + + +# What is the use of `git`? + +* Ability to recover old versions +<div style="position:absolute;left:45%;top:75%"> +<img src="slides/img/Git-logo.png"> +</div> + +<div class="fragment"> + +* Keep the changes you made over time (**history**) to every single line +* Annotate each change with description +* **Backtrack** (if necessary) and undo unwanted changes +* Contribute content in parallel +* Easily **add contributions** of your collaborators to the any version +</div> + +note: + +Other points to mention: + +* comes from SW development domain with >100 of people contributing to one project +* git shall not be considered as a nuisance, but as a tool that should help to track and trace the code. +* git is not to track performance. Not using it shows exactly the opposite.