Before a pull request (PR) for devonfw-ide is ready for review, this definition of done (DoD) should be satisfied. Please note that external contributors are not strictly required to address all of these points as we love to get contributions and do not want to scare people from contributing with too much constraints. However, chances to get your change merged quickly are higher if you address all the following points.
-
❏ Your PR and the issue follows our best-practices:
-
❏ PR title is of the form
#«issue-id»: «brief summary»
(e.g.#921: fixed setup.bat
). -
❏ PR top-level comment summarizes what has been done and contains link to addressed issue(s).
-
❏ PR is linked with the issue(s) that it implements and resolves (see sidebar, click on
Development
and enter issue ID) - to archive this addfixes #«issue-id»
to your PR summary. -
❏ PR and issue(s) have suitable labels (OS-specific like
windows
,macOS
, orlinux
as well as other aspects likecommandlet
,plugins
,urls
, or tool specific labels such aseclipse
orjava
) -
❏ Issue is set to
In Progress
and assigned to you (should actually be done before you start your implementation). See also here. -
❏ Milestones are typically assigned by PO (Jörg) but have to be set before issues and PRs get closed. In case your issue is only addressed by a change in
ide-mirrors
/ide-urls
or inide-settings
repository, please already assign the according milestone (switch toclosed
tab underMilestone
).
-
-
❏ All checks have passed. Otherwise if a check failed (red cross) you need to click the
Details
link, read the logs and fix the problem.-
❏ The build and all automated tests succeeded. If failed and you clicked on
Details
add read the logs to find the error. -
❏ The contributors license agreement (CLA) is signed by all contributors of the PR.
-
❏ Git-Gardian did not report any security issue
-
-
❏ The feature branch of the PR is up-to-date with the
main
branch. If you seeThis branch is out-of-date with the base branch
in the PR click theUpdate branch
button to fix (or manually merge with themain
from upstream locally and push your changes). In case you seeThis branch has conflicts that must be resolved
instead, you need to resolve conflicts. Very simple conficts may be resolved in the browser on github. But as a general recommendation you should resolve the conflicts locally with proper merge tool support and rerun tests before you push the merged changes. -
❏ You followed all coding conventions
-
❏ You have already added the issue implemented by your PR in CHANGELOG.adoc to the next open release (see milestones or maven.config). If there is no issue for your PR consider creating it or directly link the PR itself. Please note that the CHANGELOG shall only reflect public changes relevant for end-users. So e.g. if we implement a story and then add another PR as bugfix or improvement to the same story before the bug was ever released, we do not need to document this in the CHANGELOG to avoid spam and confusion.
-
❏ In case your PR adds a new tool
«tool»
as commandlet there are the following additional checks:-
❏ A new
UrlUpdater
named«tool»UrlUpdater
has been added to the according«tool»
package. -
❏ A new commandlet named
«tool»
has been added that allows to install and launch the given software. -
❏ The tool can be installed automatically (when creating a new project with
ide create «project-name»
via settings git repo), viaide install «tool»
or via the commandlet callide «tool» «args»
. -
❏ The tool is installed locally to
$IDE_HOME/software
(and$IDE_ROOT/_ide/software
). There are very few tools as exception to this rule likeDocker
that extendGlobalToolCommandlet
. -
❏ The tool can be configured locally inside
$IDE_HOME/conf
and not from a global location (e.g. in$HOME
). Note: If a tool reads configuration files from the users home directory this is not given as two IDEasy projects using the same tool then would read the same config so one installation would influence the other. -
❏ The help page displays information about the commandlet and its properties (CLI parameters) explaining how to use it properly. There are no warnings logged in the help output (like
Cound not find key 'cmd-gcviewer' in ResourceBundle nls.Ide.properties
). Therefore add proper help texts for all supported languages here. -
❏ The new tool is added to the table of tools in LICENSE.asciidoc with its according licesne. If that license is not yet included, the full license text needs to be added.
-
❏ The new commandlet installs potential dependencies automatically (e.g.
getCommandlet(«DependentTool».class).install()
in overriddeninstall
method). -
❏ The variables
«TOOL»_VERSION
and«TOOL»_EDITION
are honored by your commandlet so if present that edition and version will be downloaded and installed (happens by default but important if you implement custom installation logic). -
❏ The new commandlet is tested on all plattforms it is availible for. Assuming you are using Windows, testing for Linux can be done with WSL or Virtual Box and for MacOS we have a virtual cloud instance.
-