Git Product home page Git Product logo

redo's People

Contributors

tharre avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

redo's Issues

Add tests

Add test cases to ensure redo keeps on working like expected.

New redo command: redo-env

While depending on environmental variables is by no means difficult at the moment, it can certainly be cumbersome. An alternative would be to create a new command, redo-env, that would expect environment variables as arguments and hash over their contents. If the hash changes between subsequent redo runs the target would be considered out-of-date.

Example:

redo-env CC

redo fails if directories disappear

$ redo
redo  all
(build.c:309): redo: failed to get realpath() of /usr/lib/clang/3.7.0/include/stddef.h: No such file or directory
(build.c:140): redo: invoked .do script ./default.do failed: 1

Clang was updated to 3.8.0 and thus the directory of the dependency disappeared. redo should just declare the dependency out-of-date in that case instead of failing.

Port redo to windows

This won't be trivial, as redo depends on a lot of POSIX features like the shell. But it's not impossible either.

Stop calling mkdir() so often

Currently, mkdir() is called thousands of times because we call mkpath() unnecessarily. This is bad for performance.

Implement parallelism

redo-ifchange foo bar

should build foo and bar in parallel.

Additionally, redo should support the jobserver protocol like apenwarr's implementation does.

Support multiple outputs properly

redo should provide some mechanism to catch all output files of certain commands or "broken" compilers (like javac). A fork of apenwarr's redo has already implemented a interesting mechanic to do so (see here for an explanation).

Note that even while this issue remains unfixed you can still manage multiple outputs with redo, it's just not as good as it should be.

Improve error handling

  • redo shouldn't abort if files in .redo/ have been corrupted if it can be avoided. Corrupted files should just be deleted.
  • Error messages should always print out readable (relative to REDO_ROOT) paths.

Change magic number generation

Using rand() for generating the magic numbers is bad because it only guarantees 2^15 different values.

Possible solutions:

  • ship our own random number generator (needless complexity, existing implementations?)
  • don't use random numbers but just increment by 1 (additional state)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.