File: NEWS.md

package info (click to toggle)
r-cran-devtools 2.4.6-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,340 kB
  • sloc: sh: 15; makefile: 5
file content (2323 lines) | stat: -rw-r--r-- 93,930 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
# devtools 2.4.6

* Functions that use httr now explicitly check that it is installed
  (@catalamarti, #2573).

* `test_coverage()` now works if the package has not been installed.

* `test_coverage_active_file()` now reports if any tests failed and does
  a better job of executing snapshot comparisons.

* `dev_mode()` and `check_rhub()` are deprecated.

# devtools 2.4.5

* `check(cleanup =)` was deprecated in devtools v1.11.0 (2016-04-12) and was
  made defunct in v2.4.4 (2022-07-20). The documentation is more clear now about
  recommended alternatives.

* `check(check_dir = NULL)` is the new default, to align with the default
  behaviour of the underlying `rcmdcheck::rcmdcheck()`.

* `check(cran = TRUE)` sets the env var
  `_R_CHECK_PACKAGES_USED_IGNORE_UNUSED_IMPORTS_` to `FALSE`, in order to
  surface the `"Namespace in Imports field not imported from"` NOTE. This only
  applies to R >= 4.2, due to favorable changes in the behaviour of
  `R CMD check --as-cran` (#2459).

* `test_active_file()` passes the package onto to testthat so it can correctly
  set the `TESTTHAT_PKG` envvar (#2470).

* `test()` and `test_active_file()` once again work with testthat itself.

* `dev_mode()` is deprecated (@billdenney, #2467).

# devtools 2.4.4

* `install(reload = TRUE)` now calls `pkgload::unregister()` instead
  of `pkload::unload()` (#2349). This allows the package to keep
  functioning if it is still in use in the R session (e.g. through
  event handlers).

* `test()` no longer calls `load_all()` twice. `test_active_file()`
  now calls `load_all()` via testthat.

* `aspell_env_var()` does a better job of matching `R CMD check` behaviour,
  which is only to use `aspell`, not `hunspell` or `ispell` (#2376).

* Installing devtools now installs pkgdown, profvis, bench, miniUI,
  and urlchecker, ensuring that you have everything needed for package
  development (#2388).

* `dev_sitrep()` has been updated for the calendar-based version number scheme
  adopted by the RStudio IDE in September 2021 (#2397, #2410).

# devtools 2.4.3

* New `check_mac_release()` function to check a package using the macOS builder at https://mac.r-project.org/macbuilder/submit.html (#2375)
* Jenny Bryan is now the official maintainer.

* `release()` and `submit_cran()` now record submission details using the Debian Control File format, for better machine-readability. This file has a new name, CRAN-SUBMISSION (instead of CRAN-RELEASE) and now includes package version, in addition to the full SHA and a timestamp.

# devtools 2.4.2

* `check_man()` now works with R versions 4.1+ (#2354)

* `test_active_file()` now again works on windows projects stored under the user's home directory (`~`) (#2355)

* `document(quiet = TRUE)` now works without failure on windows (#2351)

* Minor test failure on R 4.2 has been fixed.

* New Rstudio addin for `run_examples()` (#2358)

# devtools 2.4.1

* `build_readme()` now uses the `path` argument, as designed (#2344)

* `create()` no longer opens projects by default to avoid duplicate projects opened by the RStudio IDE project template (#2347, @malcolmbarrett)

* The RStudio addins now use `test_active_file()` and `test_coverage_active_file()` instead of the deprecated `test_file()` and `test_coverage_file()` (#2339)

* RStudio addins now run in interactive mode, rather than background mode (@jennybc, #2350)

* `install(upgrade)` now defaults to 'default' rather than 'ask'. This allows you to control the default asking behavior with the `R_REMOTES_UPGRADE` environment variable (#2345)

# devtools 2.4.0

## Breaking changes and deprecated functions

* The `check_results()` function has been removed.
  It was not used by any CRAN package, and much better alternatives are available in the [rcmdcheck](https://github.com/r-lib/rcmdcheck) package.

* `pkgload::inst()` is no longer re-exported (#2218).

* `test_file()` has been renamed to  `test_active_file()` and `test_coverage_file()` has been renamed to `test_coverage_active_file()` to avoid a name collision with `testthat::test_file()`.
  The previous names have been soft deprecated in this release, they will be hard deprecated in the next release and eventually removed. (#2125)

## Re-licensing

* devtools is now released under a MIT license (#2326)

## Minor improvements and fixes

* `build_readme()` now supports readme files located in `inst/README.Rmd`, as intended (#2333)

* `build_vignettes()` now creates more specific `.gitignore` entries (@klmr, #2317)

* `check()` now only re-documents if you have a matching version of roxygen2 (#2263).

* `change_maintainer_email()` now has a check to assess whether the email is actually changed.
  If the email is not changed, the code now stops such that an email is not accidentally sent to the wrong recipient. (@emilsjoerup, #2073)

* `run_examples(fresh = TRUE)` again works without error (#2264)

* The covr and DT packages have been moved from Imports to Suggests.
  They are only needed when running `test_coverage()` and `test_coverage_active_file()` so now you'll be prompted to install them when needed.

* Switched to fs for all file system functions (#2331, @malcolmbarrett)

* Now uses testthat 3.0.0 to power `test()`, `test_active_file()`, `test_coverage()`, and `test_coverage_active_file()`.
  The major difference is that `test_active_file()` now generates a compact summary that takes up less space on the console.

# devtools 2.3.2

* Fix for compatibility with withr 2.3.0

# devtools 2.3.1

* `check_win_*()` function now resets the email to the original email after
  execution, this bug was fixed and crept back in (@muschellij2, #2152).

* `run_examples()` arguments `run` and `test` are deprecated in favor of the (hopefully) more clear `run_dontrun` and `run_donttest` (pkgload/#107).

* Previously deprecated functions `dr_devtools()` and `dr_github()` have been removed.

* Documentation has been synced with remotes 2.2.0

# devtools 2.3.0

* `build()` now errors with a more informative error message when passed an
  invalid `pkg`. (#2177)

* New `build_rmd()` can build any `.Rmd` file in a clean session.

* `dev_sitrep()` now works correctly when R is out of date (#2204)

# devtools 2.2.2

* `install_dev_deps()` now passes formal args onto `remotes::install_deps()`
(@t-gibson, #2166)

* `spell_check()` now checks if `spelling` is installed and prompts users to 
  install it if not (@mikemahoney218, #2172)

* `submit_cran()` now returns a more informative error when the CRAN submission
  portal is down (#1958)

* `check()` gains a `vignettes` argument, to more easily disable checks for
  vignettes (#2165).

* `check_win_*()` function now resets the email to the original email after
  execution (@muschellij2, #2152).

* `check()` now sets `NOT_CRAN=true` by default, as was originally intended (#2135).

* `install_deps()` now supports `options("devtools.ellipsis_action")` as well
  (#2169)

* `test()` now takes `stop_on_failure` as a formal argument (FALSE by default)
  instead of in `...`. Its value is still passed to `testthat::test_dir` as
  before (@infotroph, #2129).

* `test()` and `test_coverage_file()` gain a `export_all` argument, which
  controls if all functions in a package are automatically exported (#1201).

* `dev_sitrep()` now works if run outside a package directory (#2127).

* `release()` now works if the package root is not in the working directory.

# devtools 2.2.1

* `test()` now sets the collation order to `C` before running, which matches
  the behavior of tests when run with `R CMD check` (#2121)

* New `options("devtools.ellipsis_action")` option added to control the action
  of ellipsis in devtools. This should be one of
  - `rlang::abort` - to emit an error if arguments are unused
  - `rlang::warn` - to emit a warning if arguments are unused
  - `rlang::inform` - to emit a message if arguments are unused
  - `rlang::signal` - to emit a message if arguments are unused
  Using `rlang::signal` will produce no output unless the custom condition is
  caught, so it is the best way to retain backwards compatibility with devtools
  behavior prior to 2.2.0.
  The default behavior was also changed to issue a
  warning rather than an error if any arguments are unused, as there are some
  cases where devtools does not need to install the package, so unused
  arguments are false positives (#2109).

* `install()` now throws an error when it fails, as intended (#2120)

* `install()` now again reloads and re-attaches packages if they were
  previously loaded (#2111).

* `release()` no longer calls the deprecated `dr_devtools()` (#2105)

* `test()` now explicitly passes `stop_on_failure = FALSE` to
  `testthat::test_dir()` (@jameslamb, #2099)

# devtools 2.2.0

## New Features

* `create()` added back, the RStudio IDE uses `create()` in the create packages
  dialog, so removing it in version 2.1.0 broke old versions of the IDE.

* New `dev_sitrep()` function to return information about your development
  environment and diagnose common problems. The former functions
  `dr_devtools()` and `dr_github()` have been deprecated. (#1970)

* All functions taking `...` now use the ellipsis package. This catches errors
  when arguments are misspelled or incorrectly specified (#2016)

## Minor improvements and fixes

* `build_vignettes()` now correctly installs the vignette builder if it is not
  already installed (#2089).

* `dev_sitrep()` now uses the same endpoint to detect the current RStudio
  version as the IDE (#2050).

* `document()` gains a `quiet` parameter, to silence output and `check()` now
  passes its quiet argument to it (#1986).

* Add the DT package as a dependency, so that `test_coverage()` and
  `test_coverage_file()` work without having to install additional packages
  (#2085).

* `check_man()` now succeeds when `tools::undoc()` returns empty results
  (#1944).

* `check_win_*()` functions gain a `email` argument, so temporarily change the
  email the check results will be sent to (#1723).

* `install()` now explicitly unloads packages before trying to install a new
  version (#2094).

* All `install_*()` functions now attach build tools to the PATH, which makes them work on
  Windows when RTools is not on the default PATH (#2093).

* `test_coverage_file()` now works when there is not a 1 to 1 correspondence
  between test and source files (#2011).

* `release()` now works again when `pkg` is not the current working directory
  (#1974).

* `release()` now works without error when `options("repos")` is unnamed (#1956).
* `create()` added, the RStudio IDE uses `create()`, so removing it in version 2.1.0
  broke old versions of the IDE.
  
* In several places `http:` URLs were used instead of `https:`, the most 
  critical being in the `cran_mirror`, `cran_pacakges`, and `cran_submission_url`
  values which could have enabled discrete activity disclosure and person-in-the-middle 
  attacks (i.e. changing the contents while uploading/downloading). All `http:` 
  URLS have been changed to `https:` URLs. (@hrbrmstr, #2091)

# devtools 2.1.0

## New Features

* `testthat` and `roxygen2` are now added to `Imports` rather than `Suggests`,
  so they are automatically installed when you install devtools.

## Deprecated functions now removed

* `create()`, `create_description()`, `setup()`
  `use_appveyor()`, `use_build_ignore()`, `use_code_of_conduct()`,
  `use_coverage()`, `use_cran_badge()`, `use_cran_comments()`, `use_data()`,
  `use_data_raw()`, `use_dev_version()`, `use_git()`, `use_git_hook()`,
  `use_github()`, `use_github_links()`, `use_gpl3_license()`,
  `use_mit_license()`, `use_news_md()`, `use_package()`, `use_package_doc()`,
  `use_rcpp()`, `use_readme_md()`, `use_readme_rmd()`, `use_revdep()`,
  `use_rstudio()`, `use_test()`, `use_testthat()`, `use_travis()`,
  `use_vignette()`, have been removed after being deprecated in previous
  releases. Use the versions in the [usethis](https://usethis.r-lib.org/)
  package directly.

* `check_cran()`, `revdep_check()`, `revdep_check_print_problems()`,
  `revdep_check_reset()`, `revdep_check_resume()`, `revdep_check_save_summary()`,
  `revdep_email()` have been removed after being
  deprecated in previous releases. It is recommended to use the
  [revdepcheck](https://github.com/r-lib/revdepcheck) package instead.

* `system_check()`, `system_output()` have been removed after being deprecated
  in previous releases. It is recommend to use the
  [processx](https://processx.r-lib.org/) package instead.

* `build_win()` has been removed, after being deprecated in previous releases.

* `yesno()` as used in `release()` now has clearer synonyms for "yes" (@mattmalin, #1993)

## Minor improvements and fixes

* `check_rhub` gains a new argument `build_args` for arguments passed to 
`R CMD build`. `...` is now passed to `rhub::check_for_cran()` (@gaborcsardi, @maelle, #2041)

* `build_manual()` now fails if the manual fails to build. (#2056)

* `test_file()` and `test_coverage_file()` now work with C
  and C++ files in the src/ directory as well.

# devtools 2.0.2

* Two tests are now skipped when run on CRAN, as they fail due to an outdated
  pandoc and restrictions on writing to the package library respectively.

* `load_all()` now accepts 'package' objects, regaining previous behavior in
  devtools prior to 2.0.0 (#1923)

* `test()`, `test_coverage()` and `test_coverage_file()` now set the
  `TESTTHAT_PKG` environment variable, so it is more consistent with running
  the tests during `R CMD check` (testthat#787).

* `check()` now replaces existing environment variables rather than appending
  them (#1914).

# devtools 2.0.1

This is a minor release mainly fixing bugs which snuck through in the devtools
2.0.0 release.

* `install()` now correctly passes the `upgrade` parameter to
  `remotes::install_deps()` (@Paxanator, #1898).

* `install_deps()` now again works from any directory within a package (#1905)

* Add a RStudio addin for `test_coverage()`.

* All tests which use remote resources are now skipped on CRAN, to avoid
  spurious failures

# devtools 2.0.0

Devtools 2.0.0 is a _major_ release that contains work from the past year and a
half, since the major devtools release (1.13.0).

This release splits the functionality in **devtools** into a number of smaller
packages which are simpler to develop and also easier for other packages to
depend on. In particular the following packages have been spun off in what we
are calling the 'conscious uncoupling' of **devtools**.

* remotes: Installing packages (i.e. `install_github()`).
* pkgbuild: Building binary packages (including checking if build tools are available) (i.e. `build()`).
* pkgload: Simulating package loading (i.e. `load_all()`).
* rcmdcheck: Running R CMD check and reporting the results (i.e. `check()`).
* revdepcheck: Running R CMD check on all reverse dependencies, and figuring
  out what's changed since the last CRAN release (i.e. `revdep_check()`).
* sessioninfo: R session info (i.e. `session_info()`).
* usethis: Automating package setup (i.e. `use_test()`).

devtools will remain the main package developers will interact with when
writing R packages; it will just rely on these other packages internally
for most of the functionality.

## Breaking changes

There have been a number of breaking changes in this release, while this will
cause some short term pain for users it will result in a easier to understand
API in the future, so we feel the tradeoff is worthwhile.

* `devtools::install()` arguments have been changed as follows.
  - `local` -> `build`
  - `force_deps` -> `force`
  - `upgrade_dependencies` -> `upgrade`
  - `threads` -> Removed, but you can use `Ncpus`, which is passed by `...` to `install.packages()`
  - `metadata` -> Removed
  - `out_dir` -> Removed
  - `skip_if_log_exists` -> Removed

* `check()` argument `check_version` has been renamed to `remote` to better
  describe what tests are disabled (#1811)

* `get_path()`, `set_path()`, `add_path()` and `on_path()` have been removed,
  this functionality is available with `withr::with_path()` (#1796).

* The `lang` argument to `spell_check()` was removed, for compatibility with
  [spelling](https://CRAN.R-project.org/package=spelling) v1.1. (#1715)

* The previously deprecated `with_` functions have now been removed. The
  functionality has been moved to the **withr** package.

* `RCMD()`, `clean_source()`, `eval_clean()` and `evalq_clean()` have been
  removed. These functions never worked terribly well, and have been replaced
  by the much better functions in **callr**.

* `build_win()` has been renamed to `check_win_release()`, `check_win_devel()`,
  and `check_win_oldrelease()` (#1598).

## Deprecated functions

* Infrastructure functions (`use_*`) now use the implementations in **usethis**
and the versions in **devtools** are deprecated. If you use these from a package
you should switch your package to depend on **usethis** directly instead.

* The `revdep_check_*` functions have been deprecated in favor of the
  **revdepcheck** package.

* `system_check()` and `system_output()` have been deprecated in factor of the
  **processx** package.

## Major changes

* All `install_*()` functions are now re-exported from **remotes** rather than
  being defined in **devtools**

* **devtools** now depends on **roxygen2** 6.1.0: this considerably simplifies 
  `devtools::document()` and makes it more consistent with 
  `roxygen2::roxygenise()`.

* `test_file()` function added to test one or more files from a package
  (#1755).

* `test_coverage()` function added to provide a helper to compute test coverage
  using **covr** (#1628).

* `test_file()` and `test_coverage_file()` now have RStudio addins (#1650)

* `test_file_coverage()` function added to show the test coverage of one or
  more files from a package. (#1755).

* `session_info()` now uses the implementation in the **sessioninfo** package.
  Packages using `devtools::session_info()` are encouraged to switch to using
  `sessioninfo::session_info()` instead.

* `package_info()` function now re-exported from the **sessioninfo** package.

* `check()` now uses **rcmdcheck** to run and parse R CMD check output (#1153).

* Code related to simulating package loading has been pulled out into a 
  separate package, **pkgload**. The following functions have been moved to 
  pkgload without a shim: `clean_dll()`, `compile_dll()`, `dev_example()`, 
  `dev_help()`, `dev_meta()`, `find_topic()`, `imports_env()`, `inst()`, 
  `load_code()`, `load_dll()`, `ns_env()`, `parse_ns_file()`, `pkg_env()`. 
  These functions are primarily for internal use.

    `load_all()` and `unload()` have been moved to pkgload, but **devtools**
    provides shims since these are commonly used.

* `find_rtools()`, `setup_rtools()`, `has_devel()`, `compiler_flags()`,
  `build()` and `with_debug()` have moved to the new **pkgbuild** package.
  `build()` and `with_debug()` are re-exported by **devtools**

* The `spell_check()` code has been moved into the new **spelling** package and
  has thereby gained support for vignettes and package wordlists. The **devtools**
  function now wraps `spelling::spell_check_package()`.

## Minor improvements and fixes

* `check_win_*()` now build the package with `manual = TRUE` by default (#1890).

* `check()` output now works more nicely with recent changes to **rcmdcheck** (#1874).

* `reload()` now reloads loaded but not attached packages as well as attached ones.

* Executed `styler::style_pkg()` to update code style (#1851, @amundsenjunior).

* `save_all()` helper function wraps `rstudioapi::documentSaveAll()` calls (#1850, @amundsenjunior).

* `check()` now allows users to run without `--timings` (#1655)

* `update_packages()` better documented to advertise it can be used to update
  packages installed by any of the `install_*` functions.

* `check()` gains a `incoming` option to toggle the CRAN incoming checks.

* `build_vignette()` gains a `keep_md` option to allow keeping the intermediate markdown output (#1726)

* `remote_sha.github()` now correctly looks up SHA in private repositories
  (#1827, @renozao).

* **devtools** `use_*()` functions now temporarily set the active **usethis** project
  if given a pkg argument that is not the current directory. This provides
  backwards compatibility with previous behavior (#1823).

* Vignettes are now built in a separate process, and the package is installed
  before building the vignettes (#1822)

* `build_readme()` added to build the README.md from a README.Rmd (#1762)

* `build_vignettes()` now has a `clean` and `upgrade` arguments, to control
  cleaning of intermediate files and upgrading vignette dependencies
  respectively. (#1770).

* `release()` gains an additional question ensuring you updated codemeta.json
  if one exists (#1774, #1754)

* `test()` now sets `useFancyQuotes = FALSE` to better mimic the environment tests
  are run under with `R CMD check` (#1735).

* `test()` no longer passes encoding argument to `testthat::test_dir()` (#1776)

* `install_url()` can now install package binaries on windows (#1765)

* Fix skipping when installing from a full SHA (#1624)

* add `pkgdown::build_site()` wrapper (@kiwiroy, #1777)

* add pkgdown site (https://devtools.r-lib.org) (#1779, @jayhesselberth)

* `install_version()` can now install current version of CRAN package on Windows
  and macOS (@jdblischak, #1730)

* The CRAN-RELEASE file is now added to .Rbuildignore (#1711)

* `check()` and `check_built()` now have an `error_on` argument to specify if
  they should throw an error on check failures. When run non-interactively this
  is set to "warnings" unless specified.

* `check()` now sets `_R_CHECK_CRAN_INCOMING_REMOTE_` instead of
  `_R_CHECK_CRAN_INCOMING_`on R versions which support the former option
  (#1271, #1276, #1702).

* Now use cli package to draw rules - they are more aesthetically pleasing
  and the correct width in the RStudio build pane (#1627).

* `release()` has been tweaked to reflect modern submission workflow and to 
  ask questions rather than running code for you (#1632). 

* `document()`, `load_all()`, `check()`, `build()` and `test()` now
  automatically save open files when they are run inside the RStudio IDE. (#1576)

* New `check_rhub()` function to check packages using `https://builder.r-hub.io/`.

* `run_examples` was mistakenly passing `show` to
  `pkgload::run_example`, causing it to fail (@amcdavid, #1449)

* New `build_manual()` function that produces pdf manual for the package
  (@twolodzko, #1238).

* If you use git `release()` now generates a file called `CRAN-RELEASE`
  that reminds you to tag the commit that you submitted to CRAN (#1198).

* `release()` once again looks for additional release questions in the 
  correct environment (#1434).

* `submit_cran()` now checks that you're ready to submit, since this is a
  potentially expensive operation (#1228)

* `check()` defaults to running `document()` only if you have used
  roxygen previously (#1437).

* Signal an error if commas are missing in between remote entries (#1511,
  @ianmcook).

* `build_vignettes()` gains a quiet argument (#1543).

* `source_gist()` works once more when there is only a single file
  in the gist (#1266).

* In order to not run test helpers in `document()`, the `helpers` argument of
  `load_all()` is set to `FALSE` (@nbenn, #1669)

* The `my_unzip()` function is now able to use the `utils::unzip` fallback when
  R is compiled from source with no *unzip* package present
  (@theGreatWhiteShark, #1678)

* If the **foghorn** package is installed, `release()` displays the results
  of the CRAN checks (#1672, @fmichonneau).

# devtools 1.13.5
* Fix two test errors related to GitHub rate limiting and mocking base functions.

# devtools 1.13.4
* Fix test errors for upcoming testthat release.

# devtools 1.13.3
* Workaround a change in how Rcpp::compileAttributes stores the symbol names
  that broke tests.

# devtools 1.13.2
* Workaround a regression in Rcpp::compileAttributes. Add trimws implementation
  for R 3.1 support.

# devtools 1.13.1

* Bugfix for installing from git remote and not passing git2r credentials
  (@james-atkins, #1498)

* Bugfix for installation of dependencies of dependencies (@jimhester, #1409).

* Bugfix for installation of dependencies in CRAN-like repositories such as
  those created by drat (@jimhester, #1243, #1339).

* `load_all()` no longer automatically creates a description for you.

* `use_test()` template no longer includes useless comments (#1349)

* Fix `test()` compatibility with testthat versions 1.0.2 (#1503).

* Fix `install_version()`, `install_bitbucket()`, `install_local()`,
`install_url()`, `install_svn()`, `install_bioc()` gain `quiet` arguments and
properly pass them to internal functions. (#1502)

# devtools 1.13.0

## New Features

* `spell_check` gains a `dict` argument to set a custom language or dictionary

* `release()` now checks documentation for spelling errors by default.

* New `use_gpl3_license()` sets the license field in `DESCRIPTION` and
  includes a copy of the license in `LICENSE`.

## Revdep check improvements

* Various minor improvements around checking of reverse dependencies
  (#1284, @krlmlr). All packages involved are listed at the start,
  the whole process is now more resilient against package
  installation failures.

* `revdep_check()` and `revdep_check_resume()` gain a skip argument
  which takes a character vector of packages to skip.

* `revdep_check()` and `check_cran()` gain a `quiet_check` argument.
  You can use `quiet_check = FALSE` to see the actual text of R CMD
  check as it runs (not recommending with multiple threads).

* `revdep_check_resume()` now takes `...` which can be used to
  override settings from `revdep_check()`. For debugging a problem
  with package checks, try
  `revdep_check(threads = 1, quiet_check = FALSE)`

* `revdep_check()` collects timing information in `timing.md` (#1319, @krlmlr).

* Package names and examples are sorted in case-insensitive C collation (#1322, @krlmlr).

* `use_revdep()` adds `.gitignore` entry for check database (#1321, @krlmlr).

* Own package is installed in temporary library for revdep checking (#1338, @krlmlr).

* Automated revdep check e-mails now can use the new `my_version` and
  `you_cant_install` variables. The e-mail template has been updated
  to use these variables (#1285, @krlmlr).

* Installation failures are logged during revdep checking, by default in
  `revdep/install`. Once an installation has failed, it is not attempted
  a second time (#1300, @krlmlr).

* Print summary table in README.md and problems.md (#1284, @krlmlr).

* Revdep check improvements (#1284)

## Bug fixes and minor improvements

* Handle case of un-installed package being passed to session_info (#1281).

* Using authentication to access Github package name. (#1262, @eriknil).

* `spell_check()` checks for hunspell before running (#1475, @jimvine).

* `add_desc_package()` checks for package dependencies correctly (#1463, @thomasp85).

* Remove deprecated `args` argument from `install_git()` to allow passthrough to `install` (#1373, @ReportMort).

* added a `quiet` argument to `install_bitbucket()`, with a default value
  of `FALSE` (fixes issue #1345, @plantarum).

* `update_packages()` allows for override of interactive prompt (#1260, @pkq).

* `use_test()` template no longer includes useless comments (#1349)

* Add encoding support in `test_dir()` call by adding reference to pkg$encoding (#1306, @hansharhoff)

* Parse valid Git remote URLs that lack trailing `.git`, e.g. GitHub browser URLs (#1253, @jennybc).

* Add a `check_bioconductor()` internal function to automatically install
  BiocInstaller() if it is not installed and the user wants to do so.

* Improve Git integration. `use_git_ignore()` and `use_git_config()` gain
  `quiet` argument, tests work without setting `user.name` and `user.email` Git
  configuration settings (#1320, @krlmlr).

* Improve Git status checks used in `release()` (#1205, @krlmlr).

* Improved handling of local `file://` repositories in `install()` (#1284, @krlmlr).

* `setup()` and `create()` gain new `quiet` argument (#1284, @krlmlr).

* Avoid unnecessary query of `available_packages()` (#1269, @krlmlr).

* Add cache setting to AppVeyor template (#1290, @krlmlr).

* Fix AppVeyor test by manually installing `curl` (#1301).

* `install(dependencies = FALSE)` doesn't query the available packages anymore (@krlmlr, #1269).

* `use_travis()` now opens a webpage in your browser to more easily activate
  a repo.

* `use_readme_rmd()` and `use_readme()` share a common template with sections
  for package overview, GitHub installation (if applicable), and an example
  (@jennybc, #1287).

* `test()` doesn't load helpers twice anymore (@krlmlr, #1256).

* Fix auto download method selection for `install_github()` on R 3.1 which
  lacks "libcurl" in `capabilities()`. (@kiwiroy, #1244)

* Fix removal of vignette files by not trying to remove files twice anymore (#1291)
* add timestamp to messages in `build_win()` (@achubaty, #1367).  

# devtools 1.12.0

## New features

* New `install_bioc()` function and bioc remote to install Bioconductor
  packages from their SVN repository.

* `install_dev_deps()` gets everything you need to start development on source
  package - it installs all dependencies, and roxygen2 (#1193).

* `use_dev_version()` automates the process of switching from a release
  version number by tweaking the `DESCRIPTION`, adding a heading to
  `NEWS.md` (if present), and checking into git (if you use it) (#1076.)

* `use_github()` accepts a host argument, similar to `install_github()` 
  (@ijlyttle, #1101)
  
## Bug fixes and minor improvements

* Update with Rtools-3.4 information, (@jimhester)

* devtools now uses https to access the RStudio CRAN mirror if it will work
  on your system (#1059)

* Handle case when a GitHub request returns a non-JSON error response.
  (@jimhester, #1204, #1211)

* Suggested packages, including those specified as `Remotes:` are now installed
  after package installation. This allows you to use circular `Remotes:`
  dependencies for two related packages as long as one of the dependencies is a
  Suggested package. (@jimhester, #1184, hadley/dplyr#1809)

* bug fix for installation of binary packages on windows, they must be
  installed directly from a zip file. (@jimhester, #1191, #1192)

* `build_vignette()` will now only install the "VignetteBuilder" if it's 
  not present, not try and upgrade it if it is (#1139).

* `clean_dll()` Only removes package_name.def files and now operates
  recursively. (@jimhester, #1175, #1159, #1161)
  
* `check_man()` now prints a message if no problems are found (#1187).

* `install_*` functions and `update_packages()` refactored to allow updating of
  packages installed using any of the install methods. (@jimhester, #1067)

* `install_github()` now uses `https://api.github.com` as the host argument, so
  users can specify 'http:' or other protocols if needed. (@jimhester, #1131, #1200)

* `load_all()` runs package hooks before sourcing test helper files 
  allowing test helper to make use of objects created when a package is loaded 
  or attached. (@imanuelcostigan, #1146) 

* `revdep_check()` will now create the `revdep/` directory if it does not
  already exist (#1178).

* `source_gist()` gains a `filename` argument to specify a particular file to
  source from a GitHub gist. (@ateucher, #1172)

* Add a default codecov.yml file to turn off commenting with `use_coverage()`
  (@jimhester, #1188)
  
* Bug fix for 'nchar(text) : invalid multibyte string' errors when running
  `write_dcf()` on DESCRIPTION files with non-ASCII encodings (#1224, @jimhester).

# devtools 1.11.1

* Bug fix in `search_path_for_rtools()` using the gcc-4.9.3 toolchain when
  there is no rtools setting in the windows registry. (@jimhester, #1155)

# devtools 1.11.0

## Infrastructure helpers

* `create_description()` now sets `Encoding: UTF-8`. This helps non-English
  package authors (#1123).

* All `use_` function have been overhauled to be more consistent, particularly
  around notification. Most functions now also ask to overwrite if a file 
  already exists (#1074).

* `use_coverage()` now adds covr to "Suggests", rather than recommending you
  install it explicitly in `.travis.yml`.

* `use_cran_badge()` now uses HTTPS URL (@krlmlr, #1124).

* `use_github()` now confirms that you've picked a good title and description
  (#1092) and prints the url of the repo (#1063).

* `use_news()`, and `use_test()` open the files in RStudio (if you're using
  it and have the rstudioapi package installed).

* `use_testthat()` tells you what it's doing (#1056).  

* `use_travis()` generates a template compatible with the newest R-travis.

* `use_readme_md()` creates a basic `README.md` template (#1064).

* `use_revdep()` has an updated template for the new revdep check 
  system (#1090, @krlmlr). 

* Removed the deprecated `use_coveralls()`, `add_rstudio_project()`, 
  `add_test_infrastructure()`, and `add_travis()`.

* Deprecated `build_github_devtools()` has been removed.

## Checks and release()

* `check()` now always succeeds (instead of throwing an error when 
  `R CMD check` finds an `ERROR`), returning an object that summarises
  the check failures.

* `check()` gains `run_dont_test` and `manual` arguments to control whether or 
  not `\donttest{}` tests are tested, or manuals are built. This defaults to 
  `FALSE`, but `release()` runs check with it set to `TRUE` (#1071; #1087, 
  @krlmlr).

* The `cleanup` argument to `check()` is deprecated: it now always returns
  the path to the check directory.

* `check_built()` allows you to run `R CMD check` on an already built package.

* `check_cran()` suppresses X11 with `DISPLAY = ""`.

* `release()` has been tweaked to improve the order of the questions, 
  and to ensure that you're ok with problems. It  warns if both `inst/NEWS.Rd` 
  and `NEWS.md` exist (@krlmlr, #1135), doesn't throw error if Git head is 
  detached (@krlmlr, #1136).

* `release()` gains an `args` argument to control build options, e.g.
  to allow passing `args = "--compact-vignettes=both"` for packages with
  heavy PDF vignettes (@krlmlr, #1077).

* `system_check()` gains new arguments `path` to controls the working directory
  of the command, and `throw` to control whether or not it throws an error
  on command failure. `env` has been renamed to the more explicit `env_vars`.

## Revdep checks

`revdep_check()` has been overhauled. 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 as `check/check.rds`, and the other `revdep()` functions read from that cache. This also allows you to resume a partial run with `revdep_check_resume()`. This should be a big time saver if something goes unexpected wrong in the middle of the checks. You can blow away the cache and start afresh with `revdep_check_reset()`.

`revdep_check_save_summary()` now creates `README.md` to save one level of clicking in github. It also creates a `problems.md` that contains only results for only packages that had warnings or errors. Each problem is limited to at most 25 lines of output - this avoids lengthy output for failing examples. `revdep_check_print_problems()` prints a bulleted list of problems, suitable for inclusion in your `cran-comments.md`.

Summary results are reported as they come in, every then messages you'll get a message giving elapsed and estimated remaining time.

An experimental `revdep_email()` emails individual maintainers with their `R CMD check` summary results (#1014). See testthat and dplyr for example usage.

There were a handful of smaller fixes:

* `revdep_check()` doesn't complain about missing `git2r` package anymore
  (#1068, @krlmlr).

* Package index caches for `revdep_check()` now time out after 30 minutes.

* `revdep_check_save_logs()` has been removed - it is just not that useful.

* `revdep_check_summary()` has been removed - it never should have been
  part of the exported API.

## Other improvements

* Devtools now uses new gcc toolchain on windows, if installed (@jimhester).

* `install_git()` now allows you to pass credentials to git2r to specify
  specific ssh credentials (@onlymee, #982)

* `load_all()` now sources all test helpers if you use testthat. This makes it 
  much easier to interactively run tests (#1125). `load_all()` also correctly 
  handles `unix` and `windows` subdirectories within `R` (@gaborcsardi, #1102)

* `build_win()` defaults to only R-devel, since this is most commonly
  what you want.

* Help shims now inform you that you're using development documentation 
  (#1049).

* `git_sha1()` Fix fetching the latest git commit so that it also works
  for shallow git clones, i.e. git clones which make use of depth.
  (#1048, #1046, @nparley)

# devtools 1.10.0

## New features

* `curl`, `evaluate`, `roxygen2` and `rversions` have 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()` or `build()` 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 contains 
  `DESCRIPTION`) (#985).

* `use_news_md()` adds a basic `NEWS.md` template (#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-donttest` since you do need to test
  code in `\donttest()` for CRAN submission (#1002).

## Package installation

* `install()` installs packages specified in the `Additional_repositories`
  field, 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 a `metadata` argument which lets you add extra fields to
  the `DESCRIPTION` on install. (#1027, @rmflight)
  
* `install_github()` and `install_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 the
  `DESCRIPTION` (#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).

## Bug fixes and minor improvements

* `check_dev_versions()` checks only package dependencies (#983).

* `check_man()` replaces `check_doc()` (since most other functions are
  named after the corresponding directory). `check_doc()` will hang around
  as an alias for the foreseeable future (#958).

* `create()` produces a dummy namespace will fake comment so roxygen2 will 
  overwrite silently (#1016).

* `create()` and `setup()` are more permissive -- they now accept a path to
  either a new directory or empty directory. (#966, @kevinushey)

* `document()` now only runs `update_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 that `NEWS.md` isn'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 respects `mustWork = TRUE` and throws an error
  if the file does not exist (#1034).

* `use_appveyor()` template now creates `failure.zip` artifact instead of
  polluting the logs with `R CMD check` output (#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 includes `revdep_check_save_logs` in 
  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).

# devtools 1.9.1

* Avoid importing heavy dependencies to speed up loading (#830, @krlmlr).

* Remove explicit `library(testthat)` call in `test()` (#798, @krlmlr).

* `as.package()` and `load_all()` gain new argument `create`. Like other 
  functions with a `pkg` argument, `load_all()` looks for a `DESCRIPTION` file 
  in parent directories - if `create = TRUE` it will be automatically
  created if there's a `R/` or `data/` directory (#852, @krlmlr).

* `build_vignettes()` gains dependencies argument (#825, @krlmlr).

* `build_win()` now uses `curl` instead of `RCurl` for 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 when `cran = TRUE`. Instead of 
  attempting to simulate `--as-cran` behaviour by turning on certain env vars,
  it now uses `--as-cran` and turns off problematic checks with env vars (#866).
  The problematic `cran_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 as `Remotes` in the `DESCRIPTION` file (#902, @jimhester).
  See `vignette("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, set `upgrade_dependencies = FALSE` 
  (#863). `install_deps()` is more careful with `...` - this means additional
  arguments to `install_*` are more likely to work (#870).

* `install_gitorious()` has been removed since gitorious no longer exists
  (#913).

* `load_all()` no longer fails if a `useDynLib()` 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 
  sets `NOT_CRAN` env var to `false` (#809). This makes testing more similar to
  CRAN so that more packages should pass cleanly. It also sets `RGL_USE_NULL`
  to `true` to 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,
  deprecate `use_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/hooks` if needed (#888)

* GitHub integration extended: `use_github()` gains a `protocol` argument (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()` and `check_failures()` are now exported (#824, #839, 
  @krlmlr).

* `use_readme_rmd()` uses `uses_git()` correctly  (#793).

* `with_debug()` now uses `with_makevars()` rather than `with_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
   from `NAMESPACE` fails (@krlmlr, #921).

# devtools 1.8.0
 
## Helpers

* New `dr_devtools()` runs some common diagnostics: are you using the 
  latest version of R  and devtools? It is run automatically by 
  `release()` (#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.

## Package installation and info

* `build_vignettes()` automatically installs the VignetteBuilder package,
  if necessary (#736).

* `install()` and `install_deps()` gain a `...` argument, so additional
  arguments can be passed to `utils::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()` (and `dev_package_deps()`) determines all recursive 
  dependencies and whether or not they're up-to-date (#663). Use
  `update(package_deps("xyz"))` to update out of date dependencies. This code 
  is used in `install_deps()` and `revdep_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).

## Git and github

* 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 line `git` client. It has two small downsides: `install_git()`
  no longer accepts additional `args`, 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).

## Bug fixes and minor improvements

* Previously, devtools ran all external R processes with `R --vanilla`.
  Now it only suppresses user profiles, and constructs a custom `.Rprofile` to
  override the default.  Currently, this `.Rprofile` sets up the `repos` option.
  Among others, this enables the cyclic dependency check in `devtools::release`
  (#602, @krlmlr).

* `R_BROWSER` and `R_PDFVIEWER` environment 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 uses `normalizePath()`. Hopefully this will make it more
  likely to work if you're on windows and have a space in the path.

* `lint()` gains a `cache` argument (@jimhester, #708).

* Fixed namespace issues related to `stats::setNames()` (#734, #772) and 
  `utils::unzip()` (#761, @robertzk).

* `release()` now reminds you to check the existing CRAN check results page
  (#613) and shows file size before uploading to CRAN (#683, @krlmlr).

* `RCMD()` and `system_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
  to `testthat::test_dir` (@jimhester, #747)

* `use_travis()` now suggests you link to the svg icon since that looks a 
  little sharper. Default template sets `CRAN: http://cran.rstudio.com/` to 
  enable the cyclic dependency check.

* `NOT_CRAN` envvar no longer overrides externally set variable.

* `check(check_version = TRUE)` also checks spelling of the `DESCRIPTION`; if no
  spell checker is installed, a warning is given (#784, @krlmlr).

# devtools 1.7.0

## Improve reverse dependency checking

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.

## New helpers

* `lint()` runs `lintr::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 a `cran-comments.md` template and adds it
  to `.Rbuildignore` to 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 a `README.md` from a
  `README.Rmd` with knitr.

## Minor improvements

* Deprecated `doc_clean` argument to `check()` has been removed.

* Initial package version in `create()` is now `0.0.0.9000` (#632).
 `create()` and `create_description()` checks that the package name is 
  valid  (#610).

* `load_all()` runs `roxygen2::update_collate()` before loading code. This
  ensures that files are sourced in the way you expect, as defined by 
  roxygen `@include` tags. If you don't have any `@include` tags, the
  collate will be not be touched (#623).

* `session_info()` gains `include_base` argument 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-manual` switch, both for
    checking and for actually building the release package (#603, @krlmlr). 
    `build()` gains an additional argument `manual`, defaulting to `FALSE`, 
    and `check()` gains `...` unmodified to `build()`.
  
* `use_travis()` now sets an environment variable so that any WARNING will
  also cause the build to fail (#570).

* `with_debug()` and `compiler_flags()` set `CFLAGS` etc instead of 
  `PKG_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 like `create()` but assumes an existing, not necessarily 
  empty, directory (#627, @krlmlr).

## Bug fixes

* 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 like `R CMD build` et al. (#640, @krlmlr).

# devtools 1.6.1

* Don't set non-portable compiler flags on Solaris.

* The file `template.Rproj` is now correctly installed and the function
  `use_rstudio` works as it should. (#595, @hmalmedal)

* The function `use_rcpp` will now create the file `src/.gitignore` with the
  correct wildcards. (@hmalmedal)

* The functions `test`, `document`, `load_all`, `build`, `check` and any
  function that applies to some package directory will work from subdirectories
  of a package (like the "R" or "inst/tests" directories). (#616, @robertzk)

# devtools 1.6

## Tool templates and `create()`

* `create()` no longer generates `man/` directory - roxygen2 now does
  this automatically. It also no longer generates an package-level doc
  template. If you want this, use `use_package_doc()`. It also makes a dummy 
  namespace so that you can build & reload without running `document()` first.

* New `use_data()` makes it easy to include data in a package, either 
  in `data/` (for exported datasets) or in `R/sysdata.rda` (for internal
  data). (#542)
  
* New `use_data_raw()` creates `data-raw/` directory for reproducible
  generation of `data/` 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()` to `use_rstudio()`, `add_travis()` to 
  `use_travis()`, `add_build_ignore()` to `use_build_ignore()`, and 
  `add_test_infrastructure()` to `use_testthat()` (old functions are 
  aliased to new)

## The release process

* You can add arbitrary extra questions to `release()` by defining a function 
  `release_questions()` in your package. Your `release_questions()` should 
  return a character vector of questions to ask (#451). 

* `release()` uses new CRAN submission process, as implemented by 
  `submit_cran()` (#430).

## Package installation

* All `install_*` now use the same code and store much useful metadata.
  Currently only `session_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 potentially require 
  all suggested packages to also be installed. Use `build_vignettes = TRUE` to 
  force building and to install all suggested packages (#573).
  
* `install_bitbucket()` has been bought into alignment with `install_github()`:
  this means you can now specify repos with the compact `username/repo@ref`
  syntax. The `username` is 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:

    * `username` is deprecated - please include the user in the repo name: 
      `rstudio/shiny`, `hadley/devtools` etc. 
      
    * `dependencies = TRUE` is no longer forced (regression in 1.5) 
       (@krlmlr, #462).
      
    * Deprecated parameters `auth_user`, `branch`, `pull` and `password` have 
      all been removed.
  
    * New `host` argument 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"` 
      or `ref = github_release()` (@krlmlr, #350).

* `install_gitorious()` has been bought into alignment with `install_github()`:
  this means you can now specify repos with the compact `username/repo@ref`
  syntax. 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 hence `install_url()` now work when the downloaded
  file decompresses without additional top-level directory (#537).

## Other minor improvements and bug fixes

* If you're using RStudio, and 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()`, `?`, and `system.file()` are now made available when a package is
  loaded with `load_all()`, even if the devtools package isn't attached.

* `httr` 0.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 than `sessionInfo()` and includes where
  packages where installed from (#526).

* `rstudioapi` package 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.

## Removed functionality

* The `fresh` argument to `test()` 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's `tempdir()`
  directory (@richfitz, #531).

# devtools 1.5

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 from `test()` 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 an `rstudio` argument which will automatically create
  an RStudio project in the package directory. It defaults to `TRUE`:
  if you don't use RStudio, just delete the file.

* `add_travis()` adds a basic travis template to your package. `.travis.yml`
  is automatically added to `.Rbuildignore` to 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.

## Minor improvements

* `build_win()` now builds R-release and R-devel by default (@krlmlr, #438).
  It also gains parameter `args`, which is passed on to `build()`
  (@krlmlr, #421).

* `check_doc()` now runs `document()` automatically.

* `install()` gains `thread` argument which allows you to install multiple
  packages in parallel (@mllg, #401). `threads` argument to `check_cran()`
  now defaults to `getOption("Ncpus")`

* `install_deps(deps = T)` no longer installs all dependencies of
  dependencies (#369).

* `install_github()` now prefers personal access tokens supplied to
  `auth_token` rather than passwords (#418, @jeroenooms).

* `install_github()` now defaults to `dependencies = TRUE` so 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 `help` and `?`, which will search
  devtools-loaded packages as well as normally-loaded packages.

## Bug fixes

* `check_devtools()` no longer called by `check()` because the relevant
  functionality is now included in `R CMD CHECK` and it was causing
  false positives (#446).

* `install_deps(TRUE)` now includes packages listed in `VignetteBuilder` (#396)

* `build()` no longer checks for `pdflatex` when building vignettes, as
  many modern vignettes don't need it (#398). It also uses
  `--no-build-vignettes` for >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 the `R CMD
  check` output when called with a custom `check_dir`. (Thanks to @brentonk)

* `check_cran()` records check times for each package tested.

* Improved default `DESCRIPTION` file created by `create_description()`.
  (Thanks to @ncarchedi, #428)

* Fixed bug in `install_github()` that prevented installing a pull request by
  supplying `repo = "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 package `DESCRIPTION`
  file, protecting users from the vague `error: contains a blank line` error.
  (#394)

* `with_options()` now works, instead of throwing an error (Thanks to
  @krlmlr, #434)

# devtools 1.4.1

* Fixed bug in `wd()` when `path` was omitted. (#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)

# devtools 1.4

## Installation improvements

* `install()` now respects the global option `keep.source.pkgs`.

* `install()` gains a `build_vignettes` which defaults to TRUE, and ensures
  that vignettes are built even when doing a local install. It does this
  by forcing `local = FALSE` if the package has vignettes, so `R CMD build`
  can follow the usual process. (#344)

* `install_github()` now takes repo names of the form `username/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.

## Other minor improvements

* `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 argument `dependencies` now works like
  `install.packages()` (in previous versions, it was essentially
  `c("Depends", "Imports", "LinkingTo")`) (thanks, Yihui Xie, #355)

* `check()` and `check_cran()` gain new `check_dir` argument to control where
  checking takes place (#337)

* `check_devtools()` no longer incorrectly complains about a `vignettes/`
  directory

* Decompression of zip files now respects `getOption("unzip")` (#326)

* `dev_help` will 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()` (and `source_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 `.R` or `.r`
  extensions, and gains a `quiet` argument. (#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.


# devtools 1.3

## Changes to best practices

* 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 to `reset = TRUE` so 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 both `inst/test` and `tests/testthat` for unit tests.
  It is recommended to use `tests/testthat` because it allows users to
  choose whether or not to install test. If you move your tests from
  `inst/tests` to `tests/testthat`, you'll also need to change
  `tests/test-all.R` to run `test_check()` instead of `test_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 features

* 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.

## Minor improvements and bug fixes

* `build()` gains `args` parameter allowing you to add additional arbitrary
  arguments, and `check()` gains similar `build_args` parameter.

* `install_git` gains `git_arg` parameter 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 in `inst/doc` from
  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
 `dependencies` argument to `install_*()` (thanks to Martin Studer)

* The deprecated `show_rd()` function has now been removed.

* `install_bitbucket()` gains `auth_user` and `password` params 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 create `man/` directory

* Default `DESCRIPTION` gains `LazyData: true`

* `create_description()` now checks that the directory is probably a package
  by looking for `R/`, `data/` or `src/` 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

# devtools 1.2

## Better installation

* `install` gains a `local` option 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, run `local = FALSE`

* `install` now uses option `devtools.install.args` for default installation
  arguments. This allows you to set any useful defaults (e.g. `--no-multiarch`)
  in your Rprofile.

* `install_git` gains `branch` argument to specify branch or tag (Fixes #255)

## Clean sessions

* `run_examples` and `test` gain a `fresh` argument 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 (like `browser()`) won't work.(Fixes #258)

* New functions `eval_clean` and `evalq_clean` make it easy to evaluate code
  in a clean R session.

* `clean_source` loses the `vanilla` argument (which did not work) and gains
  a `quiet` argument

## New features

* `source_url` and `source_gist` now 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_vignettes` builds using `buildVignette()` and movies/copies outputs
  using the same algorithm as `R CMD build`. This means that
  `build_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 -pedantic` and from `load_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 `DESCRIPTION` file present, `load_all()` will automatically
  create one using `create_description()`.  You can set options in your
  `.Rprofile` to control what it contains: see `package?devtools` for more
  details.

## Minor improvements

* `check()` now also sets environment variable
  `_R_CHECK_CODE_DATA_INTO_GLOBALENV_` to TRUE (to match current `--as-cran`
  behaviour) (Fixes #256)

* Improved default email sent by `release()`, eliminating `create.post()`
  boilerplate

* `revdep` includes 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 respects `LazyData` and correctly
  exports datasets by default (Fixes #242)

* `with_envvar` gains the option to either replace, prefix or suffix existing
  environmental variables. The default is to replace, which was the previous
  behaviour.

* `check_cran` includes `sessionInfo()` in the summary output (Fixes #273)

* `create()` gains a `check` argument which defaults to FALSE.

* `with_env` will 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.

# devtools 1.1

* `source_gist()` has been updated to accept new gist URLs with username.
  (Fixes #247)

* `test()` and `document()` 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)

# devtools 1.0

## Improvements to package loading

* Rcpp attributes are now automatically compiled during build.

* Packages listed in depends are `require()`d (Fixes #161, #178, #192)

* `load_all` inserts a special version of `system.file` into the package's
  imports environment. This tries to simulate the behavior of
  `base::system.file` but gives modified results because the directory structure
  of installed packages and uninstalled source packages is different.
  (Fixes #179). In other words, `system.file` should 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 that `Makevars` and makefiles will now be respected
  and generally there should be fewer mismatches between `load_all` and
  the regular install and reload process.

* S4 classes are correctly loaded and unloaded.

## Windows

* 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.

## Minor features

* `check_cran` now downloads packages from cran.rstudio.com.

* `check()` now makes the CRAN version check optional, and off by default. The
  `release()` function still checks the version number against CRAN.

* In `check()`, it is optional to require suggested packages, using the
  `force_suggests` option.

* 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 from
  `with_libpaths()`, which replaces the existing libpaths.

* New function `install_git()` installs a package directly from a git
  repository. (Thanks to David Coallier)

* If `pdflatex` isn't available, don't try to build vignettes with `install()`
  or `check()`. (Fixes #173)

* `install_github()` now downloads from a new URL, to reflect changes on how
  files are hosted on GitHub.

* `build()` now has a `vignettes` option to turn off rebuilding vignettes.

* `install(quick=TRUE)` now builds the package without rebuilding vignettes.
  (Fixes #167)

* All R commands called from `devtools` now have the environment variable
  `NOT_CRAN` set, 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.

## Bug fixes

* 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_index` related to using `rm()` has
  been fixed. (Thanks to Gregory Jefferis)

* `revdep()` now lists "Suggests" packages, in addition to "Depends" and
  "Imports".

* `revdep_check()` now correctly passes the `recursive` argument to `revdep()`.

* 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)

# devtools 0.8.0

## New features

* `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 #116)

* 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 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 #119)

* `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.

## Package paths

* `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.

## Loading

* 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 '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++/
  Fortran source code, and clean up the compiled objects, respectively.
  (Winston Chang. Fixes #131)

## Bug fixes

* `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)

## Introspection

* 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
  package.

* 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

## Installation

* `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 #77)

* `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)

## Checking

* `with_debug` function temporarily sets env vars so that compilation is
  performed with the appropriate debugging flags set. Contributed by Andrew
  Redd.

* `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)

## Other new features

* 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
  Redd)

* `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 "https://gist.github.com/nnn"

* 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

## Bug fixes

* `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

## New features

* `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
  Takahashi)

* 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.

## Installation

* 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 windows behaviour

* 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)

## Bug fixes

* 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 #25)

# devtools 0.5.1

* Fix error in that was causing R commands to fail on windows.

# devtools 0.5

## New functions

* new `show_rd` function that will show the development version of a help
  file.

## Improvements and bug fixes

* 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 functions

* 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 macOS (if you're using windows already, use `build(binary = T)`)

## Improvements and bug fixes

* 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
  positives

* `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.