fix: proper check when verifying a merge

This commit is contained in:
Bjarke Sporring
2026-01-21 11:39:30 +01:00
parent 39d8ace75c
commit c69b463f84
2 changed files with 21 additions and 16 deletions

View File

@@ -22,16 +22,16 @@ This creates a repository with two feature branches that have conflicting change
## Overview
A **merge conflict** occurs when Git cannot automatically combine changes because both branches modified the same part of the same file in different ways.
A **merge conflict** occurs when git cannot automatically combine changes because both branches modified the same part of the same file in different ways.
**When do conflicts happen?**
- ✅ Two branches modify the same lines in a file
- ✅ One branch deletes a file that another branch modifies
- ✅ Complex changes Git can't merge automatically
- ✅ Complex changes git can't merge automatically
- ❌ Different files are changed (no conflict!)
- ❌ Different parts of the same file are changed (no conflict!)
**Don't fear conflicts!** They're a normal part of collaborative development. Git just needs your help to decide what the final code should look like.
**Don't fear conflicts!** They're a normal part of collaborative development. git just needs your help to decide what the final code should look like.
## Your Task
@@ -249,7 +249,7 @@ For this challenge, we want **both settings**, so:
### Part 9: Mark the Conflict as Resolved
Tell Git you've resolved the conflict:
Tell git you've resolved the conflict:
```bash
# Stage the resolved file
@@ -267,7 +267,7 @@ All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)
```
Perfect! Git confirms the conflict is resolved.
Perfect! git confirms the conflict is resolved.
### Part 10: Complete the Merge
@@ -277,7 +277,7 @@ Commit the merge:
git commit
```
Git will open an editor with a default merge message. You can accept it or customize it, then save and close.
git will open an editor with a default merge message. You can accept it or customize it, then save and close.
**Done!** Your merge is complete!
@@ -436,7 +436,7 @@ git diff main..feature-branch
## Merge Tools
Git supports visual merge tools that make resolving conflicts easier:
git supports visual merge tools that make resolving conflicts easier:
```bash
# Configure a merge tool (one-time setup)
@@ -484,4 +484,4 @@ To start over:
.\setup.ps1
```
**Need help?** Review the steps above, or run `git status` to see what Git suggests!
**Need help?** Review the steps above, or run `git status` to see what git suggests!

View File

@@ -14,6 +14,7 @@
. "$PSScriptRoot\..\..\util.ps1"
$script:allChecksPassed = $true
$challengeRoot = "$PSScriptRoot\challenge"
Write-Host $PSScriptRoot
@@ -21,15 +22,13 @@ Write-Host $PSScriptRoot
# Check challenge directory exists
# ============================================================================
if (-not (Test-Path "challenge")) {
if (-not (Test-Path $challengeRoot)) {
Write-Error "Challenge directory not found." -ForegroundColor Red
Write-Host "Run .\setup.ps1 first to create the challenge environment." -ForegroundColor Yellow
exit 1
}
Push-Location "challenge"
if (-not (Test-Path ".git")) {
if (-not (Test-Path "$challengeRoot\.git")) {
Write-Error "Not a git repository." -ForegroundColor Red
Write-Host "Run ..\setup.ps1 first to create the challenge environment." -ForegroundColor Yellow
exit 1
@@ -58,7 +57,7 @@ if ($currentBranch -eq $mainBranch) {
# ============================================================================
# Check that merge is not in progress
# ============================================================================
if (Test-Path ".git/MERGE_HEAD") {
if (Test-Path "$challengeRoot/.git/MERGE_HEAD") {
Write-Fail "Merge is still in progress (conflicts not resolved)"
Write-Hint "Resolve conflicts in config.json, then: git add config.json && git commit"
exit 1
@@ -69,7 +68,7 @@ if (Test-Path ".git/MERGE_HEAD") {
# ============================================================================
# Check if config.json exists
# ============================================================================
if (-not (Test-Path "config.json")) {
if (-not (Test-Path "$challengeRoot\config.json")) {
Write-Fail "File 'config.json' not found"
Write-Hint "The config.json file should exist"
exit 1
@@ -122,8 +121,14 @@ if ($config.app.debug -eq $true) {
# ============================================================================
# Verify both branches were merged
# ============================================================================
$addTimeoutMerged = git log --oneline --grep="add-timeout" 2>$null | Select-String "Merge"
$addDebugMerged = git log --oneline --grep="add-debug" 2>$null | Select-String "Merge"
git merge-base --is-ancestor add-timeout main
$addTimeoutMerged = $LASTEXITCODE -eq 0
git merge-base --is-ancestor add-debug main
$addDebugMerged = $LASTEXITCODE -eq 0
Write-Host Timeout merged? $addDebugMerged
Write-Host Debug merged? $addDebugMerged
if ($addTimeoutMerged) {
Write-Pass "add-timeout branch has been merged"