| 156 | } |
| 157 | |
| 158 | func getFilteredChangeMap( |
| 159 | directory string, |
| 160 | targetPath string, |
| 161 | currentTree, |
| 162 | desiredTree *object.Tree, |
| 163 | tags *[]string, |
| 164 | ) (map[*object.Change]string, error) { |
| 165 | |
| 166 | changes, err := currentTree.Diff(desiredTree) |
| 167 | if err != nil { |
| 168 | return nil, utils.WrapErr(err, "Error getting diff between current and latest", targetPath) |
| 169 | } |
| 170 | |
| 171 | changeMap := make(map[*object.Change]string) |
| 172 | for _, change := range changes { |
| 173 | if strings.Contains(change.To.Name, targetPath) { |
| 174 | checkTag(tags, change.To.Name) |
| 175 | path := filepath.Join(directory, change.To.Name) |
| 176 | changeMap[change] = path |
| 177 | } else if strings.Contains(change.From.Name, targetPath) { |
| 178 | checkTag(tags, change.From.Name) |
| 179 | changeMap[change] = deleteFile |
| 180 | } |
| 181 | } |
| 182 | |
| 183 | return changeMap, nil |
| 184 | } |
| 185 | |
| 186 | func checkTag(tags *[]string, name string) bool { |
| 187 | if tags == nil { |