fledge
fledge copied to clipboard
Wings for your R packages: Streamline the process of versioning R packages and updating NEWS
fledge
Smoother change tracking and versioning for R packages.
Do you want to provide a changelog (NEWS.md) more informative than “bug fixes and performance improvements” to the users of your package?
Ways to achieve that are:
-
Update NEWS.md right before release by reading through commit messages. Not necessarily fun!
-
Update the changelog in every commit e.g. in every PR. Now, if there are several feature PRs around that update the changelog, you’ll have a few clicks to make to tackle conflicts. Easy enough, but potentially annoying.
-
Use fledge to
- fill the
NEWS.md
for you based on informative commit messages, - increase the version number in
DESCRIPTION
(e.g. useful in bug reports with session information!), - create git tags (more coarse-grained history compared to top-level merges see fledge tag list on GitHub).
- fill the
Using fledge is a discipline / a few habits that is worth learning!
What you need to do in practice is:
- Add a hyphen
-
or*
at the beginning of important commit messages e.g. the merge or squash commits that merge a Pull Request. These are the commit messages that’ll be recorded in the changelog eventually! Exclude housekeeping parts of the message by typing them after a line---
.
- Add support for bla databases.
or
- Add support for bla databases.
---
Also tweak the CI workflow accordingly. :sweat_smile:
For informative commit messages refer to the Tidyverse style guide.
-
Run
fledge::bump_version()
regularly e.g. before every coffee break or at the end of the day or of the week. If you forgot to merge one PR runfledge::unbump_version()
, merge the PR with an informative squash commit message, then runfledge::bump_version()
and go drink that coffee! -
Run
fledge::finalize_version()
if you add to editNEWS.md
manually e.g. if you made a typo or are not happy with a phrasing after thinking about it. Even if you edit a lot, what’s been written in by fledge is still a good place-holder. -
Follow the recommended steps at release (see
vignette("fledge")
usage section).
These habits are worth learning!
Demo
Click on the image above to show in a separate tab.
Installation & setup
Once per machine
Install from CRAN using:
install.packages("fledge")
Install from cynkra’s R-universe (development version) using:
install.packages("fledge", repos = "https://cynkra.r-universe.dev")
Or install from GitHub (development version as well) using:
remotes::install_github("cynkra/fledge")
If you are used to making workflow packages (e.g. devtools) available for all your interactive work, you might enjoy loading fledge in your .Rprofile.
Once per package
-
Your package needs to have a remote that indicates the default branch (e.g. GitHub remote) or to be using the same default branch name as your global/project
init.defaultbranch
. -
If your package…
- is brand-new, remember to run
fledge::bump_version()
regularly. - has already undergone some development, it is not too late to jump on the train! Run
fledge::bump_version()
and thenfledge::finalize_version()
.
- is brand-new, remember to run
-
Add a mention of fledge usage in your contributing guide, as contributors might not know about it. A comment is added to the top of
NEWS.md
, but it tends to be ignored occasionally.
How to get started?
Check out the general vignette vignette("fledge")
, and for the whole game, the demo vignette vignette("demo")
. Feel free to ask us questions!