Download .forge/skills/resolve-conflicts/scripts/validate-conflicts.sh from SaylorTwift/forgecode: direct link, hf CLI and curl.
- Browser
- Download file 3.1 kB
-
https://huggingface.co/SaylorTwift/forgecode/resolve/main/.forge/skills/resolve-conflicts/scripts/validate-conflicts.sh
- Command line
-
hf download hf://SaylorTwift/forgecode/.forge/skills/resolve-conflicts/scripts/validate-conflicts.sh
-
curl -L -o validate-conflicts.sh https://huggingface.co/SaylorTwift/forgecode/resolve/main/.forge/skills/resolve-conflicts/scripts/validate-conflicts.sh
3.1 kB
| # Validates that all Git conflicts have been resolved | |
| # Returns 0 if no conflicts remain, 1 otherwise | |
| set -euo pipefail | |
| # Colors for output | |
| RED='\033[0;31m' | |
| GREEN='\033[0;32m' | |
| YELLOW='\033[1;33m' | |
| NC='\033[0m' # No Color | |
| # Check if we're in a git repository | |
| if ! git rev-parse --git-dir > /dev/null 2>&1; then | |
| echo -e "${RED}Error: Not a git repository${NC}" >&2 | |
| exit 1 | |
| fi | |
| # Function to check for conflict markers in files | |
| check_conflict_markers() { | |
| local files_with_markers=() | |
| # Search for conflict markers in tracked files | |
| while IFS= read -r file; do | |
| if [[ -f "$file" ]] && grep -l '^<<<<<<<\|^=======\|^>>>>>>>' "$file" > /dev/null 2>&1; then | |
| files_with_markers+=("$file") | |
| fi | |
| done < <(git diff --name-only --diff-filter=U 2>/dev/null || git ls-files) | |
| if [[ ${#files_with_markers[@]} -gt 0 ]]; then | |
| echo -e "${RED}✗ Found conflict markers in the following files:${NC}" | |
| printf ' %s\n' "${files_with_markers[@]}" | |
| return 1 | |
| fi | |
| return 0 | |
| } | |
| # Function to check for unmerged paths | |
| check_unmerged_paths() { | |
| local unmerged_files | |
| unmerged_files=$(git diff --name-only --diff-filter=U 2>/dev/null || true) | |
| if [[ -n "$unmerged_files" ]]; then | |
| echo -e "${RED}✗ Found unmerged paths:${NC}" | |
| echo "$unmerged_files" | sed 's/^/ /' | |
| return 1 | |
| fi | |
| return 0 | |
| } | |
| # Function to check for both deleted and modified status | |
| check_deleted_modified() { | |
| local status | |
| status=$(git status --porcelain 2>/dev/null || true) | |
| # Look for DU (deleted by us) or UD (deleted by them) or DD (both deleted) status | |
| local deleted_modified=$(echo "$status" | grep -E '^(DU|UD|DD|UA|AU|AA)' || true) | |
| if [[ -n "$deleted_modified" ]]; then | |
| echo -e "${YELLOW}⚠ Found files with delete/modify conflicts:${NC}" | |
| echo "$deleted_modified" | sed 's/^/ /' | |
| return 1 | |
| fi | |
| return 0 | |
| } | |
| # Function to check merge state | |
| check_merge_state() { | |
| if git rev-parse MERGE_HEAD > /dev/null 2>&1; then | |
| echo -e "${YELLOW}⚠ Repository is still in merge state${NC}" | |
| echo " Run 'git merge --continue' after resolving all conflicts" | |
| return 1 | |
| fi | |
| if [[ -f .git/MERGE_HEAD ]]; then | |
| echo -e "${YELLOW}⚠ MERGE_HEAD file exists${NC}" | |
| return 1 | |
| fi | |
| return 0 | |
| } | |
| # Main validation | |
| echo "🔍 Validating conflict resolution..." | |
| echo "" | |
| all_clear=true | |
| if ! check_conflict_markers; then | |
| all_clear=false | |
| fi | |
| if ! check_unmerged_paths; then | |
| all_clear=false | |
| fi | |
| if ! check_deleted_modified; then | |
| all_clear=false | |
| fi | |
| if ! check_merge_state; then | |
| all_clear=false | |
| fi | |
| echo "" | |
| if [[ "$all_clear" == true ]]; then | |
| echo -e "${GREEN}✓ All conflicts resolved successfully!${NC}" | |
| echo "" | |
| echo "Next steps:" | |
| echo " 1. Review changes: git diff --cached" | |
| echo " 2. Run tests to validate" | |
| echo " 3. Commit: git commit" | |
| exit 0 | |
| else | |
| echo -e "${RED}✗ Conflicts still exist. Please resolve them before continuing.${NC}" | |
| exit 1 | |
| fi | |