-
revdep_check()outputs a status message giving elapsed and estimated remaining time every 10 packages. -
revdep_check()is can now be resumed after a failure - this should be a big time saver if something goes unexpected wrong in the middle of the checks. You can resume a partial check withrevdep_check_resume()or blow away the cache so you can start afresh withrevdep_check_reset(). -
Package index caches for
revdep_check()now time out after 30 minutes. -
revdep_check_save_logs()has been removed. -
Experimental
revdep_email()to individual email each maintainer withR CMD checksummary results (#1014). -
All
revdep_functions now work like other devtools functions, taking a path to the package as the first argument.revdep_check()now saves its results to disk (so you can't accidentally lose them), and the other functions read from that cache. You will need to update your revdep check codes. -
revdep_check_print_problems()prints a bulleted list of problems, suitable for including in yourcran-comments.md. -
revdep_check_summary()has been removed - it never should have been part of the exported API. -
revdep_check_save_summary()now truncates individual problems to at most 25 lines - this avoids length output for very length example errors. -
revdep_check_save_summary()saves a parsed version of the results ascheck.rds. -
All
use_function have been overhauled to be more consistent. This includes more consistent output. Most functions now also ask to overwrite if a file already exists (#1074). -
Deprecated
use_coveralls(),add_rstudio_project(),add_test_infrastructure(), andadd_travis()have been removed. -
revdep_check_save_summary()now createsREADME.mdto save one level of clicking in github. -
use_coverage()now adds covr to suggests, rather than recommending you install it explicitly in.travis.yml. -
check_built()allows you to runR CMD checkon an already built package. -
system_check()gains new argumentspathto controls the working directory of the command, andthrowto control whether or not it throws an error on command failure.envhas been renamed to the more explicitenv_vars. -
revdep_check()now reports summary results as they come in. -
check()now always succeeds (instead of throwing an error whenR CMD checkfinds anERROR), returning an object that summarises the check failures. -
check()gains arun_dont_testargument to control whether or not\donttest{}tests are tested. This defaults toFALSE, butrelease()runs check with it set toTRUE(#1071). -
The
cleanupargument tocheck()is deprecated: it now always returns the path to the check directory. -
use_travis()generates a template compatible with the newest R-travis. -
build_win()defaults to only R-devel, since this is most commonly what you want. -
release()has been tweaked to improve the order of the questions, and ensure that you're ok with problems. -
Help shims now inform you that you're using development documentation (#1049).
-
use_github()prints the url of the repo (#1063). -
use_testthat()tells you what it's doing (#1056). -
use_news(), anduse_test()open the files in RStudio (if you're using it and have rstudioapi installed). -
use_readme_md()creates a basicREADME.mdtemplate (#1064). -
revdep_check()doesn't complain about missinggit2rpackage anymore (#1068, @krlmlr).
-
curl,evaluate,roxygen2andrversionshave been moved from Imports to Suggests to lighten the dependency load of devtools. If you run a function that needs one of the packages, you'll prompted to install it (#962, @jimhester). -
Devtools uses a new strategy for detecting RTools on windows: it now only looks for Rtools if you need to
load_all()orbuild()a package with compiled code. This should make it easier to work with devtools if you're developing pure R packages (#947). -
package_file()lets you find files inside a package. It starts by finding the root directory of the package (i.e. the directory that containsDESCRIPTION) (#985). -
use_news_md()adds a basicNEWS.mdtemplate (#957). -
use_mit_license()writes the necessary infrastructure to declare and release an R package under the MIT license in a CRAN-compliant way. (#995, @kevinushey) -
check(cran = TRUE)adds--run-donttestsince you do need to test code in\dontest()for CRAN submission (#1002).
-
install()installs packages specified in theAdditional_repositoriesfield, such as drat repositories. (#907, #1028, @jimhester). It correctly installs missing dependencies (#1013, @gaborcsardi). If called on a Bioconductor package, include the Bioconductor repositories if they are not already set (#895, @jimhester). -
install()gains ametadataargument which lets you add extra fields to theDESCRIPTIONon install. (#1027, @rmflight) -
install_github()andinstall_git()only downloads and installs the package if the remote SHA1 reference differs from the currently installed reference (#903, @jimhester). -
install_local()captures git and github information and stores it in theDESCRIPTION(#1027, @rmflight). -
install_version()is more robust when handling multiple repos (#943, #1030, @jimhester). -
Bugfix for
Remotes:feature that prevented it from working if devtools was not attached as is done in travis-r (#936, @jimhester).
-
check_dev_versions()checks only package dependencies (#983). -
check_man()replacescheck_doc()(since most other functions are named after the corresponding directory).check_doc()will hang around as an alias for the forseeable future (#958). -
create()produces a dummy namespace will fake comment so roxygen2 will overwrite silently (#1016). -
create()andsetup()are more permissive -- they now accept a path to either a new directory or empty directory. (#966, @kevinushey) -
document()now only runsupdate_collate()once. -
load_all()resolves a longstanding lazy load database corruption issue when reloading packages which define S3 methods on generics from base or other packages (#1001, @jimhester). -
release_checks()gains two new checks:-
check_vignette_titles()checks that your vignette titles aren't the default "Vignette Title" (#960, @jennybc). -
check_news_md()checks thatNEWS.mdisn't in your.Rbuildignore(since it's now supported by CRAN, #1042).
-
-
revdep_check():-
More verbose about which package is installed (#926, @krlmlr)
-
Verifies the integrity of already downloaded package archives (#930, @krlmlr)
-
Is now more tolerant of errors when retrieving the summary for a checked package (#929, @krlmlr).
-
When
ncpus > 1, it includes the package name for when so you know which package has failed and can start looking at the output without needing to wait for all packages to finish (@mattdowle). -
Uses proper repository when
BiocInstaller::useDevel(TRUE)(#937, @jimhester).
-
-
Shimmed
system.file()now respectsmustWork = TRUEand throws an error if the file does not exist (#1034). -
use_appveyor()template now createsfailure.zipartifact instead of polluting the logs withR CMD checkoutput (#1017, @krlmlr, @HenrikBengtsson). -
use_cran_comments()template has been improved (#1038). -
use_data()now warns when trying to save the same object twice, and stops if there is no object to save (#948, @krlmlr). -
use_revdep_check()no longer includesrevdep_check_save_logsin default template. I found I never used the logs and they just cluttered up the package directory (#1003). -
with_*()functions have moved into the withr package, and devtools functions have been deprecated (#925, @jimhester).
-
Avoid importing heavy dependencies to speed up loading (#830, @krlmlr).
-
Remove explicit
library(testthat)call intest()(#798, @krlmlr). -
as.package()andload_all()gain new argumentcreate. Like other functions with apkgargument,load_all()looks for aDESCRIPTIONfile in parent directories - ifcreate = TRUEit will be automatically created if there's aR/ordata/directory (#852, @krlmlr). -
build_vignettes()gains dependencies argument (#825, @krlmlr). -
build_win()now usescurlinstead ofRCurlfor ftp upload. -
build_win()asks for consent to receive e-mail at maintainer address in interactive mode (#800, @krlmlr). -
check()now uses a better strategy whencran = TRUE. Instead of attempting to simulate--as-cranbehaviour by turning on certain env vars, it now uses--as-cranand turns off problematic checks with env vars (#866). The problematiccran_env_vars()function has been removed. -
find_rtools()now looks for registry keys in both HKCU (user) and HKLM (admin) locations (@Kevin-Jin, #844) -
install()can now install dependencies from remote repositories by specifying them asRemotesin theDESCRIPTIONfile (#902, @jimhester). Seevignette("dependencies")for more details. -
install_*()detects if called on a Bioconductor package and if so, automatically includes the Bioconductor repositories if needed (#895, @jimhester). -
install_deps()now automatically upgrades out of date dependencies. This is typically what you want when you're working on a development version of a package. To suppress this behaviour, setupgrade_dependencies = FALSE(#863).install_deps()is more careful with...- this means additional arguments toinstall_*are more likely to work (#870). -
install_gitorious()has been removed since gitorious no longer exists (#913). -
load_all()no longer fails if auseDynLib()entry in the NAMESPACE is incorrect. This should make it easy to recover from an incorrect@useDynLib, because re-documenting() should now succeed. -
release()works for packages not located at root of git repository (#845, #846, @mbjones). -
revdep_check()now installs suggested packages by default (#808), and setsNOT_CRANenv var tofalse(#809). This makes testing more similar to CRAN so that more packages should pass cleanly. It also setsRGL_USE_NULLtotrueto stop rgl windows from popping up during testing (#897). It also downloads all source packages at the beginning - this makes life a bit easier if you're on a flaky internet connection (#906). -
New
uninstall()removes installed package (#820, @krlmlr). -
Add
use_coverage()function to add codecov.io or coveralls.io to a project, deprecateuse_coveralls()(@jimhester, #822, #818). -
use_cran_badge()uses canonical url form preferred by CRAN. -
use_data()also works with data from the parent frame (#829, @krlmlr). -
use_git_hook()now creates.git/hooksif needed (#888) -
GitHub integration extended:
use_github()gains aprotocolargument (ssh or https), populates URL and BugReports fields of DESCRIPTION (only if non-existent or empty), pushes to the newly created GitHub repo, and sets a remote tracking branch.use_github_links()is a new exported function.dr_github()diagnoses more possible problems. (#642, @jennybc). -
use_travis(): Default travis script leaves notifications on default settings. -
uses_testthat()andcheck_failures()are now exported (#824, #839, @krlmlr). -
use_readme_rmd()usesuses_git()correctly (#793). -
with_debug()now useswith_makevars()rather thanwith_env(), because R reads compilation variables from the Makevars rather than the environment (@jimhester, #788). -
Properly reset library path after
with_lib()(#836, @krlmlr). -
remove_s4classes()performs a topological sort of the classes (#848, #849, @famuvie). -
load_all()warns (instead of failing) if importing symbols, methods, or classes fromNAMESPACEfails (@krlmlr, #921).
-
New
dr_devtools()runs some common diagnostics: are you using the latest version of R and devtools? It is run automatically byrelease()(#592). -
use_code_of_conduct()adds a contributor code of conduct from http://contributor-covenant.org. (#729) -
use_coveralls()allows you to easily add test coverage with coveralls (@jimhester, #680, #681). -
use_git()sets up a package to use git, initialising the repo and checking the existing files. -
use_test()adds a new test file (#769, @krlmlr). -
New
use_cran_badge()adds a CRAN status badge that you can copy into a README file. Green indicates package is on CRAN. Packages not yet submitted or accepted to CRAN get a red badge.
-
build_vignettes()automatically installs the VignetteBuilder package, if necessary (#736). -
install()andinstall_deps()gain a...argument, so additional arguments can be passed toutils::install.packages()(@jimhester, #712).install_svn()optionally accepts a revision (@lev-kuznetsov, #739).install_version()now knows how to look in multiple repos (#721). -
package_deps()(anddev_package_deps()) determines all recursive dependencies and whether or not they're up-to-date (#663). Useupdate(package_deps("xyz"))to update out of date dependencies. This code is used ininstall_deps()andrevdep_check()- it's slightly more aggressive than previous code (i.e. it forces you to use the latest version), which should avoid problems when you go to submit to CRAN. -
New
update_packages()will install a package (and its dependencies) only if they are missing or out of date (#675). -
session_info()can now take a vector of package names, in which case it will print the version of those packages and their dependencies (#664).
-
Devtools now uses the git2r package to inspect git properties and install remote git packages with
install_git(). This should be considerably more reliable than the previous strategy which involves calling the command linegitclient. It has two small downsides:install_git()no longer accepts additionalargs, and must do a deep clone when installing. -
dr_github()checks for common problems with git/github setup (#643). -
If you use git,
release()now warns you if you have uncommited changes, or if you've forgotten to synchronise with the remote (#691). -
install_github()warns if repository contains submodules (@ashander, #751).
-
Previously, devtools ran all external R processes with
R --vanilla. Now it only suppresses user profiles, and constructs a custom.Rprofileto override the default. Currently, this.Rprofilesets up thereposoption. Among others, this enables the cyclic dependency check indevtools::release(#602, @krlmlr). -
R_BROWSERandR_PDFVIEWERenvironment variables are set to "false" to suppress random windows opening during checks. -
Devtools correctly identifies RTools 3.1 and 3.2 (#738), and preserves continuation lines in the
DESCRIPTION(#709). -
dev_help()now usesnormalizePath(). Hopefully this will make it more likely to work if you're on windows and have a space in the path. -
lint()gains acacheargument (@jimhester, #708). -
Fixed namespace issues related to
stats::setNames()(#734, #772) andutils::unzip()(#761, @robertzk). -
release()now reminds you to check the existing CRAN check results page (#613) ands shows file size before uploading to CRAN (#683, @krlmlr). -
RCMD()andsystem_check()are now exported so they can be used by other packages. (@jimhester, #699). -
revdep_check()creates directories if needed (#759). -
system_check()combines arguments with, not,. (#753) -
test()gains an...argument so that additional arguments can be passed totestthat::test_dir(@jimhester, #747) -
use_travis()now suggests you link to the svg icon since that looks a little sharper. Default template setsCRAN: http://cran.rstudio.com/to enable the cyclic dependency check. -
NOT_CRANenvvar no longer overrides externally set variable. -
check(check_version = TRUE)also checks spelling of theDESCRIPTION; if no spell checker is installed, a warning is given (#784, @krlmlr).
Devtools now supports a new and improved style of revdep checking with use_revdep(). This creates a new directory called revdep which contains a check.R template. Run this template to check all reverse dependencies, and save summarised results to check/summary.md. You can then check this file into git, making it much easier to track how reverse dependency results change between versions. The documentation for revdep_check() is much improved, and should be more useful (#635)
I recommend that you specify a library to use when checking with options("devtools.revdep.libpath"). (This should be a directory that already exists). This should be difference from your default library to keep the revdep environment isolated from your development environment.
I've also tweaked the output of revdep_maintainers() so it's easier to copy and paste into an email (#634). This makes life a little easier pre-release.
-
lint()runslintr::lint_package()to check style consistency and errors in a package. (@jimhester, #694) -
use_appveyor()sets up a package for testing with AppVeyor (@krlmlr, #549). -
use_cran_comments()creates acran-comments.mdtemplate and adds it to.Rbuildignoreto help with CRAN submissions. (#661) -
use_git_hook()allows you to easily add a git hook to a package. -
use_readme_rmd()sets up a template to generate aREADME.mdfrom aREADME.Rmdwith knitr.
-
Deprecated
doc_cleanargument tocheck()has been removed. -
Initial package version in
create()is now0.0.0.9000(#632).create()andcreate_description()checks that the package name is valid (#610). -
load_all()runsroxygen2::update_collate()before loading code. This ensures that files are sourced in the way you expect, as defined by roxygen@includetags. If you don't have any@includetags, the collate will be not be touched (#623). -
session_info()gainsinclude_baseargument to also display loaded/attached base packages (#646). -
release()no longer asks if you've read the CRAN policies since the CRAN submission process now asks the same question (#692).release(check = TRUE)now runs some additional custom checks. These include:-
Checking that you don't depend on a development version of a package.
-
Checking that the version number has exactly three components (#633).
release()now builds packages without the--no-manualswitch, both for checking and for actually building the release package (#603, @krlmlr).build()gains an additional argumentmanual, defaulting toFALSE, andcheck()gains...unmodified tobuild(). -
-
use_travis()now sets an environment variable so that any WARNING will also cause the build to fail (#570). -
with_debug()andcompiler_flags()setCFLAGSetc instead ofPKG_CFLAGS.PKG_*are for packages to use, the raw values are for users to set. (According to http://cran.rstudio.com/doc/manuals/r-devel/R-exts.html#Using-Makevars) -
New
setup()works likecreate()but assumes an existing, not necessarily empty, directory (#627, @krlmlr).
-
When installing a pull request,
install_github()now uses the repository associated with the pull request's branch (and not the repository of the user who created the pull request) (#658, @krlmlr). -
missing_s3()works once again (#672) -
Fixed scoping issues with
unzip(). -
load_code()now executes the package's code with the package's root as working directory, just likeR CMD buildet al. (#640, @krlmlr).
-
Don't set non-portable compiler flags on Solaris.
-
The file
template.Rprojis now correctly installed and the functionuse_rstudioworks as it should. (#595, @hmalmedal) -
The function
use_rcppwill now create the filesrc/.gitignorewith the correct wildcards. (@hmalmedal) -
The functions
test,document,load_all,build,checkand any function that applies to some package directory will work from subdirectories of a package (like the "R" or "inst/tests" directories). (#616, @robertzk)
-
create()no longer generatesman/directory - roxygen2 now does this automatically. It also no longer generates an package-level doc template. If you want this, useuse_package_doc(). It also makes a dummy namespace so that you can build & reload without runningdocument()first. -
New
use_data()makes it easy to include data in a package, either indata/(for exported datasets) or inR/sysdata.rda(for internal data). (#542) -
New
use_data_raw()createsdata-raw/directory for reproducible generation ofdata/files (#541). -
New
use_package()allows you to set dependencies (#559). -
New
use_package_doc()sets up an Roxygen template for package-level docs. -
New
use_rcpp()sets up a package to use Rcpp. -
use_travis()now figures out your github username and repo so it can construct the markdown for the build image. (#546) -
New
use_vignette()creates a draft vignette using Rmarkdown (#572). -
renamed
add_rstudio_project()touse_rstudio(),add_travis()touse_travis(),add_build_ignore()touse_build_ignore(), andadd_test_infrastructure()touse_testthat()(old functions are aliased to new)
-
You can add arbitrary extra questions to
release()by defining a functionrelease_questions()in your package. Yourrelease_questions()should return a character vector of questions to ask (#451). -
release()uses new CRAN submission process, as implemented bysubmit_cran()(#430).
-
All
install_*now use the same code and store much useful metadata. Currently onlysession_info()takes advantage of this information, but it will allow the development of future tools like generic update functions. -
Vignettes are no longer installed by default because they potentally require all suggested packages to also be installed. Use
build_vignettes = TRUEto force building and to install all suggested packages (#573). -
install_bitbucket()has been bought into alignment withinstall_github(): this means you can now specify repos with the compactusername/repo@refsyntax. Theusernameis now deprecated. -
install_git()has been simplified and many of the arguments have changed names for consistency with metadata for other package installs. -
install_github()has been considerably improved:-
usernameis deprecated - please include the user in the repo name:rstudio/shiny,hadley/devtoolsetc. -
dependencies = TRUEis no longer forced (regression in 1.5) (@krlmlr, #462). -
Deprecated parameters
auth_user,branch,pullandpasswordhave all been removed. -
New
hostargument which allows you to install packages from github enterprise (#410, #506). -
The GitHub API is used to download archive file (@krlmlr, #466) - this makes it less likely to break in the future.
-
To download a specified pull request, use
ref = github_pull(...)(@krlmlr, #509). To install the latest release, use"user/repo@*release"orref = github_release()(@krlmlr, #350).
-
-
install_gitorious()has been bought into alignment withinstall_github(): this means you can now specify repos with the compactusername/repo@refsyntax. You must now always supply user (project) name and repo. -
install_svn()lets you install an R package from a subversion repository (assuming you have subversion installed). -
decompress()and henceinstall_url()now work when the downloaded file decompresses without additional top-level directory (#537).
-
If you're using Rstudio, and you you're trying to build a binary package without the necessary build tools, Rstudio will prompt to download and install the right thing. (#488)
-
Commands are no longer run with
LC_ALL=C- this no longer seems necessary (#507). -
build(binary = TRUE)creates an even-more-temporary package library avoid conflicts (#557). -
check_dir()no longer fails on UNC paths (#522). -
check_devtools()also checks for dependencies on development versions of packages (#534). -
load_all()no longer fails on partial loading of a package containing S4 or RC classes (#577). -
On windows,
find_rtools()is now run on package load, not package attach. -
help(),?, andsystem.file()are now made available when a package is loaded withload_all(), even if the devtools package isn't attached. -
httr0.3 required (@krlmlr, #466). -
load_all()no longer gives an error when objects listed as exports are missing. -
Shim added for
library.dynam.unload(). -
loaded_packages()now returns package name and path it was loaded from. (#486) -
The
parenvs()function has been removed from devtools, because is now in the pryr package. -
missing_s3()uses a better heuristic for determining if a function is a S3 method (#393). -
New
session_info()provides useful information about your R session. It's a little more focussed thansessionInfo()and includes where packages where installed from (#526). -
rstudioapipackage moved from suggests to imports, since it's always needed (it's job is to figure out if rstudio is available, #458) -
Implemented own version
utils::unzip()that throws error if command fails and doesn't print unneeded messages on non-Windows platforms (#540). -
Wrote own version of
write.dcf()that doesn't butcher whitespace and fieldnames.
-
The
freshargument totest()has been removed - this is best done by the editor since it can run the tests in a completely clean environment by starting a new R session. -
compile_dll()can now build packages located in R'stempdir()directory (@richfitz, #531).
Four new functions make it easier to add useful infrastructure to packages:
-
add_test_infrastructure()will create test infrastructure for a new package. It is called automatically fromtest()if no test directories are found, the session is interactive and you agree. -
add_rstudio_project()adds an Rstudio project file to your package.create()gains anrstudioargument which will automatically create an Rstudio project in the package directory. It defaults toTRUE: if you don't use Rstudio, just delete the file. -
add_travis()adds a basic travis template to your package..travis.ymlis automatically added to.Rbuildignoreto avoid including it in the built package. -
add_build_ignore()makes it easy to add files to.Rbuildignore, correctly escaping special characters
Two dependencies were incremented:
-
devtools requires at least R version 3.0.2.
-
document()requires at least roxygen2 version 3.0.0.
-
build_win()now builds R-release and R-devel by default (@krlmlr, #438). It also gains parameterargs, which is passed on tobuild()(@krlmlr, #421). -
check_doc()now runsdocument()automatically. -
install()gainsthreadargument which allows you to install multiple packages in parallel (@mllg, #401).threadsargument tocheck_cran()now defaults togetOption("Ncpus") -
install_deps(deps = T)no longer installs all dependencies of dependencies (#369). -
install_github()now prefers personal access tokens supplied toauth_tokenrather than passwords (#418, @jeroenooms). -
install_github()now defaults todependencies = TRUEso you definitely get all the packages you need to build from source. -
devtools supplies its own version of
system.file()so that when the function is called from the R console, it will have special behavior for packages loaded with devtools. -
devtools supplies its own version of
helpand?, which will search devtools-loaded packages as well as normally-loaded packages.
-
check_devtools()no longer called bycheck()because the relevant functionality is now included inR CMD CHECKand it was causing false positives (#446). -
install_deps(TRUE)now includes packages listed inVignetteBuilder(#396) -
build()no longer checks forpdflatexwhen building vignettes, as many modern vignettes don't need it (#398). It also uses--no-build-vignettesfor >3.0.0 compatibility (#391). -
release()does a better job of opening your email client if you're inside of Rstudio (#433). -
check()now correctly reports the location of theR CMD checkoutput when called with a customcheck_dir. (Thanks to @brentonk) -
check_cran()records check times for each package tested. -
Improved default
DESCRIPTIONfile created bycreate_description(). (Thanks to @ncarchedi, #428) -
Fixed bug in
install_github()that prevented installing a pull request by supplyingrepo = "username/repo#pull". (#388) -
explicitly specify user agent when querying user name and ref for pull request in
install_github. (Thanks to Kirill Müller, #405) -
install_github()now removes blank lines found in a packageDESCRIPTIONfile, protecting users from the vagueerror: contains a blank lineerror. (#394) -
with_options()now works, instead of throwing an error (Thanks to @krlmlr, #434)
-
Fixed bug in
wd()whenpathwas ommitted. (#374) -
Fixed bug in
dev_help()that prevented it from working when not using Rstudio. -
source_gist()respects new github policy by sending user agent (hadley/devtools) -
install_github()now takes repo names of the form[username/]repo[/subdir][@ref|#pull]- this is now the recommended form to specify username, subdir, ref and/or pull for install_github. (Thanks to Kirill Müller, #376)
-
install()now respects the global optionkeep.source.pkgs. -
install()gains abuild_vignetteswhich defaults to TRUE, and ensures that vignettes are built even when doing a local install. It does this by forcinglocal = FALSEif the package has vignettes, soR CMD buildcan follow the usual process. (#344) -
install_github()now takes repo names of the formusername/repo- this is now the recommended form for install_github if your username is not hadley ;) -
install_github()now adds details on the source of the installed package (e.g. repository, SHA1, etc.) to the package DESCRIPTION file. (Thanks to JJ Allaire) -
Adjusted
install_version()to new meta data structure on CRAN. (Thanks to Kornelius Rohmeyer) -
Fixed bug so that
install_version()works with version numbers that contain hyphens. (Thanks to Kornelius Rohmeyer) -
install_deps()is now exported, making it easier to install the dependencies of a package.
-
build(binary = TRUE)now no longer installs the package as a side-effect. (#335) -
build_github_devtools()is a new function which makes it easy for Windows users to upgrade to the development version of devtools. -
create_description()does a better job of combining defaults and user specified options. (#332) -
install()also installs the dependencies that do not have the required versions; besides, the argumentdependenciesnow works likeinstall.packages()(in previous versions, it was essentiallyc("Depends", "Imports", "LinkingTo")) (thanks, Yihui Xie, #355) -
check()andcheck_cran()gain newcheck_dirargument to control where checking takes place (#337) -
check_devtools()no longer incorrectly complains about avignettes/directory -
Decompression of zip files now respects
getOption("unzip")(#326) -
dev_helpwill now use the Rstudio help pane, if you're using a recent version of Rstudio (#322) -
Release is now a little bit smarter: if it's a new package, it'll ask you to read and agree to the CRAN policies; it will only ask about dependencies if it has any.
-
source_url()(andsource_gist()) accept SHA1 prefixes. -
source_gist()uses the github api to reliably locate the raw gist. Additionally it now only attempts to source files with.Ror.rextensions, and gains aquietargument. (#348) -
Safer installation of source packages, which were previously extracted directly into the temp directory; this could be a problem if directory names collide. Instead, source packages are now extracted into unique subdirectories.
-
The documentation for many devtools functions has been considerably expanded, aiming to give the novice package developer more hints about what they should be doing and why.
-
load_all()now defaults toreset = TRUEso that changes to the NAMESPACE etc are incorporated. This makes it slightly slower (but hopefully not noticeably so), and generally more accurate, and a better simulation of the install + restart + reload cycle. -
test()now looks in bothinst/testandtests/testthatfor unit tests. It is recommended to usetests/testthatbecause it allows users to choose whether or not to install test. If you move your tests frominst/teststotests/testthat, you'll also need to changetests/test-all.Rto runtest_check()instead oftest_package(). This change requires testthat 0.8 which will be available on CRAN shortly. -
New devtools guarantee: if because of a devtools bug, a CRAN maintainer yells at you, I'll send you a hand-written apology note. Just forward me the email and your address.
-
New
install_local()function for installing local package files (as zip, tar, tgz, etc.) (Suggested by landroni) -
parse_deps(), which parses R's package dependency strings, is now exported. -
All package and user events (e.g. load, unload, attach and detach) are now called in the correct place.
-
build()gainsargsparameter allowing you to add additional arbitrary arguments, andcheck()gains similarbuild_argsparameter. -
install_gitgainsgit_argparameter allowing you to add arbitrary additional arguments. -
Files are now loaded in a way that preserves srcreferences - this means that you will get much better locations on error messages, which should considerably aid debugging.
-
Fixed bug in
build_vignettes()which prevented files ininst/docfrom being updated -
as.package()no longer uses the full path, which should make for nicer error messages. -
More flexibility when installing package dependencies with the
dependenciesargument toinstall_*()(thanks to Martin Studer) -
The deprecated
show_rd()function has now been removed. -
install_bitbucket()gainsauth_userandpasswordparams so that you can install from private repos (thanks to Brian Bolt) -
Better git detection on windows (thanks to Mikhail Titov)
-
Fix bug so that
document()will automatically createman/directory -
Default
DESCRIPTIONgainsLazyData: true -
create_description()now checks that the directory is probably a package by looking forR/,data/orsrc/directories -
Rolled back required R version from 3.0 to 2.15.
-
Add missing import for
digest() -
Bump max compatible version of R with RTools 3.0, and add details for RTools 3.1
-
installgains alocaloption for installing the package from the local package directory, rather than from a built tar.gz. This is now used by default for all package installations. If you want to guarantee a clean build, runlocal = FALSE -
installnow uses optiondevtools.install.argsfor default installation arguments. This allows you to set any useful defaults (e.g.--no-multiarch) in your Rprofile. -
install_gitgainsbranchargument to specify branch or tag (Fixes #255)
-
run_examplesandtestgain afreshargument which forces them to run in a fresh R session. This completely insulates the examples/tests from your current session but means that interactive code (likebrowser()) won't work.(Fixes #258) -
New functions
eval_cleanandevalq_cleanmake it easy to evaluate code in a clean R session. -
clean_sourceloses thevanillaargument (which did not work) and gains aquietargument
-
source_urlandsource_gistnow allow you to specify a sha, so you can make sure that files you source from the internet don't change without you knowing about it. (Fixes #259) -
build_vignettesbuilds usingbuildVignette()and movies/copies outputs using the same algorithm asR CMD build. This means thatbuild_vignettes()now exactly mimics R's regular behaviour, including building non-Sweave vignettes (#277), building in the correct directory (#231), using make files (if present), and copying over extra files. -
devtools now sets best practice compiler flags: from
check(),-Wall -pedanticand fromload_all(),-Wall -pedantic -g -O0 -UNDEBUG. These are prefixed to existing environment variables so that you can override them if desired. (Fixes #257) -
If there's no
DESCRIPTIONfile present,load_all()will automatically create one usingcreate_description(). You can set options in your.Rprofileto control what it contains: seepackage?devtoolsfor more details.
-
check()now also sets environment variable_R_CHECK_CODE_DATA_INTO_GLOBALENV_to TRUE (to match current--as-cranbehaviour) (Fixes #256) -
Improved default email sent by
release(), eliminatingcreate.post()boilerplate -
revdepincludes LinkingTo by default. -
Fixed regular expression problem that caused RTools
3.0.*to fail to be found on Windows. -
load_data()got an overhaul and now respectsLazyDataand correctly exports datasets by default (Fixes #242) -
with_envvargains the option to either replace, prefix or suffix existing environmental variables. The default is to replace, which was the previous behaviour. -
check_cranincludessessionInfo()in the summary output (Fixes #273) -
create()gains acheckargument which defaults to FALSE. -
with_envwill be deprecated in 1.2 and removed in 1.3 -
When
load_all()calls.onAttach()and.onLoad(), it now passes the lib path to those functions.
-
source_gist()has been updated to accept new gist URLs with username. (Fixes #247) -
test()anddocument()now set environment variables, including NOT_CRAN. -
Test packages have been renamed to avoid conflicts with existing packages on CRAN. This bug prevented devtools 1.0 from passing check on CRAN for some platforms.
-
Catch additional case in
find_rtools(): previously installed, but directory empty/deleted (Fixes #241)
-
Rcpp attributes are now automatically compiled during build.
-
Packages listed in depends are
require()d (Fixes #161, #178, #192) -
load_allinserts a special version ofsystem.fileinto the package's imports environment. This tries to simulate the behavior ofbase::system.filebut gives modified results because the directory structure of installed packages and uninstalled source packages is different. (Fixes #179). In other words,system.fileshould now just work even if the package is loaded with devtools. -
Source files are only recompiled if they've changed since the last run, and the recompile will be clean (
--preclean) if any exported header files have changed. (Closes #224) -
The compilation process now performs a mock install instead of using
R CMD SHLIB. This means thatMakevarsand makefiles will now be respected and generally there should be fewer mismatches betweenload_alland the regular install and reload process. -
S4 classes are correctly loaded and unloaded.
-
Rtools detection on windows has been substantially overhauled and should both be more reliable, and when it fails give more information about what is wrong with your install.
-
If you don't have rtools installed, devtools now automatically sets the TAR environment variable to internal so you can still build packages.
-
check_crannow downloads packages from cran.rstudio.com. -
check()now makes the CRAN version check optional, and off by default. Therelease()function still checks the version number against CRAN. -
In
check(), it is optional to require suggested packages, using theforce_suggestsoption. -
When
check()is called, the new default behavior is to not delete existing .Rd files from man/. This behavior can be set with the "devtools.cleandoc" option. -
install_bitbucket()now always uses lowercase repo names. (Thanks to mnel) -
New function
with_lib(), which runs an expression code with a library path prepended to the existing libpaths. It differs slightly fromwith_libpaths(), which replaces the existing libpaths. -
New function
install_git()installs a package directly from a git repository. (Thanks to David Coallier) -
If
pdflatexisn't available, don't try to build vignettes withinstall()orcheck(). (Fixes #173) -
install_github()now downloads from a new URL, to reflect changes on how files are hosted on GitHub. -
build()now has avignettesoption to turn off rebuilding vignettes. -
install(quick=TRUE)now builds the package without rebuilding vignettes. (Fixes #167) -
All R commands called from
devtoolsnow have the environment variableNOT_CRANset, so that you can perform tasks when you know your code is definitely not running on CRAN. (Closes #227) -
Most devtools functions can a quiet argument that suppresses output. This is particularly useful for testing.
-
Fixed path issue when looking for Rtools on windows when registry entry is not present. (Fixes #201)
-
Reloading a package that requires a forced-unload of the namespace now works.
-
When reloading a package that another loaded package depends on, if there was an error loading the code, devtools would print out something about an error in
unloadNamespace, which was confusing. It now gives more useful errors. -
An intermittent error in
clear_topic_indexrelated to usingrm()has been fixed. (Thanks to Gregory Jefferis) -
revdep()now lists "Suggests" packages, in addition to "Depends" and "Imports". -
revdep_check()now correctly passes therecursiveargument torevdep(). -
The collection of check results at the end of
check_cran()previously did not remove existing results, but now it does. -
When a package is loaded with
load_all(), it now passes the name of the package to the.onLoad()function. (Thanks to Andrew Redd)
-
createfunction makes it easier to create a package skeleton using devtools standards. -
install_github()can now install from a pull request -- it installs the branch referenced in the pull request. -
install_githubnow acceptsauth_userandpasswordarguments if you want to install a package in a private github repo. You only need to specifyauth_userif it's not your package (i.e. it's not yourusername) (Fixes #116) -
new
dev_helpfunction replacesshow_rdand makes it easy to get help on any topic in a development package (i.e. a package loaded withload_all) (Fixes #110) -
dev_exampleruns the examples for one in-development package. (Fixes #108) -
build_vignettesnow looks in modern location for vignettes (vignettes/) and warn if vignettes found in old location (inst/doc). Building now occurs in a temporary directory (to avoid polluting the package with build artefacts) and only final pdf files are copied over. -
new
clean_vignettesfunction to remove pdfs ininst/docthat were built from vignettes invignettes/ -
load_alldoes a much much better job at simulating package loading (see LOADING section). It also compiles and loads C/C++/Fortran code. -
unload()is now an exported function, which unloads a package, trying harder than justdetach. It now also unloads DLLs. (Winston Chang. Fixes #119) -
run_examplesnow has parametersshow,test,runto control which of\dontrun{},\dontshow{},\donttest{}and\testonly{}are commented out. Thestrictparameter has been removed since it is no longer necessary becauseload_allcan respect namespaces. (Fixes #118) -
build(),check(),install()etc now run R in--vanillamode which prevents it from reading any of your site or personal configuration files. This should prevent inconsistencies between the environment in which the package is run between your computer and other computers (e.g. the CRAN server) (Fixes #145) -
All system R command now print the full command used to make it easier to understand what's going on.
-
as.packageno longer uses~/.Rpackages. -
as.packageprovides more informative error messages when path does not exist, isn't a directory, or doesn't contain aDESCRIPTIONfile. -
New function
inst()takes the name of a package and returns the installed path of that package. (Winston Chang. Fixes #130). This makes it possible to usedevtoolsfunctions (e.g.unload) with regular installed packages, not just in-development source packages. -
New function
devtest()returns paths to an internal testing packages in devtools.
-
Development packages are now loaded into a namespace environment, namespace:xxxx, and then the objects namespace are copied to the package environment, package:xxxx. This more accurately simulates how packages are normally loaded. However, all of the objects (not just the exported ones) are still copied to the package environment. (Winston Chang. Fixes #3, #60, and #125)
-
Packages listed in Imports and Depends are now loaded into an imports environment, with name attribute "imports:xxxx", which is the parent of the namespace environment. The imports environment is in turn a child of the namespace:base environment, which is a child of the global environment. This more accurately simulates how packages are normally loaded. These packages previously were loaded and attached. (Winston Chang. Fixes #85)
-
The NAMESPACE file is now used for loading imports, instead of the DESCRIPTION file. Previously,
load_allloaded all objects from the packages listed in DESCRIPTION. Now it loads packages (and, when when 'importfrom' is used, specific objects from packages) listed in NAMESPACE. This more closely simulates normal package loading. It still checks version numbers of packages listed in DESCRIPTION. (Winston Chang) -
load_allcan now be used to properly reload devtools. It does this by creating a copy of the devtools namespace environment, and callingload_allfrom that environment. (Winston Chang) -
The
.onLoadand.onAttachfunctions for a development package are now both called when loading a package for the first time, or withreset=TRUE, and the order more correctly simulates normal package loading (create the namespace, call.onLoad, copy objects to the package environment, and then call.onAttach). (Winston Chang) -
load_allwill now throw a warning if a dependency package does not satisfy the version requirement listed in DESCRIPTION. (Winston Chang. Fixes #109) -
The package environment now has a 'path' attribute, similar to a package loaded the normal way. (Winston Chang)
-
load_allnow has an optionexport_all. When set to TRUE, only the objects listed as exports in NAMESPACE are exported. (Winston Chang) -
load_allnow compiles C files in the /src directory. (Winston Chang) -
New functions
compile_dll()andclean_dll(), which compile C/C++/ Fortan source code, and clean up the compiled objects, respectively. (Winston Chang. Fixes #131)
-
load_codenow properly skips missing files. (Winston Chang) -
Add
--no-resave-datato default build command. -
The subject line of the email created by
releaseis now "CRAN submission [package] [version]", per CRAN repository policy. -
install_bitbucketproperly installs zip files of projects stored in Mercurial repositories. (Winston Chang. Fixes #148) -
buildnow builds vignettes becauseinstalldoes not. (Fixes #155)
-
New function
loaded_packages(), which returns the names of packages that are loaded and attached. -
Packages loaded with
load_allnow store devtools metadata in their namespace environment, in a variable called.__DEVTOOLS__. This can be accessed with thedev_metafunction. (Winston Chang. Fixes #128) -
dev_modenow stores the path it uses in optiondev_path. That makes it easy for other applications to detect when it is on and to act accordingly. -
New function
parse_ns_file(), which parses a NAMESPACE file for a package. -
New function
parenvs(), which parents the parent environments of an object. (Winston Chang)
-
bump dependency to R 2.15
-
load_codenow also looks for files ending in.q- this is not recommended, but is needed for some older packages
-
install_bitbucketinstalls R packages on bitbucket. -
installnow uses--with-keep.sourceto make debugging a little easier. -
All remote install functions give better error messages in the case of http errors (Fixes #82).
-
installhas new quick option to make package installation faster, by sacrificing documentation, demos and multi-architecture binaries. (Fixes #77) -
install_url,install_githubandinstall_gitoriousgain a subdir argument which makes it possible to install packages that are contained within a sub-directory of a repository or compressed file. (Fixes #64)
-
with_debugfunction temporarily sets env vars so that compilation is performed with the appropriate debugging flags set. Contributed by Andrew Redd. -
revdep,revdep_maintainersandrevdep_checkfor calculating reverse dependencies, finding their maintainers and runningR CMD check. (Fixes #78) -
check_cranhas received a massive overhaul: it now checks multiple packages, installs dependencies (in user specified library), and parse check output to extract errors and warnings -
checkuses new--as-cranoption to make checking as close to CRAN as possible (fixes #68)
-
devtools now uses options
devtools.pathto set the default path to use with devmode, andgithub.userto set the default user when installing packages from github. -
if no package supplied, and no package has been worked with previously, all functions now will try the working directory. (Fixes #87)
-
on windows, devtools now looks in the registry to find where Rtools is installed, and does a better a job of locating gcc. (Contributed by Andrew Redd)
-
show_rdpasses...on toRd2txt- this is useful if you're checking how build time\Sexprs are generated. -
A suite of
withfunctions that allow you to temporarily alter the environment in which code is run:in_dir,with_collate,with_locale,with_options,with_path, ... (Fixes #89) -
releaseask more questions and randomises correct answers so you really need to read them (Fixes #79) -
source_gistnow accepts default url such as "https://gist.github.com/nnn" -
New system path manipulation functions,
get_path,set_path,add_pathandon_path, contributed by Andrew Redd. -
If you're on windows,
devtoolsnow suppresses the unimportant warning from CYGWIN about the dos style file paths
-
decompressnow uses target directory as defined in the function call when expanding a compressed file. (Fixes #84) -
documentis always run in a C locale so thatNAMESPACEsort order is consistent across platforms. -
installnow quoteslibpathand build path so paths with embedded spaces work (Fixes #73 and #76) -
load_datanow also loads.RDatafiles (Fixes #81) -
installnow hasargsargument to pass additional command line arguments on toR CMD install(replaces...which didn't actually do anything). (Fixes #69) -
load_codedoes a better job of reconciling files in DESCRIPTION collate with files that actually exist in the R directory. (Fixes #14)
-
testfunction takesfilterargument which allows you to restrict which tests are to be run -
checkruns with example timings, as is done on CRAN. Run with new paramcleanup = Fto access the timings. -
missing_s3function to help figure out if you've forgotten to export any s3 methods -
check_crandownloads and checks a CRAN package - this is useful to run as part of the testing process of your package if you want to check the dependencies of your package -
strictmode forrun_exampleswhich runs each example in a clean environment. This is much slower than the default (running in the current environment), but ensures that each example works standalone. -
dev_modenow updates prompt to indicate that it's active (Thanks to Kohske Takahashi) -
new
source_urlfunction for sourcing script on a remote server via protocols other than http (e.g. https or ftp). (Thanks to Kohske Takahashi) -
new
source_gistfunction to source R code stored in a github gist. (Thanks to Kohske Takahashi) -
load_allnow also loads all package dependencies (including suggestions) - this works around some bugs in the way that devtools attaches the development environment into the search path in a way that fails to recreate what happens normally during package loading.
-
remote installation will ensure the configure file is executable.
-
all external package installation functions are vectorised so you can install multiple packages at time
-
new
install_gitoriousfunction install packages in gitorious repos. -
new
install_urlfunction for installing package from an arbitrary url -
include
install_versionfunction from Jeremy Stephens for installing a specific version of a CRAN package from the archive.
-
better check for OS type (thanks to Brian Ripley)
-
better default paths for 64-bit R on windows (Fixes #35)
-
check to see if Rtools is already available before trying to mess with the paths. (Fixes #55)
-
if an error occurs when calling loading R files, the cache will be automatically cleared so that all files are loaded again next time you try (Fixes #55)
-
functions that run R now do so with
R_LIBSset to the current.libPaths()- this will ensure that checking uses the development library if you are in development mode.R_ENVIRON_USERis set to an empty file to avoid your existing settings overriding this. -
load_data(called byload_all) will also load data defined in R files in the data directory. (Fixes #45) -
dev_modeperforms some basic tests to make sure you're not setting your development library to a directory that's not already an R library. (Fixes #25)
- Fix error in that was causing R commands to fail on windows.
- new
show_rdfunction that will show the development version of a help file.
-
external R commands always run in locale
C, because that's what the CRAN severs do. -
clean_sourcesources an R script into a fresh R environment, ensuring that it can run independently of your current working environment. Optionally (vanilla = T), it will source in a vanilla R environment which ignores all local environment settings. -
On windows,
devtoolswill also add the path tomingwon startup. (Thanks to pointer from Dave Lovell)
-
new
wdfunction to change the working directory to a package subdirectory. -
check_docnow checks package documentation as a whole, in the same way thatR CMD checkdoes, rather than low-level syntax checking, which is done byroxygen2. DESCRIPTION checking has been moved intoload_all.check_rd` has been removed. -
buildis now exported, and defaults to building in the package's parent directory. It also gains a newbinaryparameter controls whether a binary or a source version (with no vignettes or manuals) is built. Confusingly, binary packages are built withR CMD INSTALL. -
build_winsends your package to the R windows builder, allowing you to make a binary version of your package for windows users if you're using linux or a max (if you're using windows already, usebuild(binary = T))
-
if using
.Rpackagesconfig file, default function is used last, not first. -
on Windows,
devtoolsnow checks for the presence ofRtoolson startup, and will automatically add it to the path if needed. -
documentusesroxygen2instead ofroxygen. It now loads package dependency so that they're available when roxygen executes the package source code. -
documenthas new parametercleanwhich clears all roxygen caches and removes all existing man files.checknow runsdocumentin this mode. -
dev_modewill create directories recursively, and complain if it can't create them. It should also work better on windows. -
install_githubnow allows you to specify which branch to download, and automatically reloads package if needed. -
reloadnow will only reload if the package is already loaded. -
releasegainscheckparameter that allows you to skip package check (if you've just done it.) -
testautomatically reloads code so you never run tests on old code
-
new
bash()function that starts bash shell in package directory. Useful if you want to use git etc. -
removed inelegant
update_src()since now superseded bybash() -
fix bug in ftp upload that was adding extraneous space
-
buildfunction builds package in specified directory.install,checkandreleasenow all use this function. -
build,install,checkandreleasebetter about cleaning up after themselves - always try to both work in session temporary directory and delete any files/directories that they create
-
install_githubnow usesRCurlinstead of externalwgetto retrieve package. This should make it more robust wrt external dependencies. -
load_allwill skip missing files with a warning (thanks to suggestion from Jeff Laake) -
checkautomatically deletes.Rcheckdirectory on successful completion -
Quote the path to R so it works even if there are spaces in the path.
-
Check for presence of
DESCRIPTIONwhen loading packages to avoid false positives -
installnow works correctly withdevel_modeto install packages in your development library -
releaseprints news so you can more easily check it -
All
R CMD xxxfunctions now use the current R, not the first R found on the system path.