-
Notifications
You must be signed in to change notification settings - Fork 899
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add diff-advance exercise #365
Changes from 3 commits
51cdf50
746e511
7da672e
16e9f82
44c32f4
cd7371f
e7d4bac
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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 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 a 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 | 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 | ||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Avoid redundancy by using synonyms or restructuring the sentence. - `cat`/test only these files
+ `cat`/test these files Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Clarify the example command to enhance understanding. - `git diff --name-only | grep .pipeline | xargs cat`
+ `git diff --name-only | grep '.pipeline' | xargs cat` Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||
## Relevant commands and options | ||||||||||||||||||||||||||||||
- `git diff` | ||||||||||||||||||||||||||||||
- `--word-diff` | ||||||||||||||||||||||||||||||
- `--name-only` | ||||||||||||||||||||||||||||||
- `grep` | ||||||||||||||||||||||||||||||
- `xargs` | ||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ensure proper markdown formatting by adding blank lines around the list. +
- `git diff`
- `--word-diff`
- `--name-only`
- `grep`
- `xargs`
+ Committable suggestion
Suggested change
|
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" -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" |
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" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider using "an" instead of "a" before "utilities file" as it sounds more natural.
Committable suggestion