Rizin
unix-like reverse engineering framework and cli tools
|
The libuv project welcomes new contributors. This document will guide you through the process.
Fork the project on GitHub and check out your copy.
Now decide if you want your feature or bug fix to go into the master branch or the stable branch. As a rule of thumb, bug fixes go into the stable branch while new features go into the master branch.
The stable branch is effectively frozen; patches that change the libuv API/ABI or affect the run-time behavior of applications get rejected.
In case of doubt, open an issue in the issue tracker, post your question to the libuv mailing list, or contact one of project maintainers on IRC.
Especially do so if you plan to work on something big. Nothing is more frustrating than seeing your hard work go to waste because your vision does not align with that of a project maintainers.
Okay, so you have decided on the proper branch. Create a feature branch and start hacking:
(Where v1.x is the latest stable branch as of this writing.)
Please adhere to libuv's code style. In general it follows the conventions from the Google C/C++ style guide. Some of the key points, as well as some additional guidelines, are enumerated below.
src/unix
, and declarations go into include/uv/unix.h
.src/win
, and related publicly exported types, functions and macro declarations should generally be declared in include/uv/win.h
.uv_
(or UV_
in case of macros).uv__
.Make sure git knows your name and email address:
Writing good commit logs is important. A commit log should describe what changed and why. Follow these guidelines when writing one:
A good commit log looks like this:
The header line should be meaningful; it is what other people see when they run git shortlog
or git log --oneline
.
Check the output of git log --oneline files_that_you_changed
to find out what subsystem (or subsystems) your changes touch.
Use git rebase
(not git merge
) to sync your work from time to time.
Bug fixes and features should come with tests. Add your tests in the test/
directory. Each new test needs to be registered in test/test-list.h
.
If you add a new test file, it needs to be registered in three places:
CMakeLists.txt
: add the file's name to the uv_test_sources
list.Makefile.am
: add the file's name to the test_run_tests_SOURCES
list.Look at other tests to see how they should be structured (license boilerplate, the way entry points are declared, etc.).
Check README.md file to find out how to run the test suite and make sure that there are no test regressions.
Go to https://github.com/username/libuv and select your feature branch. Click the 'Pull Request' button and fill out the form.
Pull requests are usually reviewed within a few days. If there are comments to address, apply your changes in a separate commit and push that to your feature branch. Post a comment in the pull request afterwards; GitHub does not send out notifications when you add commits.