If you want to help but don't know where to start, here are some low-risk/isolated tasks:
:help dev
(especially :help dev-api
).:help dev-ui
.:help dev-api-client
.ninja
for faster builds.
sudo apt-get install ninja-build
make distclean
make # Nvim build system uses ninja automatically, if available.
$NVIM_LOG_FILE
, if it exists.cmake --system-information
for build issues.[WIP]
pull request as soon as possible.master
into your PR when there are conflicts or when master
introduces breaking changes.ri
git alias:
[alias]
ri = "!sh -c 't=\"${1:-master}\"; s=\"${2:-HEAD}\"; mb=\"$(git merge-base \"$t\" \"$s\")\"; if test \"x$mb\" = x ; then o=\"$t\"; else lm=\"$(git log -n1 --merges \"$t..$s\" --pretty=%H)\"; if test \"x$lm\" = x ; then o=\"$mb\"; else o=\"$lm\"; fi; fi; test $# -gt 0 && shift; test $# -gt 0 && shift; git rebase --interactive \"$o\" \"$@\"'"
This avoids unnecessary rebases yet still allows you to combine related
commits, separate monolithic commits, etc.exec make -C build unittest
between each
pick/edit/reword.Pull requests have three stages: [WIP]
(Work In Progress), [RFC]
(Request
For Comment) and [RDY]
(Ready).
[RFC]
, i.e. you are requesting a review.[WIP]
to the PR title if you are not requesting feedback and the
work is still in flux.[RDY]
to the PR title if you are done with the PR and are only
waiting on it to be merged.For example, a typical workflow is:
[WIP]
PR where the work is not ready for feedback, you just want to
let others know what you are doing.[WIP]
in the title with [RFC]
.
You may add fix up commits to address issues that come up during review.[RFC]
in the title with [RDY]
.Follow commit message hygiene to make reviews easier and to make the VCS/git logs more valuable.
doc:
, test:
, foo.c:
,
runtime:
, ...
style
or lint
.Each pull request must pass the automated builds on travis CI, quickbuild and AppVeyor.
-Werror
, so compiler warnings
will fail the build.VALGRIND=1 make test
CC=clang make CMAKE_FLAGS="-DCLANG_ASAN_UBSAN=ON"
lint
build (#3174) checks modified lines and their immediate
neighbors. This is to encourage incrementally updating the legacy style to
meet our style guidelines.
lint
or style
) is sufficient as the subject line of
a commit that contains only style changes.QuickBuild uses this invocation:
mkdir -p build/${params.get("buildType")} \
&& cd build/${params.get("buildType")} \
&& cmake -G "Unix Makefiles" -DBUSTED_OUTPUT_TYPE=TAP -DCMAKE_BUILD_TYPE=${params.get("buildType")}
-DTRAVIS_CI_BUILD=ON ../.. && ${node.getAttribute("make", "make")}
VERBOSE=1 nvim unittest-prereqs functionaltest-prereqs
The auto-generated clang-scan report presents walk-throughs of bugs found by
Clang's scan-build static
analyzer. To verify a fix locally, run scan-build
like this:
rm -rf build/
scan-build --use-analyzer=/usr/bin/clang make
Coverity runs against the master build. To view the defects, just request access; you will be approved.
Use this commit-message format for coverity fixes:
coverity/<id>: <description of what fixed the defect>
where <id>
is the Coverity ID (CID). For example see #804.
View the PVS analysis report to see bugs
found by PVS Studio.
You can run scripts/pvscheck.sh
locally to run PVS on your machine.
To help review pull requests, start with this checklist.
Reviewing can be done on GitHub, but you may find it easier to do locally.
Using hub
, you can create a new branch with the contents of a pull
request, e.g. #1820:
hub checkout https://github.com/neovim/neovim/pull/1820
Use git log -p master..FETCH_HEAD
to list all
commits in the feature branch which aren't in the master
branch; -p
shows each commit's diff. To show the whole surrounding function of a change
as context, use the -W
argument as well.