2.9.0
* Warn if non-top target did not write anything.
Idea was borrowed from redo-sh.
* Clean up temporary files if got SIGINT or SIGTERM signals.
2.8.0
* Fix always-OOD .do-targets with nearby default.do.
2.7.0
* Proper .do file searching during source file determination.
2.6.5
* Fix file's executable bit check, which may lead to inadmissible
/bin/sh run in case of symbolic links presence.
* Fix proper mtime's nanoseconds storage.
2.6.4
* Fix possible NFS locking issue.
* Updated dependant libraries.
2.6.3
* Updated dependant libraries. Should fix workability on modern OpenBSD.
2.6.2
* Integration tests do not depend on non-portable "stat" command.
2.6.1
* Integration tests do not depend on Python or Git.
2.6.0
* Omit possible obtrusive error of non-existent .dep file opening of
the failed target.
2.5.0
* Prevent rare race in the code, where externally modified target
may panic the program.
2.4.0
* Continue regression fixing of redo-whichdo.
2.3.0
* Fix regressions in redo-whichdo happened after huge refactoring.
2.2.0
* Prefix target's output lines with the name of the target.
2.1.0
* Mistakenly path to .do file was not absolute and OS can refuse to
run it because it is not in $PATH.
2.0.0
* Huge quantity of performance optimisations.
* Fixed possible unexpected lock file closing.
* When resulting target has the same contents, it does not replace
already existing one. That was done previously. But now it also
copies the file's mode flags to the target (for example making it
executable).
* If redo-* command runs under control of another (top-level) redo,
then it does not parse the flags as options and treat each
argument as a target, allowing passing the targets with dashes in
the beginning.
* Prevented possible concurrent stderr writing by multiple running
targets.
* redo-depfix command now always rewrites dependency files and
calculates checksums of the files.
* Own binary format is used for dependency files (.dep), instead of
recfile (.rec) one. It is several times smaller and much faster to
parse. You must run redo-depfix to convert all existing
.redo/*.rec files to that binary format.
* redo-dep2rec command appeared, that can convert .dep to recfile on
stdout.
1.32.0
* Omit printing of the "resource deadlock avoided" warning when
trying to take the lock.
1.31.0
* Fixed possible race when target can be built more than once.
* Print out finished targets much more quickly.
1.30.0
* Fixed wrong OOD-cache value of source file dependency.
* Targets could be rebuilt without any reason.
1.29.0
* Fix possible error when two always-ed targets are run simultaneously.
* Updated dependant libraries.
1.28.0
* Do not remove .lock files, that leads to possible races between
running targets. Although nncp-cleanup lock can be used to
cleanup.
* Updated dependant libraries.
1.27.1
* Fixed lack of .redo.-prefix in temporary file names.
1.27.0
* Improved out-of-date check and .do files search performance,
because of caching their results.
1.26.0
* Debug output contained colour-related attribute even if
$NO_COLOR=1 was set.
* Updated dependant libraries.
1.25.0
* Target's lock file requires a token from the jobserver now. So
amount of simultaneously opened lock files depends on job slots
available.
1.24.0
* "redo-cleanup tmp" also removes temporary ($3) created
directories.
1.23.0
* redo-ifchange's -f option forces each target rebuilding. Similarly
to redo, it will parallelize the process.
* Inode's number is also stored as dependency information, just to
prevent possible ctime collision of two files.
* Performance optimization: do not use target's temporary output
file at all, if its hash equals to already existing target's one.
Just touch existing target file instead.
1.22.0
* "flock" locks replaced with POSIX "fcntl" ones. They could be more
portable.
* redo-depfix command appeared, that traverses through all .redo
directories and their dependency files, checks if corresponding
targets has the same content but different ctime/mtime values and
rewrites dependencies with that updated inode information.
* With $REDO_STOP_IF_MODIFIED=1 environment variable redo will stop
and fail if it meet externally modified file. By default user is
only warned about it, but building continues for convenience.
1.21.0
* $REDO_INODE_NO_TRUST is replaced with $REDO_INODE_TRUST
environment variable, that takes either "none", or "ctime" (the
default one), or "mtime" (new one). Check documentation's separate
page about that option.
1.20.0
Print warning message if both ifcreate and ifchange records were
discovered after the target is done.
1.19.0
* Skip target itself, when searching for corresponding .do file.
For example default.do must use ../default.do instead of the self.
1.18.0
* Fix regression of known OODs passing since 1.3.0, that leads to
rebuilding of already built targets.
1.17.0
* If redo* process is killed, then it sends SIGTERM to all his
children too, properly terminating the whole job queue.
1.16.0
* Non-existent targets are considered always out-of-date, as it should be.
* Do not panic if $REDO_LOGS=1 and we were unable to start the command.
1.15.0
* Explicitly check if $1 target is touched and then fail.
Previously we check if $1 was only altered.
1.14.0
* Fixed redo-ifcreate's targets proper relative paths to the target.
1.13.0
* Use .log-rec extension, instead of .log.rec, that won't collide
with already existing .log and .rec in .redo directory.
1.12.0
* Fix possible lack of success finish message printing if any of
targets fail.
1.11.0
* Fix nasty bug with incorrect .redo/tgt.rec files renaming.
1.10.0
* redo-cleanup now also cleans .redo/tgt.log.rec files.
* Recursive logs do not require .redo/tgt.rec existence anymore.
1.9.0
* Do not enable command line options not applicable to the command.
For example -j option is only applicable to redo and redo-ifchange
commands.
* -dry-run option is renamed to -n
* -logs option is renamed to -k
* -silent option is renamed to -s
* When stderr logs are kept, all environment variables, working
directory, command line arguments, start/finish times, duration,
participated PIDs, return codes are saved in corresponding
.redo/tgt.log.rec file. Some of them can be viewed with -c option
to redo-log.
* redo-log's -r option allows recursive, indented viewing of the
whole redo commands invocations for the given target in serialized
way.
1.8.0
* Fixed possibly wrong relative path record of the dependency,
when redo commands are run in different directory from the .do.
* Fixed possible failing in redo-sources if no .dep is found.
1.7.0
* Optional compatibility (through $REDO_MAKE={bmake|gmake}) with
either NetBSD's bmake or GNU Make jobserver protocols, being able
to tightly integrate goredo with the make.
1.6.0
* redo-affects command appeared, that shows all targets that will be
affected by changing the specified ones.
1.5.0
* redo-ood, redo-sources and redo-targets can optionally take list
of targets to apply the command on, to narrow the result.
* redo-sources mistakenly missed .do files in the output.
* redo-sources now recursively searches for all source files, not
the "first" depth level ones.
1.4.1
* Even more simpler statusline cleaning function.
1.4.0
* Fixed proper -xx and $REDO_TRACE workability, that previously was
not applied to all targets.
* Simpler statusline cleaning function, does not leading to
whitespace junk after long lines.
* Updated dependant libraries.
1.3.0
* Experimental redo-sources, redo-targets and redo-ood commands.
* Repetitive OOD determination optimization: pass all already known
to be OOD targets to redoing targets.
1.2.0
* Dependency files .dep extension changed to .rec, to reflect its
recfile format nature and editors file type better determination.
* Reduce number of file descriptors kept open (1 instead of 4) while
waiting for job slot token.
1.1.0
* redo-cleanup gained -dry-run option.
1.0.0
* "Size" is stored in the state, for faster OOD detection. Previous
goredo state files won't work.
* Setting of $REDO_INODE_NO_TRUST environment variable brings no
trust to file inode's information (except for its size), forcing
its checksum checking.
* redo-whichdo resembles apenwarr/redo's one behaviour more.
0.12.3
* Use an updated lukechampine.com/blake3 with possibly working
arm64 macOS fix.
0.12.2
* Try to fix failing lukechampine.com/blake3 on arm64 macOS.
* Fixed tests permissions in the tarball.
0.12.1
* Tarball uses vendor directory without $GOPATH overriding. goredo
and its dependencies anyway uses Go 1.12+ versions, that have
vendor-ing support.
0.12.0
* Do not forget to save even output-less target as a dependency.
* -debug option renamed to shorter -d.
0.11.0
* Previously $REDO_JOBS override even explicitly specified -j
option. Fix that behaviour -- command line options must precede
environment variables.
* BLAKE3 replaces BLAKE2b hashing algorithm for even better
performance.
0.10.0
* Initial tarballed release.