1
0
mirror of https://github.com/Prowlarr/Indexers.git synced 2025-12-19 18:48:24 +00:00

Fixed: detect new indexers before conflict resolution moves them

This commit is contained in:
ServarrAdmin
2025-08-16 09:37:50 -05:00
parent d61253ca99
commit e43d4b6923

View File

@@ -40,8 +40,6 @@ removed_indexers=""
added_indexers=""
modified_indexers=""
newschema_indexers=""
# Track indexers moved during conflict resolution
moved_new_indexers=""
BACKPORT_SKIPPED=false
GIT_DIFF_CMD="git diff --cached --name-only"
declare -A blocklist_map
@@ -512,6 +510,12 @@ pull_cherry_and_merge() {
fi
log "INFO" "cherrypicking Jackett commit [$pick_commit]"
git cherry-pick --no-commit --rerere-autoupdate --allow-empty --keep-redundant-commits "$pick_commit"
# Detect new indexers from this commit before conflict resolution
new_jackett_indexers=$(git diff --cached --diff-filter=A --name-only | grep "src/Jackett.Common/Definitions/.*\.yml$" || true)
if [ -n "$new_jackett_indexers" ]; then
log "INFO" "New indexers from Jackett: [$new_jackett_indexers]"
fi
has_conflicts=$(git ls-files --unmerged; git status --porcelain | grep "^UU\|^AA\|^DD\|^AU\|^UA\|^DU\|^UD" || true)
if [ -n "$has_conflicts" ]; then
resolve_conflicts
@@ -649,8 +653,6 @@ handle_yml_conflicts() {
mkdir -p "$(dirname "$new_def")"
# Use git mv so that Git tracks the file rename
log "INFO" "NEW INDEXER: Moving [$def] to [$new_def]"
# Track this as a new indexer
moved_new_indexers="$moved_new_indexers $new_def"
mv "$def" "$new_def"
# Then checkout "theirs" to accept Jackett's content
git checkout --theirs "$new_def" 2>/dev/null || true
@@ -682,13 +684,9 @@ handle_new_indexers() {
added_indexers=$(git diff --cached --diff-filter=A --name-only | grep ".yml" | grep -E "v[[:digit:]]+")
log "DEBUG" "New indexers detected (A filter + v[digit]+): [$added_indexers]"
# Combine regular added indexers with those moved during conflict resolution
all_new_indexers="$added_indexers $moved_new_indexers"
all_new_indexers=$(echo "$all_new_indexers" | xargs -n1 | sort -u | xargs)
if [ -n "$all_new_indexers" ]; then
log "INFO" "New Indexers detected: [$all_new_indexers]"
for indexer in ${all_new_indexers}; do
if [ -n "$added_indexers" ]; then
log "INFO" "New Indexers detected: [$added_indexers]"
for indexer in ${added_indexers}; do
base_indexer=$(basename "$indexer")
log "DEBUG" "Evaluating [$indexer] against BLOCKLIST with name [$base_indexer]"
# Check if the indexer is in the BLOCKLIST
@@ -841,9 +839,7 @@ cleanup_and_commit() {
fi
# Recalculated Added / Modified / Removed
staged_added=$(git diff --cached --diff-filter=A --name-only | grep ".yml" | grep -E "v[[:digit:]]+")
# Combine staged added with moved new indexers
added_indexers=$(echo "$staged_added $moved_new_indexers" | xargs -n1 | sort -u | xargs)
added_indexers=$(git diff --cached --diff-filter=A --name-only | grep ".yml" | grep -E "v[[:digit:]]+")
modified_indexers=$(git diff --cached --diff-filter=M --name-only | grep ".yml" | grep -E "v[[:digit:]]+")
removed_indexers=$(git diff --cached --diff-filter=D --name-only | grep ".yml" | grep -E "v[[:digit:]]+")
newschema_indexers=$(git diff --cached --diff-filter=A --name-only | grep ".yml" | grep -E "v$NEW_SCHEMA")