Releases: r-lib/usethis
usethis 2.1.3
Modified a test to ensure that intermittent GitHub rate limiting does not lead to ungraceful failure on CRAN.
usethis 2.1.2
git_default_branch_rename() no longer errors on repos where README exists, but has no badge block.
git_default_branch_rediscover() prunes the defunct remote ref to the old default branch, e.g. origin/master.
Version 2.1.1 was never released. Version was advanced from 2.1.1 to 2.1.2 strictly for CRAN (re-)submission purposes.
usethis 2.1.0
Git default branch support
usethis has a more sophisticated understanding of the default branch and gains several functions to support default branch renaming.
git_branch_default()has been renamed togit_default_branch(), to place
it logically in the new family of functions. The old name still works, but
that won't be true forever.git_default_branch()is much more diligent about figuring out the default
branch. Instead of only consulting the local repo, now we integrate local info
with the default branch reported by theupstreamororiginremote, if
applicable.- This is intended to surface the case where a project has renamed its default
branch and the local repo needs sync up with that.
- This is intended to surface the case where a project has renamed its default
git_default_branch_rediscover()is a new function that helps contributors
update their local repo (and personal fork, if applicable) when a project/repo
renames its default branch.git_default_branch_rename()is a new function that helps a repo owner
rename the default branch (both on GitHub and locally).git_default_branch_configure()is a new function to set the new Git
configuration optioninit.defaultBranch, which controls the name of the
initial branch of new local repos.git_sitrep()exposesinit.defaultBranchand surfaces the more
sophisticated analysis ofgit_default_branch().
Other GitHub-related changes
-
git_sitrep()andgh_token_help()try even harder to help people get on the
happy path with respect to their GitHub PAT (#1400, #1413, #1488, #1489,
#1497). -
The minimum version of gh has been bumped to help / force more people to
upgrade to the gh version that supports current GitHub PAT formats
(@ijlyttle, #1454). -
use_github_file()is a new function related touse_template(). Instead of
starting from a local file,use_github_file()grabs the contents of an
arbitrary file on GitHub that the user has permission to read. It supports
targeting a specific branch, tag, or commit and can follow a symlink (#1407).
use_github_file()now powersuse_github_action()and friends. -
use_github_release()is much more diligent about using any information left
behind bydevtools::submit_cran()ordevtools::release(). Specifically,
this applies to determining which SHA is to be tagged in the release. And this
SHA, in turn, determines the consulted versions of DESCRIPTION (for package
version) and NEWS.md (for release notes) (#1380). -
use_release_issue()also takes bullets fromrelease_questions(),
for compatibility withdevtools::release(). -
git_vaccinate(),edit_git_ignore(), andgit_sitrep()are more careful to
consult, reveal, and set thecore.excludesFilesetting in user's Git
configuration (#1461). -
use_github_action_check_full()has been removed. It's overkill for the
majority of R packages, which are better off withuse_github_actions()or
use_github_action_check_standard()(#1490). -
use_github_pages()anduse_pkgdown_github_pages()use a new method for
creating an empty, orphangh-pagesbranch. This is necessary due to new
GitHub behaviour, where it has become essentially impossible to refer to the
empty tree (#1472). -
use_github()can create repositories with"internal"visibility, a feature
that exists within GitHub Enterprise products (#1505).
Package development
-
use_readme_[r]?md()no longer includes CRAN installation instructions in the
initial template; instead, we only include GitHub-based install instructions
or otherwise prompt the user to update instructions (#1507). -
use_import_from()is a new function that puts@importFrom pkg fun
directives into a package in a consistent location (@malcolmbarrett, #1377). -
DESCRIPTIONfiles generated by usethis no longer includeLazyDataby
default, as per new CRAN checks; instead,LazyDatais now added the first
time you useuse_data()(@malcolmbarrett, #1404). -
use_tidy_eval()has been updated to reflect current recommendations for
using (and therefore exposing) tidy eval in other packages (@lionel-, #1445). -
use_pkgdown()automatically uses Bootstrap 5 if the pkgdown version supports
it (anticipated for pkgdown 2.0.0). -
use_lifecycle()now importslifecycle::deprecated()(#1419). -
use_code_of_conduct()now requires acontactargument to supply contact
details for reporting CoC violations (#1269). -
use_package()no longer guides the user on how to use a dependency when no
change was made (@malcolmbarrett, #1384).
Aimed at the tidyverse team
These functions are exported for anyone to use, but are aimed primarily at the maintainers of tidyverse, r-lib, and tidymodels packages.
-
use_tidy_dependencies()is a new function that sets up standard dependencies
used by all tidyverse packages, except those that are designed to be
dependency free (#1423). -
use_tidy_upkeep_issue()is a new function similar touse_release_issue()
that creates a checklist-style issue to prompt various updates (#1416). -
use_tidy_release_test_env()has been deleted since we no longer recommend
including test environments incran-comments.md. There's no evidence that
CRAN finds it useful, and it's annoying to keep up-to-date (#1365). -
use_tidy_github_labels()is the new name foruse_tidy_labels()(#1430). -
use_tidy_github_actions()takes over foruse_tidy_ci(), which is now
deprecated.
User-level configuration
-
"usethis.overwrite"is a new option. When set toTRUE, usethis overwrites
an existing file without asking for user confirmation if the file is inside
a Git repo. The normal Git workflow makes it easy to see and selectively
accept/discard any proposed changes. This behaviour is strictly opt-in
(#1424). -
Functions that provide code to load packages in your
.Rprofilenow use
rlang::check_installed()to make sure the package is installed locally
(@malcolmbarrett, #1398). -
edit_rstudio_prefs()andedit_rstudio_snippets()should work now on
case-sensitive OSes, due to a path fix re: the location of RStudio's config
files (@charliejhadley, #1420).
usethis 2.0.1
-
All functions that require a package now ask you if you'd like to install it.
-
Added
edit_template()for opening and creating files ininst/templates
(for use withuse_template()) (@malcolmbarrett, #1319). -
use_article()now creates the file in thevignettes/articles/(#548). -
use_lifecycle()has been updated for changes in our lifecycle workflow
(#1323). -
use_tidy_pkgdown()has been renamed touse_pkgdown_github_pages()since
the function is useful for anyone who wants to automatically publish to GitHub
pages, not just the tidyverse team (#1308). -
use_release_issue()includes a bunch of minor improvements. Most
importantly, for initial CRAN release we now include a number of common
things that CRAN checks for that aren't inR CMD check. -
use_readme_rmd(),use_readme_md(),use_tidy_contributing(), and
use_tidy_support()use updated logic for determining theOWNER/REPOspec
of the target repo (#1312).
usethis 2.0.0
Adoption of gert and changes to Git/GitHub credential handling
Usethis has various functions that help with Git-related tasks, which break down into two categories:
- Git tasks, such as clone, push, and pull. These are things you could do with
command line Git. - GitHub tasks, such as fork, release, and open an issue or pull request. These
are things you could do in the browser or with the GitHub API.
We've switched from git2r to the gert package for Git operations (https://docs.ropensci.org/gert/). We continue to use the gh package for GitHub API work (https://gh.r-lib.org).
The big news in this area is that these lower-level dependencies are getting better at finding Git credentials, finding the same credentials as command line Git (and, therefore, the same as RStudio), and finding the same credentials as each other. This allows usethis to shed some of the workarounds we have needed in the past, to serve as a remedial "credential valet".
Under the hood, both gert and gh are now consulting your local Git credential store, when they need credentials. At the time of writing, they are using two different even-lower-level packages to do this:
- gert uses the credentials package (https://docs.ropensci.org/credentials/)
- gh uses the gitcreds package (https://gitcreds.r-lib.org/)
Even now, gert and gh should discover the same credentials, at least for github.com. In the future, these two packages may merge into one.
Git/GitHub credential management is covered in a new article:
Managing Git(Hub) Credentials
The main user-facing changes in usethis are:
- usethis should discover and use the same credentials as command line Git.
- usethis should be able to work with any GitHub deployment. While github.com is the default, GitHub Enterprise deployments are fully supported. The target GitHub host is determined from the current project's configured GitHub remotes, whenever possible.
As a result, several functions are deprecated and several other functions have some deprecated arguments.
- Deprecated functions:
use_git_credentials()git_credentials()github_token()
- Functions with (deprecated arguments):
create_from_github()(auth_token,credentials)use_github()(auth_token,credentials)use_github_links()(host,auth_token)use_github_labels()(repo_spec,host,auth_token)use_tidy_labels()(repo_spec,host,auth_token)use_github_release()(host,auth_token)
The switch to gert + credentials should eliminate most credential-finding fiascos. Gert also takes a different approach to wrapping libgit2, the underlying C library that does Git operations. The result is more consistent support for SSH and TLS, across all operating systems, without requiring special effort at install time. More users should enjoy Git remote operations that "just work", for both SSH and HTTPS remotes. There should be fewer "unsupported protocol" errors.
GitHub remote configuration
Usethis gains a more formal framework for characterizing a GitHub remote configuration. We look at:
- Which GitHub repositories
originandupstreampoint to - Whether you can push to them
- How they relate to each other, e.g. fork-parent relationship
This is an internal matter, but users will notice that usethis is more clear about which configurations are supported by various functions and which are not. The most common configurations are reviewed in a section of Happy Git.
When working in a fork, there is sometimes a question whether to target the fork or its parent repository. For example, use_github_links() adds GitHub links to the URL and BugReports fields of DESCRIPTION. If someone calls use_github_links() when working in a fork, they probably want those links to refer to the parent or source repo, not to their fork, because the user is probably preparing a pull request. Usethis should now have better default behaviour in these situations and, in some cases, will present an interactive choice.
Default branch
There is increasing interest in making the name of a repo's default branch configurable. Specifically, main is emerging as a popular alternative to master. Usethis now discovers the current repo's default branch and uses that everywhere that, previously, we had hard-wired master.
git_branch_default() is a newly exported function that is also what's used internally.
use_course(), use_zip(), and create_download_url() all have some support for forming the URL to download a .zip archive of a repo, based on a repo specification (e.g. OWNER/REPO) or a browser URL. These helpers now form a URL that targets HEAD of the repo, i.e. the default branch.
Changes to Git/GitHub functionality
The default Git protocol is now "https" and we no longer provide an interactive choice, by default, in interactive sessions. As always, a user can express a preference for "ssh" in individual function calls, for an R session via use_git_protocol(), and for all R sessions via the usethis.protocol option (#1262).
pr_resume() is a new function for resuming work on an existing local PR branch. It can be called argument-less, to select a branch interactively.
pr_fetch() can also be called with no arguments, to select a PR interactively.
The owner argument is replaced by target, with a choice of the source (default) or primary repo.
pr_forget() is a new function for abandoning a PR you initiated locally or fetched from GitHub. It only does local clean up and, for example, doesn't delete a remote branch or close a PR (#1263).
pr_view() can now be called with no arguments. If the current branch is associated with an open PR, we target that and, otherwise, we offer an interactive selection.
pr_finish() deletes the remote PR branch if the PR has been merged and the current user has the power to do so, i.e. an external contributor deleting their own branch or a maintainer deleting a branch associated with an internal PR (#1150). It no longer errors if the PR branch has already been deleted (#1196).
pr_pull_upstream() is renamed to pr_merge_main() to emphasize that it merges the main line of development into the current branch, where the main line of development is taken to mean the default branch, as reported by git_branch_default(), of the source repo, which could be either upstream or origin, depending on the situation.
create_from_github() will only create a read-only clone, due to lack of a GitHub personal access token, if explicitly directed to do so via fork = FALSE.
create_from_github() and use_tidy_thanks() accept browser and Git URLs as the repo_spec argument, to be friendlier to copy/paste. When a URL is passed, the host is also extracted from it.
create_github_token() is a new name for the function previously known as browse_github_token() and browse_github_pat().
issue_close_community() and issue_reprex_needed() are two new functions for maintainers who process lots of GitHub issues. They automate canned replies and actions, e.g. labelling or closing (#940).
GitHub Actions is the preferred platform for continuous integration, because that is what the tidyverse team currently uses and maintains. Functions related to Travis-CI and AppVeyor are soft-deprecated to raise awareness about this change and to make it clear that, if substantial maintenance becomes necessary, we may elect to retire the function (#1169).
browse_github_actions() is a new function to open the Actions page of the respective repo on GitHub, similar to existing browse_*() functions (@pat-s, #1102).
use_github_pages() is a new function to activate or reconfigure the GitHub Pages site associated with a repository (#224).
use_tidy_pkgdown() implements the complete pkgdown configuration used by the tidyverse team (#224).
pr_sync() is defunct and can be replicated by calling pr_pull(), pr_merge_main(), then pr_push().
Licensing improvements
All use_*_license() functions now work for projects, not just packages.
use_apl2_license() (not use_apache_license()) and use_gpl3_license() no longer modify the license text (#1198).
use_mit_license() now sets the default copyright holder to "{package} authors". This makes it more clear that the copyright holders are the contributors to the package; unless you are using a CLA there is no one copyright holder of a package (#1207).
New use_gpl_license() and use_agpl_license() make it easier to pick specific versions of the GPL and AGPL licenses, and to choose whether or not you include future versions of the license. Both default to version 3 (and above).
New use_proprietary_license() allows your package to pass R CMD check while making it clear that your code is not open source (#1163). Thanks to @atheriel for the blog post suggesting the wording: https://unconj.ca/blog/copyright-in-closed-source-r-packages-the-right-way.html
use_lgpl_license() now uses version 3 (and above), and gains new version and include_future argument to control which version is used.
use_gpl3_license(), use_agpl3_license() and use_apl2_license() have been deprecated in favour of the new version argument to use_gpl_license(), use_agpl_license() and use_apache_license().
The name argument to use_mit_license() has been changed to copyright_holder to make the purpose more clear. The name argument has been removed from all other license functions because it is not needed; no other license makes an assertion about who the copyright holder is.
RStudio preferences
usethis is now fully cognizant of the [changes to RStudio preferences](https://blog.rstud...
usethis 1.6.3
Patch release to refactor usage of withr in the tests for forward compatibility with an upcoming withr release. All changes are within the usethis tests.
usethis 1.6.1
Patch release to align some path handling internals with an update coming in the fs package.
-
use_github_links()is a bit more clever about remotes (e.g.origin
vs.upstream), which makes it easier to make a PR that adds GitHub links for
a package you've forked. -
use_pkgdown()now.gitignores the destination directory and only adds the
destination directory to the config file if it departs from the default
(which isdocs/). -
use_tidy_ci()is now deprecated in favour ofuse_tidy_github_actions()
(#1098). -
use_github_action_check_standard()is a new intermediate workflow that
checks on more platforms than_release, but is less exhaustive than_full
(@jimhester). -
create_tidy_package()now uses an MIT license (@topepo, #1096).
usethis 1.6.0
GitHub actions
-
New
use_github_actions(),use_github_action_check_release(),
use_github_action_check_full(),use_github_action_pr_commands(),
to set up a GitHub Actions for a package (@jimhester). -
We now recommend GitHub Actions instead of Travis-CI or AppVeyor, and strongly
recommend upgrading your packages. -
Fix
use_github_action()URL parameter to ensure custom URLs are allowed.
(@coatless, #1065).
Package creation
-
create_package()gains aroxygenargument. IfTRUE(the default),
it adds aRoxygenNotefield to theDESCRIPTION(which means the first run
ofdevtools::check()will re-document the package, #963), and creates an
emptyNAMESPACE(which means you'll always need an explicit@export
if you want to export functions, #927). It also turns markdown processing
on by default (#911). -
use_rstudio()now sets theLineEndingConversiontoPosixso that
packages created using usethis always use LF line endings, regardless of
who contributes to them (#1002). -
In the
usethis.descriptionoption, you can now setAuthors@R = person()
directly, without having to wrap in additional layer of quotes. If setting
this in your.Rprofile, you'll need to useutils::person()since the utils
package isn't loaded until after your profile is executed.
PR helpers
-
A new article Pull request helpers
demonstrates how to use thepr_*()functions (@mine-cetinkaya-rundel, #802). -
pr_finish()checks that you don't have any local changes (#805), and can
optionally finish any PR, not just the current (#1040). -
pr_pause()andpr_fetch()now automatically pull to get latest changes
(#959, #960) and refresh RStudio's git pane (#706). -
pr_push()now works for a repository with no open pull requests
(@maurolepore, #990). -
pr_pull()gives more information about which files have merge conflicts
and automatically opens conflicted files for editing (#1056).
Other new features
-
New
rename_files()makes it easy to rename pairedR/andtest/files
(#784). -
New
ui_silence()makes it easier to selectively silence some UI output. -
New
use_agpl3_license()(@pachamaltese, #870). -
New
use_data_table()to set up a package for Import-ingdata.table
(@MichaelChirico, #897). -
use_latest_dependencies()replacesuse_tidy_version()as the new name
better reflect its usage (#771). -
New
use_lifecycle()helper to import the lifecycle badges for functions and
arguments in your package. Learn more at https://lifecycle.r-lib.org/. -
use_release_issuue()will include additional bullets if your package
includesrelease_bullets()function which returns a character
vector (and the package has been loaded withload_all()) (#941).
Minor improvements and bug fixes
-
When writing files, usethis now respects line endings. Default line endings
are taken from the.Rprojfile (if available), otherwise theDESCRIPTION,
otherwise the first file found inR/, then all else failing to your
platform default (#767). It should do a better job of preserving UTF-8 files
on windows (#969). -
browse_github()now always goes to the canonical GitHub site:
https://github.com/user/repo. This is slightly worse than the current
behaviour but makes the function more consistent across packages, and
considerably simplifies the implementation. -
browse_circle()opens the project dashboard on Circle CI. -
create_download_url()is a new helper for making "ZIP file download"
URLs suitable for use withuse_course()anduse_zip(), starting with the
URLs that mere mortals can usually get their hands on in a browser
(@fmichonneau, #406). -
create_package()no longer fails partway through if you have a malformed
usethis.descriptionoption (#961). -
create_package()will now create a package in a symlink to a directory
(#794). -
create_package()anduse_description()gain acheck_nameargument to
control whether to check for package names invalid for CRAN (@noamross, #883). -
edit_file()anduse_test()gain anopenparameter that allows you to
control whether or not the function is opened for editing by the user (#817). -
edit_rstudio_snippets()makes it more clear which snippet types are
allowed and that user's snippets mask the built-in snippets (@GegznaV, #885). -
git_sitrep()now reports project-specific user name and email, if set
(#837), and email(s) associated with your GitHub account (@dragosmg, #724). -
ui_yeah()andui_nope()allow you to override the default "yes" and
"no" strings and to opt-out of shuffling (@rundel, #796). -
use_circleci()uses correct delimiters in template (@jdblischak, #835). -
use_code_of_conduct()now generates an absolute link to code of conduct on
pkgdown website or original source to avoid R CMD check issues (#772). -
use_course()anduse_zip()are now equipped with some retry capability,
to cope with intermittent failure or the need for a longer connect timeout
(#988). -
use_data()automatically bumps R dependency to 2.10 (#962). -
use_data_raw()template quotes the dataset name correctly
(#736, @mitchelloharawild). -
use_description_defaults()now shows the default fields combined with
any options that you have set. -
use_dev_package()now supports packages installed from any remote type,
not just GitHub (@antoine-sachet, #1071). -
use_git()will now create initial commit if needed (#852). -
use_github_release()no longer fails if you have no news bullets (#1048). -
use_github_release()now tags the latest local commit instead of the latest
remote commit on the default branch (@davidchall, #1029). -
use_gpl3_license()now completes the license by providing additional
information in a file named LICENSE, just likeuse_mit_license()and
friends (@Cervangirard, #683). -
use_logo()now generates the correct href if the pkgdownurlis set
(@mitchelloharawild, #986). -
use_make()gains missing closing parenthesis (@ryapric, #804). -
use_markdown_template()no longer uses an unexported function in its
default arguments (@fmichonneau, #761). -
use_testthat()anduse_test()now work in projects, not just packages
(#1017). -
use_test()works on Windows when called without arguments (#901). -
use_tidy_issue_template()uses current github format (@Maschette, #756). -
use_travis(),use_travis_badge(), andbrowse_travis(), now default
toext = "com"since travis-ci.com is now recommended it over travis-ci.org
(@riccardoporreca, #1038). -
use_release_issue()reminds you to re-generateREADME.md,
if needed (#767). -
use_r()anduse_test()throw a clear error if multiple names are provided
(@strboul, #862). -
use_rcpp()anduse_c()now ensuresrc/contains at least one.cppor
.cplaceholder file, so that the package can be built (@coatless, #720). -
usethis.destdiris a new option that is consulted when deciding where to
put a new folder created byuse_course()orcreate_from_github()
(@malcolmbarrett, #1015).
Dependency changes
New Imports: cli, rematch2, rlang.
gh minimum version is bumped to v.1.1.0, due to changed behaviour around requests that return nothing.
clisymbols is removed from Imports.
usethis 1.5.1
This is a patch release with various small features and bug fixes.
Using the pipe %>% or the tidy eval toolkit in your package
-
The templates used by
use_pipe()anduse_tidy_eval()use a more robust
form of cross-reference links, linking to files rather than topics. This
should silence some warnings seen on Windows at install time
(#730, #731 @jmgirard). -
use_pipe()gains a logicalexportargument, so it can do the setup
necessary to use the pipe operator when it is re-exported
(export = TRUE, which is the default and preserves the previous behaviour)
and when it is not (export = FALSE) (#783).
Git, GitHub, and pull requests
-
use_github()removes newline\ncharacters from the description that
can cause the initial push to fail (#493, @muschellij2). -
git_sitrep()gives better feedback if we can't validate the GitHub PAT
(#725, @ijlyttle). -
create_from_github()sets remote tracking branch ofmasterto
upstream/master, when it creates (and clones) a fork (#792). -
pr_pause()can switch back to master even if there is no remote tracking
branch (#715, @cderv).
Build tools and continuous integration
-
use_tidy_ci()is updated for R 3.6, meaning that R 3.2 is the oldest version
of R supported through proactive testing. -
use_make()anduse_jenkins()add a Makefile and Jenkinsfile, respectively
(#501, @ryapric). -
use_circleci()creates a.circleci/config.yamlconfig file for CircleCI
(#703, @jdblischak).
Other
-
use_zip()is a new variant ofuse_course()that downloads and unpacks a
ZIP file, with less pedantic behaviour re: the destination directory. Both
functions now also work for ZIP files with MIME type
"application/x-zip-compressed"(#573). -
use_version()can detect"(development version)"in a NEWS header and
update it with an actual version (#768, @DavisVaughan).
Dependency changes
R 3.1 is no longer explicitly supported or tested. Our general practice is to support the current release (3.6, at time of writing), devel, and the 4 previous versions of R (3.5, 3.4, 3.3, 3.2).
fs minimum version is stated to be v1.3.0.
glue minimum version is stated to be v1.3.0.
usethis 1.5.0
Git, GitHub (and GitLab)
usethis gains several functions to inspect and manipulate the Git situation for the current project = repository. We also provide more control and visibility
into git2r's workings, especially around credentials (usethis uses git2r for all
Git operations).
-
git_sitrep()lets you know what's up with your Git, git2r and GitHub
config (#328). -
git_vaccinate()vaccinates your global (i.e. user-level) git ignore file.
It adds standard entries for R users, such as.Rhistoryand.Rdata. This
decreases the chance that you commit and push files containing confidential
information (#469). -
git_remotes()anduse_git_remote()are new helpers to inspect or modify
Git remote URLs for the repo associated with the active project (#649). -
git_protocol()+use_git_protocol()andgit_credentials()+
use_git_credentials()are new helpers to summon or set Git transport
protocol (SSH or HTTPS) or git2r credentials, respectively. These functions
are primarily for internal use. Most users can rely on default behaviour. Use
these helpers to intervene if git2r isn't discovering the right credentials
(#653). usethis honors theusethis.protocoloption, which allows you to
express a general preference for SSH vs. HTTPS.
Other improvements and bug fixes:
-
use_github()tries harder but also fails earlier, with more informative
messages, making it less likely to leave the repo partially configured (#221). -
use_github()andcreate_from_github()gain aprotocolargument
(#494, @cderv). -
create_from_github()pulls from upstream master in a fork (#695, @ijlyttle). -
use_release_issue()creates a GitHub issue containing a release checklist,
reflecting the standard practices of the tidyverse team (#338). -
use_github_release()creates a draft GitHub release using the entries in
NEWS.md(#137). -
use_gitlab_ci()creates agitlab-ci.yamlconfig file for GitLab CI
(#565, @overmar). -
use_git_config()now invisibly returns the previous values of the
settings. -
use_github_labels()has been rewritten be more flexible. You can now supply
a repo name, anddescriptions, and you can set colours/descriptions
independently of creating labels. You can alsorenameexisting labels
(#290).
GitHub pull requests
We've added experimental functions to work with GitHub pull requests. They
are aimed at both a maintainer (who may make, review, and modify pull
requests) and a contributor (who may make or explore pull requests).
-
git_sitrep()includes a section at the end aimed at describing "pull request
readiness". Expect that to develop and expand. -
pr_init(),pr_fetch(),pr_push(),pr_pull(),pr_finish(), and
pr_view()constitute the new family of helpers. They are designed to be
smart about the significance of remotes with the standard names oforigin
andupstreamand to facilitate both internal and external pull requests.
Partial file management
usethis gains tooling to manage part of a file. This is currently used for
managing badges in your README and roxygen import tags:
-
use_badge()and friends now automatically add badges if your README
contains a specially formatted badge block (#497):<-- badge:start --> <-- badge:end --> -
use_tibble()anduse_rcpp()automatically add roxygen tags to
to{package}-package.Rif it contains a specially formatted namespace
block (#517):## usethis namespace: start ## usethis namespace: end NULL
Unfortunately this means that
use_rcpp()no longer supports non-roxygen2
workflows, but I suspect the set of people who use usethis and Rcpp but
not roxygen2 is very small.
Extending and wrapping usethis
-
New
proj_activate()lets you activate a project, either opening a new
RStudio session (if you use RStudio) or changing the working directory
(#511). -
proj_get()andproj_set()no longer have aquietargument. The
user-facing message about setting a project is now under the same control
as other messages, i.e.getOption("usethis.quiet", default = FALSE)(#441). -
A new set of
ui_*()functions makes it possible to give your own code
the same user interface as usethis (#308). All use the glue and crayon and
packages to power easy interpolation and formatting. There are four families
of functions:- block styles:
ui_line(),ui_done(),ui_todo(),ui_oops(),
ui_info(). - conditions:
ui_stop(),ui_warn(). - questions:
ui_yeah(),ui_nope(). - inline styles:
ui_field(),ui_value(),ui_path(),ui_code().
- block styles:
-
with_project()andlocal_project()are new withr-style functions to
temporarily set an active usethis project. They make usethis functions easier
to use in an ad hoc fashion or from another package (#441).
Tidyverse standards
These standards are (aspirationally) used by all tidyverse packages; you are
welcome to use them if you find them helpful.
-
Call
use_tidy_labels()to update GitHub labels. Colours are less
saturated, docs is now documentation, we use some emoji, and performance is
no longer automatically added to all repos (#519). Repo specific issues
should be given colour#eeeeeeand have an emoji. -
Call
use_logo()to update the package logo to the latest specifications:
man/figure/logo.pngshould be 240 x 278, and README should contain
<img src="man/figures/logo.png" align="right" height="139" />.
This gives a nicer display on retina displays. The logo is also linked to the
pkgdown site if available (#536). -
When creating a new package, use
create_tidy_package()to start with a
package following the tidyverse standards (#461). -
NEWS.mdfor the development version should use "(development version)"
rather than the specific version (#440). -
pkgdown sites should now be built by travis and deployed automatically to
GitHub pages.use_pkgdown_travis()will help you set that up. -
When starting the release process, call
use_release_issue()to create a
release checklist issue (#338). -
Prior to CRAN submission call
use_tidy_release_test_env()to update the
test environment section incran-comments()(#496). -
After acceptance, try
use_github_release()to automatically create a
release. It's created as a draft so you have a chance to look over before
publishing. -
use_vignette()includes the a standard initialisation chunk with
knitr::opts_chunk$set(comment = "#>", collapse = TRUE)which should
be used for all Rmds.
New functions not already mentioned
-
use_devtools()(#624),use_conflicted()(#362), anduse_reprex()(#465)
help add useful packages to your.Rprofile. -
use_partial_warnings()helps the user add a standard warning block to
.Rprofile(#64). -
edit_r_buildignore()opens.Rbuildignorefor manual editing
(#462, @bfgray3). -
use_lgpl_license()automates set up of the LGL license (#448, @krlmlr). -
use_ccby_license()adds a CCBY 4.0 license (#547, @njtierney). -
use_rcpp_armadillo()anduse_rcpp_eigen()set up a package to use
RcppArmadillo or RcppEigen, respectively (#421, @coatless, @duckmayr). -
use_c("foo")sets upsrc/and createssrc/foo.c(#117). -
use_covr_ignore()makes it easy to ignore files in test coverage (#434). -
use_pkgdown_travis()helps you set up pkgdown for automatic build-and-deploy
from Travis-CI to GitHub Pages (#524). -
use_addin()does setup for RStudio addins (#353, @haozhu233). -
use_tutorial()creates a new interactive R Markdown tutorial, as implemented
by thelearnrpackage
(@angela-li, #645). -
use_article()creates articles, vignettes that are automatically added to
.Rbuildignore. These appear on pkgdown sites, but are not included with the
package itself (#281). -
use_citation()creates a basicCITATIONtemplate and puts it in the
right place (#100).
Other minor bug fixes and improvements
-
write_unionappends the novellines, but does not remove duplicates from
existing lines (#583, @khailper). -
use_rcpp("foo")now createssrc/foo.cpp(#117). -
use_data()gains aversionargument and defaults to serialization format
version 2 (#675). -
use_data_raw()accepts a name for the to-be-prepared dataset and opens a
templated R script (#646). -
browse_github()now falls back to CRAN organisation (with a warning) if
package doesn't have its own GitHub repo (#186). -
create_*()restore the active project if they error part way through,
and useproj_activate()(#453, #511). -
edit_r_profile()andedit_r_environ()now respect environment variables
R_PROFILE_USERandR_ENVIRON_USER, respectively (#480). -
use_description()once again prints the generated description (#287). -
use_description_field()is no longer sensitive to whitespace, which
allowsuse_vignette()to work even if theVignetteBuilderfield is
spread over multiple lines (#439). -
use_logo()can override existing logo if user gives permission (#454).
It also produces retina appropriate logos by default, and matches the
aspect ratio to the http://hexb.in/sticker.html specification (#499). -
use_news_md()will optionally commit. -
use_package()gains amin_versionargument to specify a minimum
version re...