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:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user