Skip to content

Commit

Permalink
Add diff-advance exercise
Browse files Browse the repository at this point in the history
  • Loading branch information
BaoCaiH committed Feb 29, 2024
1 parent baeeb85 commit 51cdf50
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 0 deletions.
30 changes: 30 additions & 0 deletions diff-advance/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# 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 remove 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 a utilities file. Let's say we only want to test the pipelines because we're confidence enough with the utils to not test it (naughty-list programmer). We can do something like this:

`git diff --name-only | grep .pipeline | xargs cat`

This will:
1. Get a list of the changed files
2. Filter for only `.pipeline` files
3. `cat`/test only these files

## Relevant commands and options
- `git diff`
- `--word-diff`
- `--name-only`
- `grep`
- `xargs`
17 changes: 17 additions & 0 deletions diff-advance/setup.ps1
Original file line number Diff line number Diff line change
@@ -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" > step1.pipeline
Set-Content -Value "Step 3 after changes" > step3.pipeline
Set-Content -Value "Utilities after changes" > stepx.utils
git add .
git commit -m "Improve pipeline - name change"
23 changes: 23 additions & 0 deletions diff-advance/setup.sh
Original file line number Diff line number Diff line change
@@ -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"

0 comments on commit 51cdf50

Please sign in to comment.