Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

454 lines (308 sloc) 17.077 kb
* 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
* An intermittent error in `clear_topic_index` related to using `rm()` has
been fixed. (Thanks to Gregory Jefferis)
devtools 0.8.0
* `create` function 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_github` now accepts `auth_user` and `password` arguments if you
want to install a package in a private github repo. You only need to specify
`auth_user` if it's not your package (i.e. it's not your `username`) (Fixes
* new `dev_help` function replaces `show_rd` and makes it easy to get help on
any topic in a development package (i.e. a package loaded with `load_all`)
(Fixes #110)
* `dev_example` runs the examples for one in-development package. (Fixes #108)
* `build_vignettes` now 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_vignettes` function to remove pdfs in `inst/doc` that were built
from vignettes in `vignettes/`
* `load_all` does 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 just `detach`. It now also unloads DLLs. (Winston Chang. Fixes
* `run_examples` now has parameters `show`, `test`, `run` to control which of
`\dontrun{}`, `\dontshow{}`, `\donttest{}` and `\testonly{}` are commented
out. The `strict` parameter has been removed since it is no longer necessary
because `load_all` can respect namespaces. (Fixes #118)
* `build()`, `check()`, `install()` etc now run R in `--vanilla` mode 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.package` no longer uses `~/.Rpackages`.
* `as.package` provides more informative error messages when path does not
exist, isn't a directory, or doesn't contain a `DESCRIPTION` file.
* 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
use `devtools` functions (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_all` loaded 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_all` can now be used to properly reload devtools. It does this
by creating a copy of the devtools namespace environment, and calling
`load_all` from that environment. (Winston Chang)
* The `.onLoad` and `.onAttach` functions for a development package are
now both called when loading a package for the first time, or with
`reset=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_all` will 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_all` now has an option `export_all`. When set to TRUE, only the
objects listed as exports in NAMESPACE are exported. (Winston Chang)
* `load_all` now compiles C files in the /src directory. (Winston Chang)
* New functions `compile_dll()` and `clean_dll()`, which compile C/C++/
Fortan source code, and clean up the compiled objects, respectively.
(Winston Chang. Fixes #131)
* `load_code` now properly skips missing files. (Winston Chang)
* Add `--no-resave-data` to default build command.
* The subject line of the email created by `release` is now "CRAN submission
[package] [version]", per CRAN repository policy.
* `install_bitbucket` properly installs zip files of projects stored
in Mercurial repositories. (Winston Chang. Fixes #148)
* `build` now builds vignettes because `install` does not. (Fixes #155)
* New function `loaded_packages()`, which returns the names of packages
that are loaded and attached.
* Packages loaded with `load_all` now store devtools metadata in their
namespace environment, in a variable called `.__DEVTOOLS__`. This can
be accessed with the `dev_meta` function. (Winston Chang. Fixes #128)
* `dev_mode` now stores the path it uses in option `dev_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
* New function `parenvs()`, which parents the parent environments
of an object. (Winston Chang)
devtools 0.7.1
* bump dependency to R 2.15
* `load_code` now also looks for files ending in `.q` - this is not
recommended, but is needed for some older packages
devtools 0.7
* `install_bitbucket` installs R packages on bitbucket.
* `install` now uses `--with-keep.source` to make debugging a little easier.
* All remote install functions give better error messages in the case of http
errors (Fixes #82).
* `install` has new quick option to make package installation faster, by
sacrificing documentation, demos and multi-architecture binaries. (Fixes
* `install_url`, `install_github` and `install_gitorious` gain 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_debug` function temporarily sets env vars so that compilation is
performed with the appropriate debugging flags set. Contributed by Andrew
* `revdep`, `revdep_maintainers` and `revdep_check` for calculating reverse
dependencies, finding their maintainers and running `R CMD check`.
(Fixes #78)
* `check_cran` has received a massive overhaul: it now checks multiple
packages, installs dependencies (in user specified library), and parse check
output to extract errors and warnings
* `check` uses new `--as-cran` option to make checking as close to CRAN as
possible (fixes #68)
* devtools now uses options `devtools.path` to set the default path to use
with devmode, and `github.user` to 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
* `show_rd` passes `...` on to `Rd2txt` - this is useful if you're checking
how build time `\Sexpr`s are generated.
* A suite of `with` functions 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)
* `release` ask more questions and randomises correct answers so you really
need to read them (Fixes #79)
* `source_gist` now accepts default url such as ""
* New system path manipulation functions, `get_path`, `set_path`, `add_path`
and `on_path`, contributed by Andrew Redd.
* If you're on windows, `devtools` now suppresses the unimportant warning from
CYGWIN about the dos style file paths
* `decompress` now uses target directory as defined in the function call
when expanding a compressed file. (Fixes #84)
* `document` is always run in a C locale so that `NAMESPACE` sort order is
consistent across platforms.
* `install` now quotes `libpath` and build path so paths with embedded spaces
work (Fixes #73 and #76)
* `load_data` now also loads `.RData` files (Fixes #81)
* `install` now has `args` argument to pass additional command line arguments
on to `R CMD install` (replaces `...` which didn't actually do anything).
(Fixes #69)
* `load_code` does a better job of reconciling files in DESCRIPTION collate
with files that actually exist in the R directory. (Fixes #14)
devtools 0.6
* `test` function takes `filter` argument which allows you to restrict which
tests are to be run
* `check` runs with example timings, as is done on CRAN. Run with new param
`cleanup = F` to access the timings.
* `missing_s3` function to help figure out if you've forgotten to export any
s3 methods
* `check_cran` downloads 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
* `strict` mode for `run_examples` which 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_mode` now updates prompt to indicate that it's active (Thanks to Kohske
* new `source_url` function for sourcing script on a remote server via
protocols other than http (e.g. https or ftp). (Thanks to Kohske Takahashi)
* new `source_gist` function to source R code stored in a github gist. (Thanks
to Kohske Takahashi)
* `load_all` now 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_gitorious` function install packages in gitorious repos.
* new `install_url` function for installing package from an arbitrary url
* include `install_version` function 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_LIBS` set to the current
`.libPaths()` - this will ensure that checking uses the development library
if you are in development mode. `R_ENVIRON_USER` is set to an empty file to
avoid your existing settings overriding this.
* `load_data` (called by `load_all`) will also load data defined in R files in
the data directory. (Fixes #45)
* `dev_mode` performs some basic tests to make sure you're not setting your
development library to a directory that's not already an R library. (Fixes
devtools 0.5.1
* Fix error in that was causing R commands to fail on windows.
devtools 0.5
* new `show_rd` function that will show the development version of a help
* external R commands always run in locale `C`, because that's what the CRAN
severs do.
* `clean_source` sources 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, `devtools` will also add the path to `mingw` on startup. (Thanks
to pointer from Dave Lovell)
devtools 0.4
* new `wd` function to change the working directory to a package subdirectory.
* `check_doc` now checks package documentation as a whole, in the same way
that `R CMD check` does, rather than low-level syntax checking, which is
done by `roxygen2. DESCRIPTION checking has been moved into `load_all`.
`check_rd` has been removed.
* `build` is now exported, and defaults to building in the package's parent
directory. It also gains a new `binary` parameter controls whether a binary
or a source version (with no vignettes or manuals) is built. Confusingly,
binary packages are built with `R CMD INSTALL`.
* `build_win` sends 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, use `build(binary = T)`)
* if using `.Rpackages` config file, default function is used last, not first.
* on Windows, `devtools` now checks for the presence of `Rtools` on startup,
and will automatically add it to the path if needed.
* `document` uses `roxygen2` instead of `roxygen`. It now loads package
dependency so that they're available when roxygen executes the package
source code.
* `document` has new parameter `clean` which clears all roxygen caches and
removes all existing man files. `check` now runs `document` in this mode.
* `dev_mode` will create directories recursively, and complain if it can't
create them. It should also work better on windows.
* `install_github` now allows you to specify which branch to download, and
automatically reloads package if needed.
* `reload` now will only reload if the package is already loaded.
* `release` gains `check` parameter that allows you to skip package check (if
you've just done it.)
* `test` automatically reloads code so you never run tests on old code
devtools 0.3
* 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 by `bash()`
* fix bug in ftp upload that was adding extraneous space
* `build` function builds package in specified directory. `install`, `check`
and `release` now all use this function.
* `build`, `install`, `check` and `release` better about cleaning up after
themselves - always try to both work in session temporary directory and
delete any files/directories that they create
devtools 0.2
* `install_github` now uses `RCurl` instead of external `wget` to retrieve
package. This should make it more robust wrt external dependencies.
* `load_all` will skip missing files with a warning (thanks to suggestion from Jeff Laake)
* `check` automatically deletes `.Rcheck` directory on successful completion
* Quote the path to R so it works even if there are spaces in the path.
devtools 0.1
* Check for presence of `DESCRIPTION` when loading packages to avoid false
* `install` now works correctly with `devel_mode` to install packages in your
development library
* `release` prints news so you can more easily check it
* All `R CMD xxx` functions now use the current R, not the first R found on
the system path.
Jump to Line
Something went wrong with that request. Please try again.