From 7c7fbd1c029557b28559e5613e5139accbaf9286 Mon Sep 17 00:00:00 2001
From: Adrian Stoica <stoica@ntnu.no>
Date: Wed, 9 Oct 2024 12:59:47 +0200
Subject: [PATCH] docs: add slides for the 8th lecture

---
 lectures/revealjs/08-git-plus-work.adoc | 223 ++++++++++++++++++++++++
 1 file changed, 223 insertions(+)
 create mode 100644 lectures/revealjs/08-git-plus-work.adoc

diff --git a/lectures/revealjs/08-git-plus-work.adoc b/lectures/revealjs/08-git-plus-work.adoc
new file mode 100644
index 0000000..6811077
--- /dev/null
+++ b/lectures/revealjs/08-git-plus-work.adoc
@@ -0,0 +1,223 @@
+= Advanced Git + Work Practices 
+:customcss: slides.css
+:icons: font
+:includedir: includes/
+:LECTURE_TOPIC: Advanced Git + Work Practices 
+:LECTURE_NO: 8th Lecture
+
+include::{includedir}header.adoc[]
+
+[.smaller-80][.center-paragraph]
+IT1901 Fall 2024 - {LECTURE_NO}
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Overview
+[.smaller-80]
+- Administrative issues
+- Group exercise 3
+- Fixing errors with Git
+- Special files
+- Work practices - GitLab
+- Summary
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Administrative issues
+
+== 1st individual exercise
+
+- most students done
+- we will finalize the feedback
+
+
+== Approaching Deadlines
+
+- Torsdag, 10. oktober / 23:59 
+** 2nd group deliverable
+
+- Torsdag, 14. november / 23:59 
+** 3rd group deliverable
+
+
+== Next Lecture
+
+* OOP principles and practices
+* modular software
+* REST APIs
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Group exercise 3
+
+- continuation of the previous 2 phases
+- half of the grade
+- important choices - extend functionality - vs alternative client
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Fixing errors with Git
+
+== Typical errors
+
+- staging the wrong files
+- wrong commit messsage
+- committing the wrong file(s)
+- deleting the wrong branch
+- deleting the wrong commit
+- committing sensitive files
+
+== Compounding the gravity
+
+- easier to fix before push
+- more issues with shared commits
+
+== Recommended approaches
+- not pushed
+    ** change history ok
+- pushed
+    ** fix issues and add a new commit
+    ** revert commit with `git revert ...`
+- changing history on pushed commits
+    ** only  if there is no other option
+    ** team is small enough to manage this
+
+
+== Relevant commands
+
+- `git restore --staged <file> ...` - to unstage
+- `git commit --ammend`
+- `git rebase -i HEAD~n`
+- `git revert <sha value>`
+- `git reflog` + `git reset --hard <sha value>` 
+
+
+== Relevant commands - aftermath
+
+- `git push --force-with-lease`  is a safer option that will not overwrite any work on the remote branch if more commits were added to the remote branch
+- `git pull .... --allow-unrelated-histories`
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Special files
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Git Special Files
+
+== Overview
+
+- .gitignore
+- .mailmap 
+- .gitkeep 
+- .gitattributes 
+
+== .gitignore
+
+- configure files to ignore 
+- https://git-scm.com/docs/gitignore
+- https://gitignore.io
+
+== .mailmap
+
+- map author / committer names and emails
+- https://git-scm.com/docs/gitmailmap
+
+
+== .mailmap
+
+``` 
+# Hallvard
+Hallvard Trætteberg <hal@ntnu.no> Hallvard Trætteberg <hal@ntnu.no>       
+Hallvard Trætteberg <hal@ntnu.no> Hallvard Traetteberg <hal@ntnu.no>
+Hallvard Trætteberg <hal@ntnu.no> hal <hal@ntnu.no>
+# Adrian
+George Adrian Stoica <stoica@ntnu.no> George Adrian Stoica <stoica@ntnu.no>
+George Adrian Stoica <stoica@ntnu.no> Adrian Stoica <stoica@ntnu.no>
+
+```
+
+== .gitkeep
+
+- keep in the repository empty folders
+- git keeps track of folders that have files 
+- not really a git special file 
+- widely used convention
+- typically we remove the file when we add other files to the folder 
+
+== .gitattributes
+
+- https://www.git-scm.com/docs/gitattributes
+- control git attributes per path
+- for example configure how EOL is handled
+
+== .gitattributes
+
+```
+# Set the default behavior, in case people don't have core.autocrlf set.
+* text=auto
+
+# Set linux endings for . files
+.bashrc text eol=lf
+.xinitrc text eol=lf
+
+# Explicitly declare text files you want to always be normalized and converted
+# to native line endings on checkout.
+*.c text
+*.h text
+
+# Declare files that will always have CRLF line endings on checkout.
+*.sln text eol=crlf
+
+# Denote all files that are truly binary and should not be modified.
+*.png binary
+*.jpg binary
+
+```
+[smaller-40]
+https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings
+
+
+== Other special files
+
+- GitLab
+** .gitlab-ci.yml 
+** description templates
+** `.gitlab/issue_templates` or 
+** `.gitlab/merge_request_templates` 
+- Eclipse Che
+** devfile.yaml
+
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Work practices - GitLab
+
+
+== Gitlab for agile
+
+* Issues
+* Milestones
+* Task lists
+* Labels
+* Boards
+* Quick actions
+
+== Using templates
+
+* Issue templates
+* Merge request templates
+
+
+[background-color = "#124990"]
+[color = "#fff6d5"]
+== Summary
+
+
+include::{includedir}footer.adoc[]
\ No newline at end of file
-- 
GitLab