ifchange.go | 11 +++++++++++ diff --git a/ifchange.go b/ifchange.go index eb5f57929c6c66680938a508a672c406c5449f15ecf050e6f6962d87a25cb720..1ee2e5898be688ca4fd62e1e8ff46a17eb28c9d78b21ed7fc9e7559f2d616886 100644 --- a/ifchange.go +++ b/ifchange.go @@ -179,6 +179,17 @@ goto RebuildDeps } func ifchange(tgts []string, forced, traced bool) (bool, error) { + // only unique elements + m := make(map[string]struct{}) + for _, t := range tgts { + m[t] = struct{}{} + } + tgts = tgts[:0] + for t := range m { + tgts = append(tgts, t) + } + m = nil + jsInit() if !IsTopRedo { defer jsAcquire("ifchange exiting")