From 0c6b4c9741649d35789fe0947bdbbc1a060e06b5 Mon Sep 17 00:00:00 2001 From: SID <158349177+0xsid0703@users.noreply.github.com> Date: Tue, 13 Jan 2026 18:14:10 -0800 Subject: [PATCH] [2.x] Fix watchTriggers to control what triggers instead of adding to fileInputs (#8525) When watchTriggers is explicitly set (non-empty), use only watchTriggers instead of combining them with fileInputs. This allows users to control what triggers the watch by setting watchTriggers. Fixes #7130 --- .../scala/sbt/internal/WatchTransitiveDependencies.scala | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/main/src/main/scala/sbt/internal/WatchTransitiveDependencies.scala b/main/src/main/scala/sbt/internal/WatchTransitiveDependencies.scala index 17582a184..80c804f58 100644 --- a/main/src/main/scala/sbt/internal/WatchTransitiveDependencies.scala +++ b/main/src/main/scala/sbt/internal/WatchTransitiveDependencies.scala @@ -135,7 +135,14 @@ private[sbt] object WatchTransitiveDependencies { triggers.flatMap(getDynamicInputs(_, trigger = true)) ) } - (inputGlobs ++ triggerGlobs ++ legacy(keys :+ scopedKey, args)).distinct.sorted + // If watchTriggers is explicitly set (non-empty), use only watchTriggers instead of combining with fileInputs + // This allows users to control what triggers the watch by setting watchTriggers + val result = if (triggerGlobs.nonEmpty) { + triggerGlobs ++ legacy(keys :+ scopedKey, args) + } else { + inputGlobs ++ triggerGlobs ++ legacy(keys :+ scopedKey, args) + } + result.distinct.sorted } private def legacy(keys: Seq[ScopedKey[?]], args: Arguments): Seq[DynamicInput] = {