I’ve tracked it down, so you don’t have to.
When creating an archive, GNU tar monitors the file it’s reading. If the file’s mtime has changed, it’s reporting that “file changed as we read it”, as defined in create.c in the source code.
Tar’s man page doesn’t say anything about tar system exit codes, but a relevant piece of documentation can be found on-line.
Depending on tar version, it returns different exit codes.
- tar-1.13 and earlier: 1 or 2
- tar-1.14: == 0
- tar-1.15: == 0
- tar-1.17: == 1 (change)
- tar-1.19: == 1
The change was recent enough that as of November 2008, you can be still encountering both behaviors.