diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6f8c3726..342e7eb7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,5 +1,8 @@ name: CI +env: + ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true + on: push: branches: [ master ] diff --git a/3-way-merge/README.md b/3-way-merge/README.md index 36853372..e50b0d4e 100644 --- a/3-way-merge/README.md +++ b/3-way-merge/README.md @@ -31,6 +31,6 @@ You again live in your own branch, this time we will be doing a bit of juggling - `git add` - `git commit` - `git commit -m` -- `git merge ` +- `git merge ` - `git diff ` - `git log --oneline --graph --all` diff --git a/diff-advance/README.md b/diff-advance/README.md new file mode 100644 index 00000000..fe2fa8d2 --- /dev/null +++ b/diff-advance/README.md @@ -0,0 +1,31 @@ +# Git Kata: Git Diff Advance + +## Setup + +Run `source setup.sh` or `bash setup.sh` or `./setup.sh` (or `.\setup.ps1` in PowerShell) + +## Tasks + +### Objectives: We will explore how git diff looks from different directions, `word-diff`, `name-only`, and a practical use case other than just to see diff. + +1. Current branch is `pipeline-improvement`. Use `git diff` to see how it is different from master. +2. Compare `git diff master` and `git diff master pipeline-improvement`. +3. Compare `git diff master pipeline-improvement` and `git diff pipeline-improvement master`. Notice what is being removed and added. +4. Include `--word-diff` with `git diff`. In addition to the default, word diff can also be used in different modes, i.e. `--word-diff=color`. See how it is different from normal diff. +5. Include `--name-only` option with `git diff` and see the result. +6. With `--name-only`, we get a list of changed files. This can be useful for example when we want to do selective compile/test of changed files instead of a full re-build, given that steps can be compiled/tested independently. In our exercise, there are 3 steps in a pipeline and an utilities file. Let's say we only want to test the pipelines because we're confident enough with the utils to not test them (naughty-list programmer). We can do something like this: + + `git diff --name-only master | grep '.pipeline' | xargs cat` + + This will: + 1. Get a list of the changed files + 2. Filter for only `.pipeline` files + 3. `cat`/test these files + +## Relevant commands and options + +- `git diff` +- `--word-diff` +- `--name-only` +- `grep` +- `xargs` diff --git a/diff-advance/setup.ps1 b/diff-advance/setup.ps1 new file mode 100644 index 00000000..928f78cc --- /dev/null +++ b/diff-advance/setup.ps1 @@ -0,0 +1,17 @@ +# Source utils +. ..\utils\make-exercise-repo.ps1 + +# Prep branches +Set-Content -Value "Step 1 before changes" -Path step1.pipeline +Set-Content -Value "Step 2 will remain unchanged" -Path step2.pipeline +Set-Content -Value "Step 3 before changes" -Path step3.pipeline +Set-Content -Value "Utilities before changes" -Path stepx.utils +git add . +git commit -m "Initial commit" + +git checkout -b pipeline-improvement +Set-Content -Value "Step 1 after improvement" -Path step1.pipeline +Set-Content -Value "Step 3 after changes" -Path step3.pipeline +Set-Content -Value "Utilities after changes" -Path stepx.utils +git add . +git commit -m "Improve pipeline - name change" \ No newline at end of file diff --git a/diff-advance/setup.sh b/diff-advance/setup.sh new file mode 100755 index 00000000..4bbcd06a --- /dev/null +++ b/diff-advance/setup.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Source utils +source ../utils/utils.sh + +# Prep repo +kata="git-diff-advance" +make-exercise-repo + +# Prep branches +echo "Step 1 before changes" > step1.pipeline +echo "Step 2 will remain unchanged" > step2.pipeline +echo "Step 3 before changes" > step3.pipeline +echo "Utilities before changes" > stepx.utils +git add . +git commit -m "Initial commit" + +git checkout -b pipeline-improvement +echo "Step 1 after improvement" > step1.pipeline +echo "Step 3 after changes" > step3.pipeline +echo "Utilities after changes" > stepx.utils +git add . +git commit -m "Improve pipeline - name change" \ No newline at end of file