There is a bug in go-git which leads to it reporting broken, absolute symlinks as modified whether they are or not: https://github.com/go-git/go-git/issues/253 To date, the controller checks whether the repo it has run an update on is Clean, and as a consequence will run into the bug above if a broken symlink is in the repo. The result is that it makes and pushes an empty commit every interval. To work around the problem, this commit adds a more careful check of the repo status. Each file reported as modified is validated by checking specifically that it's not a broken symlink: if `os.Lstat` says it's a symlink and `os.Stat` reports the (target) file is missing, it can be ignored. (Why not just ignore any missing file? Because a missing file might indicate some other problem, so better to let it fail). For convenience, I have moved a few procedures around so they can be used more readily by go tests. Signed-off-by: Michael Bridgen <michael@weave.works> |
||
---|---|---|
.. | ||
appconfig | ||
appconfig-expected | ||
appconfig-expected2 | ||
appconfig-setters-expected | ||
brokenlink | ||
pathconfig |