mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Delete resolve_searchindex_conflicts.sh
This commit is contained in:
		
							parent
							
								
									487e59d130
								
							
						
					
					
						commit
						34a44453b6
					
				| @ -1,139 +0,0 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| # Script to resolve searchindex.js conflicts by accepting master branch version | ||||
| # This script is designed to handle merge conflicts that occur when PRs become | ||||
| # desynchronized due to the auto-generated searchindex.js file. | ||||
| #  | ||||
| # The searchindex.js file is automatically generated by the build process and | ||||
| # frequently causes conflicts when multiple PRs are waiting to be merged. | ||||
| # This script automatically resolves those conflicts by accepting the master | ||||
| # branch version of the file. | ||||
| # | ||||
| # Usage: resolve_searchindex_conflicts.sh <pr_number> <head_branch> <base_branch> | ||||
| 
 | ||||
| set -euo pipefail | ||||
| 
 | ||||
| # Validate arguments | ||||
| if [ $# -ne 3 ]; then | ||||
|     echo "Usage: $0 <pr_number> <head_branch> <base_branch>" | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| PR_NUMBER="$1" | ||||
| HEAD_BRANCH="$2" | ||||
| BASE_BRANCH="$3" | ||||
| 
 | ||||
| # Validate required environment variables | ||||
| if [ -z "${GITHUB_REPOSITORY:-}" ]; then | ||||
|     echo "Error: GITHUB_REPOSITORY environment variable is required" | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| if [ -z "${GH_TOKEN:-}" ]; then | ||||
|     echo "Error: GH_TOKEN environment variable is required" | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| echo "Resolving conflicts for PR #$PR_NUMBER (branch: $HEAD_BRANCH -> $BASE_BRANCH)" | ||||
| 
 | ||||
| # Get current directory for safety | ||||
| ORIGINAL_DIR=$(pwd) | ||||
| 
 | ||||
| # Create a temporary directory for the operation | ||||
| TEMP_DIR=$(mktemp -d) | ||||
| echo "Working in temporary directory: $TEMP_DIR" | ||||
| 
 | ||||
| cleanup() { | ||||
|     echo "Cleaning up..." | ||||
|     cd "$ORIGINAL_DIR" | ||||
|     rm -rf "$TEMP_DIR" | ||||
| } | ||||
| trap cleanup EXIT | ||||
| 
 | ||||
| # Clone the repository to the temp directory | ||||
| echo "Cloning repository..." | ||||
| cd "$TEMP_DIR" | ||||
| gh repo clone "$GITHUB_REPOSITORY" . --branch "$HEAD_BRANCH" | ||||
| 
 | ||||
| # Configure git | ||||
| git config user.email "action@github.com" | ||||
| git config user.name "GitHub Action" | ||||
| 
 | ||||
| # Fetch all branches | ||||
| git fetch origin | ||||
| 
 | ||||
| # Make sure we're on the correct branch | ||||
| git checkout "$HEAD_BRANCH" | ||||
| 
 | ||||
| # Try to merge the base branch | ||||
| echo "Attempting to merge $BASE_BRANCH into $HEAD_BRANCH..." | ||||
| if git merge "origin/$BASE_BRANCH" --no-edit; then | ||||
|     echo "No conflicts found, merge successful" | ||||
|      | ||||
|     # Push the updated branch | ||||
|     echo "Pushing merged branch..." | ||||
|     git push origin "$HEAD_BRANCH" | ||||
|     exit 0 | ||||
| fi | ||||
| 
 | ||||
| # Check what files have conflicts | ||||
| echo "Checking for conflicts..." | ||||
| conflicted_files=$(git diff --name-only --diff-filter=U) | ||||
| echo "Conflicted files: $conflicted_files" | ||||
| 
 | ||||
| # Check if searchindex.js is the only conflict or if conflicts are only in acceptable files | ||||
| acceptable_conflicts=true | ||||
| searchindex_conflict=false | ||||
| 
 | ||||
| for file in $conflicted_files; do | ||||
|     case "$file" in | ||||
|         "searchindex.js") | ||||
|             searchindex_conflict=true | ||||
|             echo "Found searchindex.js conflict (acceptable)" | ||||
|             ;; | ||||
|         *) | ||||
|             echo "Found unacceptable conflict in: $file" | ||||
|             acceptable_conflicts=false | ||||
|             ;; | ||||
|     esac | ||||
| done | ||||
| 
 | ||||
| if [ "$acceptable_conflicts" = false ]; then | ||||
|     echo "Cannot auto-resolve: conflicts found in files other than searchindex.js" | ||||
|     git merge --abort | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| if [ "$searchindex_conflict" = false ]; then | ||||
|     echo "No searchindex.js conflicts found, but merge failed for unknown reason" | ||||
|     git merge --abort | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| echo "Resolving searchindex.js conflict by accepting $BASE_BRANCH version..." | ||||
| 
 | ||||
| # Accept the base branch version of searchindex.js (--theirs refers to the branch being merged in) | ||||
| git checkout --theirs searchindex.js | ||||
| git add searchindex.js | ||||
| 
 | ||||
| # Check if there are any other staged changes from the merge | ||||
| staged_files=$(git diff --cached --name-only || true) | ||||
| echo "Staged files after resolution: $staged_files" | ||||
| 
 | ||||
| # Complete the merge | ||||
| if git commit --no-edit; then | ||||
|     echo "Successfully resolved merge conflicts" | ||||
|      | ||||
|     # Push the updated branch | ||||
|     echo "Pushing resolved branch..." | ||||
|     if git push origin "$HEAD_BRANCH"; then | ||||
|         echo "Successfully pushed resolved branch" | ||||
|         exit 0 | ||||
|     else | ||||
|         echo "Failed to push resolved branch" | ||||
|         exit 1 | ||||
|     fi | ||||
| else | ||||
|     echo "Failed to commit merge resolution" | ||||
|     exit 1 | ||||
| fi | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user