summaryrefslogtreecommitdiffstats
path: root/CHANGELOG.md
blob: eea58630389529b5936ad4f92a1aaec40aa6dc99 (plain)
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
2.11.0 - 2021-03-07
===================

### Features
- Improve warning for mutable ref.
    - #1809 PR by @JamMarHer.
- Add support for `post-merge` hook.
    - #1800 PR by @psacawa.
    - #1762 issue by @psacawa.
- Add `r` as a supported hook language.
    - #1799 PR by @lorenzwalthert.

### Fixes
- Fix `pre-commit install` on `subst` / network drives on windows.
    - #1814 PR by @asottile.
    - #1802 issue by @goroderickgo.
- Fix installation of `local` golang repositories for go 1.16.
    - #1818 PR by @rafikdraoui.
    - #1815 issue by @rafikdraoui.

2.10.1 - 2021-02-06
===================

### Fixes
- Fix `language: golang` repositories containing recursive submodules
    - #1788 issue by @gaurav517.
    - #1789 PR by @paulhfischer.

2.10.0 - 2021-01-27
===================

### Features
- Allow `ci` as a top-level map for configuration for https://pre-commit.ci
    - #1735 PR by @asottile.
- Add warning for mutable `rev` in configuration
    - #1715 PR by @paulhfischer.
    - #974 issue by @asottile.
- Add warning for `/*` in top-level `files` / `exclude` regexes
    - #1750 PR by @paulhfischer.
    - #1702 issue by @asottile.
- Expose `PRE_COMMIT_REMOTE_BRANCH` environment variable during `pre-push`
  hooks
    - #1770 PR by @surafelabebe.
- Produce error message for `language` / `language_version` for non-installable
  languages
    - #1771 PR by @asottile.

### Fixes
- Fix execution in worktrees in subdirectories of bare repositories
    - #1778 PR by @asottile.
    - #1777 issue by @s0undt3ch.

2.9.3 - 2020-12-07
==================

### Fixes
- Fix crash on cygwin mismatch check outside of a git directory
    - #1721 PR by @asottile.
    - #1720 issue by @chronoB.
- Fix cleanup code on docker volumes for go
    - #1725 PR by @fsouza.
- Fix working directory detection on SUBST drives on windows
    - #1727 PR by @mrogaski.
    - #1610 issue by @jcameron73.

2.9.2 - 2020-11-25
==================

### Fixes
- Fix default value for `types_or` so `symlink` and `directory` can be matched
    - #1716 PR by @asottile.
    - #1718 issue by @CodeBleu.

2.9.1 - 2020-11-25
==================

### Fixes
- Improve error message for "hook goes missing"
    - #1709 PR by @paulhfischer.
    - #1708 issue by @theod07.
- Add warning for `/*` in `files` / `exclude` regexes
    - #1707 PR by @paulhfischer.
    - #1702 issue by @asottile.
- Fix `healthy()` check for `language: python` on windows when the base
  executable has non-ascii characters.
    - #1713 PR by @asottile.
    - #1711 issue by @Najiva.

2.9.0 - 2020-11-21
==================

### Features
- Add `types_or` which allows matching multiple disparate `types` in a hook
    - #1677 by @MarcoGorelli.
    - #607 by @asottile.
- Add Github Sponsors / Open Collective links
    - https://github.com/sponsors/asottile
    - https://opencollective.com/pre-commit

### Fixes
- Improve cleanup for `language: dotnet`
    - #1678 by @rkm.
- Fix "xargs" when running windows batch files
    - #1686 PR by @asottile.
    - #1604 issue by @apietrzak.
    - #1604 issue by @ufwtlsb.
- Fix conflict with external `rbenv` and `language_version: default`
    - #1700 PR by @asottile.
    - #1699 issue by @abuxton.
- Improve performance of `git status` / `git diff` commands by ignoring
  submodules
    - #1704 PR by @Vynce.
    - #1701 issue by @Vynce.

2.8.2 - 2020-10-30
==================

### Fixes
- Fix installation of ruby hooks with `language_version: default`
    - #1671 issue by @aerickson.
    - #1672 PR by @asottile.

2.8.1 - 2020-10-28
==================

### Fixes
- Allow default `language_version` of `system` when the homedir is `/`
    - #1669 PR by @asottile.

2.8.0 - 2020-10-28
==================

### Features
- Update `rbenv` / `ruby-build`
    - #1612 issue by @tdeo.
    - #1614 PR by @asottile.
- Update `sample-config` versions
    - #1611 PR by @mcsitter.
- Add new language: `dotnet`
    - #1598 by @rkm.
- Add `--negate` option to `language: pygrep` hooks
    - #1643 PR by @MarcoGorelli.
- Add zipapp support
    - #1616 PR by @asottile.
- Run pre-commit through https://pre-commit.ci
    - #1662 PR by @asottile.
- Add new language: `coursier` (a jvm-based package manager)
    - #1633 PR by @JosephMoniz.
- Exit with distinct codes: 1 (user error), 3 (unexpected error), 130 (^C)
    - #1601 PR by @int3l.

### Fixes
- Improve `healthy()` check for `language: node` + `language_version: system`
  hooks when the system executable goes missing.
    - pre-commit/action#45 issue by @KOliver94.
    - #1589 issue by @asottile.
    - #1590 PR by @asottile.
- Fix excess whitespace in error log traceback
    - #1592 PR by @asottile.
- Fix posixlike shebang invocations with shim executables of the git hook
  script on windows.
    - #1593 issue by @Celeborn2BeAlive.
    - #1595 PR by @Celeborn2BeAlive.
- Remove hard-coded `C:\PythonXX\python.exe` path on windows as it caused
  confusion (and `virtualenv` can sometimes do better)
    - #1599 PR by @asottile.
- Fix `language: ruby` hooks when `--format-executable` is present in a gemrc
    - issue by `Rainbow Tux` (discord).
    - #1603 PR by @asottile.
- Move `cygwin` / `win32` mismatch error earlier to catch msys2 mismatches
    - #1605 issue by @danyeaw.
    - #1606 PR by @asottile.
- Remove `-p` workaround for old `virtualenv`
    - #1617 PR by @asottile.
- Fix `language: node` installations to not symlink outside of the environment
    - pre-commit-ci/issues#2 issue by @DanielJSottile.
    - #1667 PR by @asottile.
- Don't identify shim executables as valid `system` for defaulting
  `language_version` for `language: node` / `language: ruby`
    - #1658 issue by @adithyabsk.
    - #1668 PR by @asottile.


2.7.1 - 2020-08-23
==================

### Fixes
- Improve performance of docker hooks by removing slow `ps` call
    - #1572 PR by @rkm.
    - #1569 issue by @asottile.
- Fix un-`healthy()` invalidation followed by install being reported as
  un-`healthy()`.
    - #1576 PR by @asottile.
    - #1575 issue by @jab.
- Fix rare file race condition on windows with `os.replace()`
    - #1577 PR by @asottile.

2.7.0 - 2020-08-22
==================

### Features
- Produce error message if an environment is immediately unhealthy
    - #1535 PR by @asottile.
- Add --no-allow-missing-config option to init-templatedir
    - #1539 PR by @singergr.
- Add warning for old list-style configuration
    - #1544 PR by @asottile.
- Allow pre-commit to succeed on a readonly store.
    - #1570 PR by @asottile.
    - #1536 issue by @asottile.

### Fixes
- Fix error messaging when the store directory is readonly
    - #1546 PR by @asottile.
    - #1536 issue by @asottile.
- Improve `diff` performance with many hooks
    - #1566 PR by @jhenkens.
    - #1564 issue by @jhenkens.


2.6.0 - 2020-07-01
==================

### Fixes
- Fix node hooks when `NPM_CONFIG_USERCONFIG` is set
    - #1521 PR by @asottile.
    - #1516 issue by @rkm.

### Features
- Skip `rbenv` / `ruby-download` if system ruby is available
    - #1509 PR by @asottile.
- Partial support for ruby on windows (if system ruby is installed)
    - #1509 PR by @asottile.
    - #201 issue by @asottile.

2.5.1 - 2020-06-09
==================

### Fixes
- Prevent infinite recursion of post-checkout on clone
    - #1497 PR by @asottile.
    - #1496 issue by @admorgan.

2.5.0 - 2020-06-08
==================

### Features
- Expose a `PRE_COMMIT=1` environment variable when running hooks
    - #1467 PR by @tech-chad.
    - #1426 issue by @lorenzwalthert.

### Fixes
- Fix `UnicodeDecodeError` on windows when using the `py` launcher to detect
  executables with non-ascii characters in the path
    - #1474 PR by @asottile.
    - #1472 issue by DrFobos.
- Fix `DeprecationWarning` on python3.9 for `random.shuffle` method
    - #1480 PR by @asottile.
    - #1479 issue by @isidentical.
- Normalize slashes earlier such that global `files` / `exclude` use forward
  slashes on windows as well.
    - #1494 PR by @asottile.
    - #1476 issue by @harrybiddle.

2.4.0 - 2020-05-11
==================

### Features
- Add support for `post-commit` hooks
    - #1415 PR by @ModischFabrications.
    - #1411 issue by @ModischFabrications.
- Silence pip version warning in python installation error
    - #1412 PR by @asottile.
- Improve python `healthy()` when upgrading operating systems.
    - #1431 PR by @asottile.
    - #1427 issue by @ahonnecke.
- `language: python_venv` is now an alias to `language: python` (and will be
  removed in a future version).
    - #1431 PR by @asottile.
- Speed up python `healthy()` check.
    - #1431 PR by @asottile.
- `pre-commit autoupdate` now tries to maintain quoting style of `rev`.
    - #1435 PR by @marcjay.
    - #1434 issue by @marcjay.

### Fixes
- Fix installation of go modules in `repo: local`.
    - #1428 PR by @scop.
- Fix committing with unstaged files and a failing `post-checkout` hook.
    - #1422 PR by @domodwyer.
    - #1418 issue by @domodwyer.
- Fix installation of node hooks with system node installed on freebsd.
    - #1443 PR by @asottile.
    - #1440 issue by @jockej.
- Fix ruby hooks when `GEM_PATH` is set globally.
    - #1442 PR by @tdeo.
- Improve error message when `pre-commit autoupdate` /
  `pre-commit migrate-config` are run but the pre-commit configuration is not
  valid yaml.
    - #1448 PR by @asottile.
    - #1447 issue by @rpdelaney.

2.3.0 - 2020-04-22
==================

### Features
- Calculate character width using `east_asian_width`
    - #1378 PR by @sophgn.
- Use `language_version: system` by default for `node` hooks if `node` / `npm`
  are globally installed.
    - #1388 PR by @asottile.

### Fixes
- No longer use a hard-coded user id for docker hooks on windows
    - #1371 PR by @killuazhu.
- Fix colors on windows during `git commit`
    - #1381 issue by @Cielquan.
    - #1382 PR by @asottile.
- Produce readable error message for incorrect argument count to `hook-impl`
    - #1394 issue by @pip9ball.
    - #1395 PR by @asottile.
- Fix installations which involve an upgrade of `pip` on windows
    - #1398 issue by @xiaohuazi123.
    - #1399 PR by @asottile.
- Preserve line endings in `pre-commit autoupdate`
    - #1402 PR by @utek.

2.2.0 - 2020-03-12
==================

### Features
- Add support for the `post-checkout` hook
    - #1120 issue by @domenkozar.
    - #1339 PR by @andrewhare.
- Add more readable `--from-ref` / `--to-ref` aliases for `--source` /
  `--origin`
    - #1343 PR by @asottile.

### Fixes
- Make sure that `--commit-msg-filename` is passed for `commit-msg` /
  `prepare-commit-msg`.
    - #1336 PR by @particledecay.
    - #1341 PR by @particledecay.
- Fix crash when installation error is un-decodable bytes
    - #1358 issue by @Guts.
    - #1359 PR by @asottile.
- Fix python `healthy()` check when `python` executable goes missing.
    - #1363 PR by @asottile.
- Fix crash when script executables are missing shebangs.
    - #1350 issue by @chriselion.
    - #1364 PR by @asottile.

### Misc.
- pre-commit now requires python>=3.6.1 (previously 3.6.0)
    - #1346 PR by @asottile.

2.1.1 - 2020-02-24
==================

### Fixes
- Temporarily restore python 3.6.0 support (broken in 2.0.0)
    - reported by @obestwalter.
    - 081f3028 by @asottile.

2.1.0 - 2020-02-18
==================

### Features
- Replace `aspy.yaml` with `sort_keys=False`.
    - #1306 PR by @asottile.
- Add support for `perl`.
    - #1303 PR by @scop.

### Fixes
- Improve `.git/hooks/*` shebang creation when pythons are in `/usr/local/bin`.
    - #1312 issue by @kbsezginel.
    - #1319 PR by @asottile.

### Misc.
- Add repository badge for pre-commit.
    - [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
    - #1334 PR by @ddelange.

2.0.1 - 2020-01-29
==================

### Fixes
- Fix `ImportError` in python 3.6.0 / 3.6.1 for `typing.NoReturn`.
    - #1302 PR by @asottile.

2.0.0 - 2020-01-28
==================

### Features
- Expose `PRE_COMMIT_REMOTE_NAME` and `PRE_COMMIT_REMOTE_URL` as environment
  variables during `pre-push` hooks.
    - #1274 issue by @dmbarreiro.
    - #1288 PR by @dmbarreiro.

### Fixes
- Fix `python -m pre_commit --version` to mention `pre-commit` instead of
  `__main__.py`.
    - #1273 issue by @ssbarnea.
    - #1276 PR by @orcutt989.
- Don't filter `GIT_SSL_NO_VERIFY` from environment when cloning.
    - #1293 PR by @schiermike.
- Allow `pre-commit init-templatedir` to succeed even if `core.hooksPath` is
  set.
    - #1298 issue by @damienrj.
    - #1299 PR by @asottile.

### Misc
- Fix changelog date for 1.21.0.
    - #1275 PR by @flaudisio.

### Updating
- Removed `pcre` language, use `pygrep` instead.
    - #1268 PR by @asottile.
- Removed `--tags-only` argument to `pre-commit autoupdate` (it has done
  nothing since 0.14.0).
    - #1269 by @asottile.
- Remove python2 / python3.5 support.  Note that pre-commit still supports
  running hooks written in python2, but pre-commit itself requires python 3.6+.
    - #1260 issue by @asottile.
    - #1277 PR by @asottile.
    - #1281 PR by @asottile.
    - #1282 PR by @asottile.
    - #1287 PR by @asottile.
    - #1289 PR by @asottile.
    - #1292 PR by @asottile.

1.21.0 - 2020-01-02
===================

### Features
- Add `conda` as a new `language`.
    - #1204 issue by @xhochy.
    - #1232 PR by @xhochy.
- Add top-level configuration `files` for file selection.
    - #1220 issue by @TheButlah.
    - #1248 PR by @asottile.
- Rework `--verbose` / `verbose` to be more consistent with normal runs.
    - #1249 PR by @asottile.
- Add support for the `pre-merge-commit` git hook.
    - #1210 PR by @asottile.
    - this requires git 2.24+.
- Add `pre-commit autoupdate --freeze` which produces "frozen" revisions.
    - #1068 issue by @SkypLabs.
    - #1256 PR by @asottile.
- Display hook runtime duration when run with `--verbose`.
    - #1144 issue by @potiuk.
    - #1257 PR by @asottile.

### Fixes
- Produce better error message when erroneously running inside of `.git`.
    - #1219 issue by @Nusserdt.
    - #1224 PR by @asottile.
    - Note: `git` has since fixed this bug: git/git@36fd304d
- Produce better error message when hook installation fails.
    - #1250 issue by @asottile.
    - #1251 PR by @asottile.
- Fix cloning when `GIT_SSL_CAINFO` is necessary.
    - #1253 issue by @igankevich.
    - #1254 PR by @igankevich.
- Fix `pre-commit try-repo` for bare, on-disk repositories.
    - #1258 issue by @webknjaz.
    - #1259 PR by @asottile.
- Add some whitespace to `pre-commit autoupdate` to improve terminal autolink.
    - #1261 issue by @yhoiseth.
    - #1262 PR by @yhoiseth.

### Misc.
- Minor code documentation updates.
    - #1200 PR by @ryanrhee.
    - #1201 PR by @ryanrhee.

1.20.0 - 2019-10-28
===================

### Features
- Allow building newer versions of `ruby`.
    - #1193 issue by @choffee.
    - #1195 PR by @choffee.
- Bump versions reported in `pre-commit sample-config`.
    - #1197 PR by @asottile.

### Fixes
- Fix rare race condition with multiple concurrent first-time runs.
    - #1192 issue by @raholler.
    - #1196 PR by @asottile.

1.19.0 - 2019-10-26
===================

### Features
- Allow `--hook-type` to be specified multiple times.
    - example: `pre-commit install --hook-type pre-commit --hook-type pre-push`
    - #1139 issue by @MaxymVlasov.
    - #1145 PR by @asottile.
- Include more version information in crash logs.
    - #1142 by @marqueewinq.
- Hook colors are now passed through on platforms which support `pty`.
    - #1169 by @asottile.
- pre-commit now  uses `importlib.metadata` directly when running in python 3.8
    - #1176 by @asottile.
- Normalize paths to forward slash separators on windows.
    - makes it easier to match paths with `files:` regex
    - avoids some quoting bugs in shell-based hooks
    - #1173 issue by @steigenTI.
    - #1179 PR by @asottile.

### Fixes
- Remove some extra newlines from error messages.
    - #1148 by @asottile.
- When a hook is not executable it now reports `not executable` instead of
  `not found`.
    - #1159 issue by @nixjdm.
    - #1161 PR by @WillKoehrsen.
- Fix interleaving of stdout / stderr in hooks.
    - #1168 by @asottile.
- Fix python environment `healthy()` check when current working directory
  contains modules which shadow standard library names.
    - issue by @vwhsu92.
    - #1185 PR by @asottile.

### Updating
- Regexes handling both backslashes and forward slashes for directory
  separators now only need to handle forward slashes.

1.18.3 - 2019-08-27
===================

### Fixes
- Fix `node_modules` plugin installation on windows
    - #1123 issue by @henryykt.
    - #1122 PR by @henryykt.

1.18.2 - 2019-08-15
===================

### Fixes
- Make default python lookup more deterministic to avoid redundant installs
    - #1117 PR by @scop.

1.18.1 - 2019-08-11
===================

### Fixes
- Fix installation of `rust` hooks with new `cargo`
    - #1112 issue by @zimbatm.
    - #1113 PR by @zimbatm.

1.18.0 - 2019-08-03
===================

### Features
- Use the current running executable if it matches the requested
  `language_version`
    - #1062 PR by @asottile.
- Print the stage when a hook is not found
    - #1078 issue by @madkinsz.
    - #1079 PR by @madkinsz.
- `pre-commit autoupdate` now supports non-`master` default branches
    - #1089 PR by @asottile.
- Add `pre-commit init-templatedir` which makes it easier to automatically
  enable `pre-commit` in cloned repositories.
    - #1084 issue by @ssbarnea.
    - #1090 PR by @asottile.
    - #1107 PR by @asottile.
- pre-commit's color can be controlled using
  `PRE_COMMIT_COLOR={auto,always,never}`
    - #1073 issue by @saper.
    - #1092 PR by @geieredgar.
    - #1098 PR by @geieredgar.
- pre-commit's color can now be disabled using `TERM=dumb`
    - #1073 issue by @saper.
    - #1103 PR by @asottile.
- pre-commit now supports `docker` based hooks on windows
    - #1072 by @cz-fish.
    - #1093 PR by @geieredgar.

### Fixes
- Fix shallow clone
    - #1077 PR by @asottile.
- Fix autoupdate version flip flop when using shallow cloning
    - #1076 issue by @mxr.
    - #1088 PR by @asottile.
- Fix autoupdate when the current revision is invalid
    - #1088 PR by @asottile.

### Misc.
- Replace development instructions with `tox --devenv ...`
    - #1032 issue by @yoavcaspi.
    - #1067 PR by @asottile.


1.17.0 - 2019-06-06
===================

### Features
- Produce better output on `^C`
    - #1030 PR by @asottile.
- Warn on unknown keys at the top level and repo level
    - #1028 PR by @yoavcaspi.
    - #1048 PR by @asottile.

### Fixes
- Fix handling of `^C` in wrapper script in python 3.x
    - #1027 PR by @asottile.
- Fix `rmtree` for non-writable directories
    - #1042 issue by @detailyang.
    - #1043 PR by @asottile.
- Pass `--color` option to `git diff` in `--show-diff-on-failure`
    - #1007 issue by @chadrik.
    - #1051 PR by @mandarvaze.

### Misc.
- Fix test when `pre-commit` is installed globally
    - #1032 issue by @yoavcaspi.
    - #1045 PR by @asottile.


1.16.1 - 2019-05-08
===================

### Fixes
- Don't `UnicodeDecodeError` on unexpected non-UTF8 output in python health
  check on windows.
    - #1021 issue by @nicoddemus.
    - #1022 PR by @asottile.

1.16.0 - 2019-05-04
===================

### Features
- Add support for `prepare-commit-msg` hook
    - #1004 PR by @marcjay.

### Fixes
- Fix repeated legacy `pre-commit install` on windows
    - #1010 issue by @AbhimanyuHK.
    - #1011 PR by @asottile.
- Whitespace fixup
    - #1014 PR by @mxr.
- Fix CI check for working pcre support
    - #1015 PR by @Myrheimb.

### Misc.
- Switch CI from travis / appveyor to azure pipelines
    - #1012 PR by @asottile.

1.15.2 - 2019-04-16
===================

### Fixes
- Fix cloning non-branch tag while in the fallback slow-clone strategy.
    - #997 issue by @jpinner.
    - #998 PR by @asottile.

1.15.1 - 2019-04-01
===================

### Fixes
- Fix command length calculation on posix when `SC_ARG_MAX` is not defined.
    - #691 issue by @ushuz.
    - #987 PR by @asottile.

1.15.0 - 2019-03-30
===================

### Features
- No longer require being in a `git` repo to run `pre-commit` `clean` / `gc` /
  `sample-config`.
    - #959 PR by @asottile.
- Improve command line length limit detection.
    - #691 issue by @antonbabenko.
    - #966 PR by @asottile.
- Use shallow cloning when possible.
    - #958 PR by @DanielChabrowski.
- Add `minimum_pre_commit_version` top level key to require a new-enough
  version of `pre-commit`.
    - #977 PR by @asottile.
- Add helpful CI-friendly message when running
  `pre-commit run --all-files --show-diff-on-failure`.
  - #982 PR by @bnorquist.

### Fixes
- Fix `try-repo` for staged untracked changes.
    - #973 PR by @DanielChabrowski.
- Fix rpm build by explicitly using `#!/usr/bin/env python3` in hook template.
    - #985 issue by @tim77.
    - #986 PR by @tim77.
- Guard against infinite recursion when executing legacy hook script.
    - #981 PR by @tristan0x.

### Misc
- Add test for `git.no_git_env()`
    - #972 PR by @javabrett.

1.14.4 - 2019-02-18
===================

### Fixes
- Don't filter `GIT_SSH_COMMAND` env variable from `git` commands
    - #947 issue by @firba1.
    - #948 PR by @firba1.
- Install npm packages as if they were installed from `git`
    - #943 issue by @ssbarnea.
    - #949 PR by @asottile.
- Don't filter `GIT_EXEC_PREFIX` env variable from `git` commands
    - #664 issue by @revolter.
    - #944 PR by @minrk.

1.14.3 - 2019-02-04
===================

### Fixes
- Improve performance of filename classification by 45% - 55%.
    - #921 PR by @asottile.
- Fix installing `go` hooks while `GOBIN` environment variable is set.
    - #924 PR by @ashanbrown.
- Fix crash while running `pre-commit migrate-config` / `pre-commit autoupdate`
  with an empty configuration file.
    - #929 issue by @ardakuyumcu.
    - #933 PR by @jessebona.
- Require a newer virtualenv to fix metadata-based setup.cfg installs.
    - #936 PR by @asottile.

1.14.2 - 2019-01-10
===================

### Fixes
- Make the hook shebang detection more timid (1.14.0 regression)
    - Homebrew/homebrew-core#35825.
    - #915 PR by @asottile.

1.14.1 - 2019-01-10
===================

### Fixes
- Fix python executable lookup on windows when using conda
    - #913 issue by @dawelter2.
    - #914 PR by @asottile.

1.14.0 - 2019-01-08
===================

### Features
- Add an `alias` configuration value to allow repeated hooks to be
  differentiated
    - #882 issue by @s0undt3ch.
    - #886 PR by @s0undt3ch.
- Add `identity` meta hook which just prints filenames
    - #865 issue by @asottile.
    - #898 PR by @asottile.
- Factor out `cached-property` and improve startup performance by ~10%
    - #899 PR by @asottile.
- Add a warning on unexpected keys in configuration
    - #899 PR by @asottile.
- Teach `pre-commit try-repo` to clone uncommitted changes on disk.
    - #589 issue by @sverhagen.
    - #703 issue by @asottile.
    - #904 PR by @asottile.
- Implement `pre-commit gc` which will clean up no-longer-referenced cache
  repos.
    - #283 issue by @jtwang.
    - #906 PR by @asottile.
- Add top level config `default_language_version` to streamline overriding the
  `language_version` configuration in many places
    - #647 issue by @asottile.
    - #908 PR by @asottile.
- Add top level config `default_stages` to streamline overriding the `stages`
  configuration in many places
    - #768 issue by @mattlqx.
    - #909 PR by @asottile.

### Fixes
- More intelligently pick hook shebang (`#!/usr/bin/env python3`)
    - #878 issue by @fristedt.
    - #893 PR by @asottile.
- Several fixes related to `--files` / `--config`:
    - `pre-commit run --files x` outside of a git dir no longer stacktraces
    - `pre-commit run --config ./relative` while in a sub directory of the git
      repo is now able to find the configuration
    - `pre-commit run --files ...` no longer runs a subprocess per file
      (performance)
    - #895 PR by @asottile.
- `pre-commit try-repo ./relative` while in a sub directory of the git repo is
  now able to clone properly
    - #903 PR by @asottile.
- Ensure `meta` repos cannot have a language other than `system`
    - #905 issue by @asottile.
    - #907 PR by @asottile.
- Fix committing with unstaged files that were `git add --intent-to-add` added
    - #881 issue by @henniss.
    - #912 PR by @asottile.

### Misc.
- Use `--no-gpg-sign` when running tests
    - #894 PR by @s0undt3ch.


1.13.0 - 2018-12-20
===================

### Features
- Run hooks in parallel
    - individual hooks may opt out of parallel execution with `require_serial: true`
    - #510 issue by @chriskuehl.
    - #851 PR by @chriskuehl.

### Fixes
- Improve platform-specific `xargs` command length detection
    - #691 issue by @antonbabenko.
    - #839 PR by @georgeyk.
- Fix `pre-commit autoupdate` when updating to a latest tag missing a
  `.pre-commit-hooks.yaml`
    - #856 issue by @asottile.
    - #857 PR by @runz0rd.
- Upgrade the `pre-commit-hooks` version in `pre-commit sample-config`
    - #870 by @asottile.
- Improve balancing of multiprocessing by deterministic shuffling of args
    - #861 issue by @Dunedan.
    - #874 PR by @chriskuehl.
- `ruby` hooks work with latest `gem` by removing `--no-ri` / `--no-rdoc` and
  instead using `--no-document`.
    - #889 PR by @asottile.

### Misc.
- Use `--no-gpg-sign` when running tests
    - #885 PR by @s0undt3ch.

### Updating
- If a hook requires serial execution, set `require_serial: true` to avoid the new
  parallel execution.
- `ruby` hooks now require `gem>=2.0.0`.  If your platform doesn't support this
  by default, select a newer version using
  [`language_version`](https://pre-commit.com/#overriding-language-version).


1.12.0 - 2018-10-23
===================

### Fixes
- Install multi-hook repositories only once (performance)
    - issue by @chriskuehl.
    - #852 PR by @asottile.
- Improve performance by factoring out pkg_resources (performance)
    - #840 issue by @RonnyPfannschmidt.
    - #846 PR by @asottile.

1.11.2 - 2018-10-10
===================

### Fixes
- `check-useless-exclude` now considers `types`
    - #704 issue by @asottile.
    - #837 PR by @georgeyk.
- `pre-push` hook was not identifying all commits on push to new branch
    - #843 issue by @prem-nuro.
    - #844 PR by @asottile.

1.11.1 - 2018-09-22
===================

### Fixes
- Fix `.git` dir detection in `git<2.5` (regression introduced in
  [1.10.5](#1105))
    - #831 issue by @mmacpherson.
    - #832 PR by @asottile.

1.11.0 - 2018-09-02
===================

### Features
- Add new `fail` language which always fails
    - light-weight way to forbid files by name.
    - #812 #821 PRs by @asottile.

### Fixes
- Fix `ResourceWarning`s for unclosed files
    - #811 PR by @BoboTiG.
- Don't write ANSI colors on windows when color enabling fails
    - #819 PR by @jeffreyrack.

1.10.5 - 2018-08-06
===================

### Fixes
- Work around `PATH` issue with `brew` `python` on `macos`
    - Homebrew/homebrew-core#30445 issue by @asottile.
    - #805 PR by @asottile.
- Support `pre-commit install` inside a worktree
    - #808 issue by @s0undt3ch.
    - #809 PR by @asottile.

1.10.4 - 2018-07-22
===================

### Fixes
- Replace `yaml.load` with safe alternative
    - `yaml.load` can lead to arbitrary code execution, though not where it
      was used
    - issue by @tonybaloney.
    - #779 PR by @asottile.
- Improve not found error with script paths (`./exe`)
    - #782 issue by @ssbarnea.
    - #785 PR by @asottile.
- Fix minor buffering issue during `--show-diff-on-failure`
    - #796 PR by @asottile.
- Default `language_version: python3` for `python_venv` when running in python2
    - #794 issue by @ssbarnea.
    - #797 PR by @asottile.
- `pre-commit run X` only run `X` and not hooks with `stages: [...]`
    - #772 issue by @asottile.
    - #803 PR by @mblayman.

### Misc.
- Improve travis-ci build times by caching rust / swift artifacts
    - #781 PR by @expobrain.
- Test against python3.7
    - #789 PR by @expobrain.

1.10.3 - 2018-07-02
===================

### Fixes
- Fix `pre-push` during a force push without a fetch
    - #777 issue by @domenkozar.
    - #778 PR by @asottile.

1.10.2 - 2018-06-11
===================

### Fixes
- pre-commit now invokes hooks with a consistent ordering of filenames
    - issue by @mxr.
    - #767 PR by @asottile.

1.10.1 - 2018-05-28
===================

### Fixes
- `python_venv` language would leak dependencies when pre-commit was installed
  in a `-mvirtualenv` virtualenv
    - #755 #756 issue and PR by @asottile.

1.10.0 - 2018-05-26
===================

### Features
- Add support for hooks written in `rust`
    - #751 PR by @chriskuehl.

1.9.0 - 2018-05-21
==================

### Features
- Add new `python_venv` language which uses the `venv` module instead of
  `virtualenv`
    - #631 issue by @dongyuzheng.
    - #739 PR by @ojii.
- Include `LICENSE` in distribution
    - #745 issue by @nicoddemus.
    - #746 PR by @nicoddemus.

### Fixes
- Normalize relative paths for `pre-commit try-repo`
    - #750 PR by @asottile.


1.8.2 - 2018-03-17
==================

### Fixes
- Fix cloning relative paths (regression in 1.7.0)
    - #728 issue by @jdswensen.
    - #729 PR by @asottile.


1.8.1 - 2018-03-12
==================

### Fixes
- Fix integration with go 1.10 and `pkg` directory
    - #725 PR by @asottile
- Restore support for `git<1.8.5` (inadvertently removed in 1.7.0)
    - #723 issue by @JohnLyman.
    - #724 PR by @asottile.


1.8.0 - 2018-03-11
==================

### Features
- Add a `manual` stage for cli-only interaction
    - #719 issue by @hectorv.
    - #720 PR by @asottile.
- Add a `--multiline` option to `pygrep` hooks
    - #716 PR by @tdeo.


1.7.0 - 2018-03-03
==================

### Features
- pre-commit config validation was split to a separate `cfgv` library
    - #700 PR by @asottile.
- Allow `--repo` to be specified multiple times to autoupdate
    - #658 issue by @KevinHock.
    - #713 PR by @asottile.
- Enable `rev` as a preferred alternative to `sha` in `.pre-commit-config.yaml`
    - #106 issue by @asottile.
    - #715 PR by @asottile.
- Use `--clean-src` option when invoking `nodeenv` to save ~70MB per node env
    - #717 PR by @asottile.
- Refuse to install with `core.hooksPath` set
    - pre-commit/pre-commit-hooks#250 issue by @revolter.
    - #663 issue by @asottile.
    - #718 PR by @asottile.

### Fixes
- hooks with `additional_dependencies` now get isolated environments
    - #590 issue by @coldnight.
    - #711 PR by @asottile.

### Misc.
- test against swift 4.x
    - #709 by @theresama.

### Updating

- Run `pre-commit migrate-config` to convert `sha` to `rev` in the
  `.pre-commit-config.yaml` file.


1.6.0 - 2018-02-04
==================

### Features
- Hooks now may have a `verbose` option to produce output even without failure
    - #689 issue by @bagerard.
    - #695 PR by @bagerard.
- Installed hook no longer requires `bash`
    - #699 PR by @asottile.

### Fixes
- legacy pre-push / commit-msg hooks are now invoked as if `git` called them
    - #693 issue by @samskiter.
    - #694 PR by @asottile.
    - #699 PR by @asottile.

1.5.1 - 2018-01-24
==================

### Fixes
- proper detection for root commit during pre-push
    - #503 PR by @philipgian.
    - #692 PR by @samskiter.

1.5.0 - 2018-01-13
==================

### Features
- pre-commit now supports node hooks on windows.
    - for now, requires python3 due to https://bugs.python.org/issue32539
    - huge thanks to @wenzowski for the tip!
    - #200 issue by @asottile.
    - #685 PR by @asottile.

### Misc.
- internal reorganization of `PrefixedCommandRunner` -> `Prefix`
    - #684 PR by @asottile.
- https-ify links.
    - pre-commit.com is now served over https.
    - #688 PR by @asottile.


1.4.5 - 2018-01-09
==================

### Fixes
- Fix `local` golang repositories with `additional_dependencies`.
    - #679 #680 issue and PR by @asottile.

### Misc.
- Replace some string literals with constants
    - #678 PR by @revolter.

1.4.4 - 2018-01-07
==================

### Fixes
- Invoke `git diff` without a pager during `--show-diff-on-failure`.
    - #676 PR by @asottile.

1.4.3 - 2018-01-02
==================

### Fixes
- `pre-commit` on windows can find pythons at non-hardcoded paths.
    - #674 PR by @asottile.

1.4.2 - 2018-01-02
==================

### Fixes
- `pre-commit` no longer clears `GIT_SSH` environment variable when cloning.
    - #671 PR by @rp-tanium.

1.4.1 - 2017-11-09
==================

### Fixes
- `pre-commit autoupdate --repo ...` no longer deletes other repos.
    - #660 issue by @KevinHock.
    - #661 PR by @KevinHock.

1.4.0 - 2017-11-08
==================

### Features
- Lazily install repositories.
    - When running `pre-commit run <hookid>`, pre-commit will only install
      the necessary repositories.
    - #637 issue by @webknjaz.
    - #639 PR by @asottile.
- Version defaulting now applies to local hooks as well.
    - This extends #556 to apply to local hooks.
    - #646 PR by @asottile.
- Add new `repo: meta` hooks.
    - `meta` hooks expose some linters of the pre-commit configuration itself.
    - `id: check-useless-excludes`: ensures that `exclude` directives actually
      apply to *any* file in the repository.
    - `id: check-hooks-apply`: ensures that the configured hooks apply to
      at least one file in the repository.
    - pre-commit/pre-commit-hooks#63 issue by @asottile.
    - #405 issue by @asottile.
    - #643 PR by @hackedd.
    - #653 PR by @asottile.
    - #654 PR by @asottile.
- Allow a specific repository to be autoupdated instead of all repositories.
    - `pre-commit autoupdate --repo ...`
    - #656 issue by @KevinHock.
    - #657 PR by @KevinHock.

### Fixes
- Apply selinux labelling option to docker volumes
    - #642 PR by @jimmidyson.


1.3.0 - 2017-10-08
==================

### Features
- Add `pre-commit try-repo` commands
    - The new `try-repo` takes a repo and will run the hooks configured in
      that hook repository.
    - An example invocation:
      `pre-commit try-repo https://github.com/pre-commit/pre-commit-hooks`
    - `pre-commit try-repo` can also take all the same arguments as
      `pre-commit run`.
    - It can be used to try out a repository without needing to configure it.
    - It can also be used to test a hook repository while developing it.
    - #589 issue by @sverhagen.
    - #633 PR by @asottile.

1.2.0 - 2017-10-03
==================

### Features
- Add `pygrep` language
    - `pygrep` aims to be a more cross-platform alternative to `pcre` hooks.
    - #630 PR by @asottile.

### Fixes
- Use `pipes.quote` for executable path in hook template
    - Fixes bash syntax error when git dir contains spaces
    - #626 PR by @asottile.
- Clean up hook template
    - Simplify code
    - Fix `--config` not being respected in some situations
    - #627 PR by @asottile.
- Use `file://` protocol for cloning under test
    - Fix `file://` clone paths being treated as urls for golang
    - #629 PR by @asottile.
- Add `ctypes` as an import for virtualenv healthchecks
    - Fixes python3.6.2 <=> python3.6.3 virtualenv invalidation
    - e70825ab by @asottile.

1.1.2 - 2017-09-20
==================

### Fixes
- pre-commit can successfully install commit-msg hooks
    - Due to an oversight, the commit-msg-tmpl was missing from the packaging
    - #623 issue by @sobolevn.
    - #624 PR by @asottile.

1.1.1 - 2017-09-17
==================

### Features
- pre-commit also checks the `ssl` module for virtualenv health
    - Suggestion by @merwok.
    - #619 PR by @asottile.
### Fixes
- pre-commit no longer crashes with unstaged files when run for the first time
    - #620 #621 issue by @Lucas-C.
    - #622 PR by @asottile.

1.1.0 - 2017-09-11
==================

### Features
- pre-commit configuration gains a `fail_fast` option.
    - You must be using the v2 configuration format introduced in 1.0.0.
    - `fail_fast` defaults to `false`.
    - #240 issue by @Lucas-C.
    - #616 PR by @asottile.
- pre-commit configuration gains a global `exclude` option.
    - This option takes a python regular expression and can be used to exclude
      files from _all_ hooks.
    - You must be using the v2 configuration format introduced in 1.0.0.
    - #281 issue by @asieira.
    - #617 PR by @asottile.

1.0.1 - 2017-09-07
==================

### Fixes
- Fix a regression in the return code of `pre-commit autoupdate`
    - `pre-commit migrate-config` and `pre-commit autoupdate` return 0 when
      successful.
    - #614 PR by @asottile.

1.0.0 - 2017-09-07
==================
pre-commit will now be following [semver](https://semver.org/).  Thanks to all
of the [contributors](https://github.com/pre-commit/pre-commit/graphs/contributors)
that have helped us get this far!

### Features

- pre-commit's cache directory has moved from `~/.pre-commit` to
  `$XDG_CACHE_HOME/pre-commit` (usually `~/.cache/pre-commit`).
    - `pre-commit clean` now cleans up both the old and new directory.
    - If you were caching this directory in CI, you'll want to adjust the
      location.
    - #562 issue by @nagromc.
    - #602 PR by @asottile.
- A new configuration format for `.pre-commit-config.yaml` is introduced which
  will enable future development.
    - The new format has a top-level map instead of a top-level list.  The
      new format puts the hook repositories in a `repos` key.
    - Old list-based configurations will continue to be supported.
    - A command `pre-commit migrate-config` has been introduced to "upgrade"
      the configuration format to the new map-based configuration.
    - `pre-commit autoupdate` now automatically calls `migrate-config`.
    - In a later release, list-based configurations will issue a deprecation
      warning.
    - An example diff for upgrading a configuration:

    ```diff
    +repos:
     -   repo: https://github.com/pre-commit/pre-commit-hooks
         sha: v0.9.2
         hooks:
    ```
    - #414 issue by @asottile.
    - #610 PR by @asottile.

### Updating

- Run `pre-commit migrate-config` to convert `.pre-commit-config.yaml` to the
  new map format.
- Update any references from `~/.pre-commit` to `~/.cache/pre-commit`.

0.18.3 - 2017-09-06
===================
- Allow --config to affect `pre-commit install`
- Tweak not found error message during `pre-push` / `commit-msg`
- Improve node support when running under cygwin.

0.18.2 - 2017-09-05
===================
- Fix `--all-files`, detection of staged files, detection of manually edited
  files during merge conflict, and detection of files to push for non-ascii
  filenames.

0.18.1 - 2017-09-04
===================
- Only mention locking when waiting for a lock.
- Fix `IOError` during locking in timeout situation on windows under python 2.

0.18.0 - 2017-09-02
===================
- Add a new `docker_image` language type.  `docker_image` is intended to be a
  lightweight hook type similar to `system` / `script` which allows one to use
  an existing docker image that provides a hook.  `docker_image` hooks can
  also be used as repository `local` hooks.

0.17.0 - 2017-08-24
===================
- Fix typos in help
- Allow `commit-msg` hook to be uninstalled
- Upgrade the `sample-config`
- Remove undocumented `--no-stash` and `--allow-unstaged-config`
- Remove `validate_config` hook pre-commit hook.
- Fix installation race condition when multiple `pre-commit` processes would
  attempt to install the same repository.

0.16.3 - 2017-08-10
===================
- autoupdate attempts to maintain config formatting.

0.16.2 - 2017-08-06
===================
- Initialize submodules in hook repositories.

0.16.1 - 2017-08-04
===================
- Improve node support when running under cygwin.

0.16.0 - 2017-08-01
===================
- Remove backward compatibility with repositories providing metadata via
  `hooks.yaml`.  New repositories should provide `.pre-commit-hooks.yaml`.
  Run `pre-commit autoupdate` to upgrade to the latest repositories.
- Improve golang support when running under cygwin.
- Fix crash with unstaged trailing whitespace additions while git was
  configured with `apply.whitespace = error`.
- Fix crash with unstaged end-of-file crlf additions and the file's lines
  ended with crlf while git was configured with `core-autocrlf = true`.

0.15.4 - 2017-07-23
===================
- Add support for the `commit-msg` git hook

0.15.3 - 2017-07-20
===================
- Recover from invalid python virtualenvs


0.15.2 - 2017-07-09
===================
- Work around a windows-specific virtualenv bug pypa/virtualenv#1062
  This failure mode was introduced in 0.15.1

0.15.1 - 2017-07-09
===================
- Use a more intelligent default language version for python

0.15.0 - 2017-07-02
===================
- Add `types` and `exclude_types` for filtering files.  These options take
  an array of "tags" identified for each file.  The tags are sourced from
  [identify](https://github.com/chriskuehl/identify).  One can list the tags
  for a file by running `identify-cli filename`.
- `files` is now optional (defaulting to `''`)
- `always_run` + missing `files` also defaults to `files: ''` (previously it
  defaulted to `'^$'` (this reverses e150921c).

0.14.3 - 2017-06-28
===================
- Expose `--origin` and `--source` as `PRE_COMMIT_ORIGIN` and
  `PRE_COMMIT_SOURCE` environment variables when running as `pre-push`.

0.14.2 - 2017-06-09
===================
- Use `--no-ext-diff` when running `git diff`

0.14.1 - 2017-06-02
===================
- Don't crash when `always_run` is `True` and `files` is not provided.
- Set `VIRTUALENV_NO_DOWNLOAD` when making python virtualenvs.

0.14.0 - 2017-05-16
===================
- Add a `pre-commit sample-config` command
- Enable ansi color escapes on modern windows
- `autoupdate` now defaults to `--tags-only`, use `--bleeding-edge` for the
  old behavior
- Add support for `log_file` in hook configuration to tee hook output to a
  file for CI consumption, etc.
- Fix crash with unicode commit messages during merges in python 2.
- Add a `pass_filenames` option to allow disabling automatic filename
  positional arguments to hooks.

0.13.6 - 2017-03-27
===================
- Fix regression in 0.13.5: allow `always_run` and `files` together despite
  doing nothing.

0.13.5 - 2017-03-26
===================
- 0.13.4 contained incorrect files

0.13.4 - 2017-03-26
===================
- Add `--show-diff-on-failure` option to `pre-commit run`
- Replace `jsonschema` with better error messages

0.13.3 - 2017-02-23
===================
- Add `--allow-missing-config` to install: allows `git commit` without a
  configuration.

0.13.2 - 2017-02-17
===================
- Version the local hooks repo
- Allow `minimum_pre_commit_version` for local hooks

0.13.1 - 2017-02-16
===================
- Fix dummy gem for ruby local hooks

0.13.0 - 2017-02-16
===================
- Autoupdate now works even when the current state is broken.
- Improve pre-push fileset on new branches
- Allow "language local" hooks, hooks which install dependencies using
  `additional_dependencies` and `language` are now allowed in `repo: local`.

0.12.2 - 2017-01-27
===================
- Fix docker hooks on older (<1.12) docker

0.12.1 - 2017-01-25
===================
- golang hooks now support additional_dependencies
- Added a --tags-only option to pre-commit autoupdate

0.12.0 - 2017-01-24
===================
- The new default file for implementing hooks in remote repositories is now
  .pre-commit-hooks.yaml to encourage repositories to add the metadata.  As
  such, the previous hooks.yaml is now deprecated and generates a warning.
- Fix bug with local configuration interfering with ruby hooks
- Added support for hooks written in golang.

0.11.0 - 2017-01-20
===================
- SwiftPM support.

0.10.1 - 2017-01-05
===================
- shlex entry of docker based hooks.
- Make shlex behaviour of entry more consistent.

0.10.0 - 2017-01-04
===================
- Add an `install-hooks` command similar to `install --install-hooks` but
  without the `install` side-effects.
- Adds support for docker based hooks.

0.9.4 - 2016-12-05
==================
- Warn when cygwin / python mismatch
- Add --config for customizing configuration during run
- Update rbenv + plugins to latest versions
- pcre hooks now fail when grep / ggrep are not present

0.9.3 - 2016-11-07
==================
- Fix python hook installation when a strange setup.cfg exists

0.9.2 - 2016-10-25
==================
- Remove some python2.6 compatibility
- UI is no longer sized to terminal width, instead 80 characters or longest
  necessary width.
- Fix inability to create python hook environments when using venv / pyvenv on
  osx

0.9.1 - 2016-09-10
==================
- Remove some python2.6 compatibility
- Fix staged-files-only with external diff tools

0.9.0 - 2016-08-31
==================
- Only consider forward diff in changed files
- Don't run on staged deleted files that still exist
- Autoupdate to tags when available
- Stop supporting python2.6
- Fix crash with staged files containing unstaged lines which have non-utf8
  bytes and trailing whitespace

0.8.2 - 2016-05-20
==================
- Fix a crash introduced in 0.8.0 when an executable was not found

0.8.1 - 2016-05-17
==================
- Fix regression introduced in 0.8.0 when already using rbenv with no
  configured ruby hook version

0.8.0 - 2016-04-11
==================
- Fix --files when running in a subdir
- Improve --help a bit
- Switch to pyterminalsize for determining terminal size

0.7.6 - 2016-01-19
==================
- Work under latest virtualenv
- No longer create empty directories on windows with latest virtualenv

0.7.5 - 2016-01-15
==================
- Consider dead symlinks as files when committing

0.7.4 - 2016-01-12
==================
- Produce error message instead of crashing on non-utf8 installation failure

0.7.3 - 2015-12-22
==================
- Fix regression introduced in 0.7.1 breaking `git commit -a`

0.7.2 - 2015-12-22
==================
- Add `always_run` setting for hooks to run even without file changes.

0.7.1 - 2015-12-19
==================
- Support running pre-commit inside submodules

0.7.0 - 2015-12-13
==================
- Store state about additional_dependencies for rollforward/rollback compatibility

0.6.8 - 2015-12-07
==================
- Build as a universal wheel
- Allow '.format('-like strings in arguments
- Add an option to require a minimum pre-commit version

0.6.7 - 2015-12-02
==================
- Print a useful message when a hook id is not present
- Fix printing of non-ascii with unexpected errors
- Print a message when a hook modifies files but produces no output

0.6.6 - 2015-11-25
==================
- Add `additional_dependencies` to hook configuration.
- Fix pre-commit cloning under git 2.6
- Small improvements for windows

0.6.5 - 2015-11-19
==================
- Allow args for pcre hooks

0.6.4 - 2015-11-13
==================
- Fix regression introduced in 0.6.3 regarding hooks which make non-utf8 diffs

0.6.3 - 2015-11-12
==================
- Remove `expected_return_code`
- Fail a hook if it makes modifications to the working directory

0.6.2 - 2015-10-14
==================
- Use --no-ri --no-rdoc instead of --no-document for gem to fix old gem

0.6.1 - 2015-10-08
==================
- Fix pre-push when pushing something that's already up to date

0.6.0 - 2015-10-05
==================
- Filter hooks by stage (commit, push).

0.5.5 - 2015-09-04
==================
- Change permissions a few files
- Rename the validate entrypoints
- Add --version to some entrypoints
- Add --no-document to gem installations
- Use expanduser when finding the python binary
- Suppress complaint about $TERM when no tty is attached
- Support pcre hooks on osx through ggrep

0.5.4 - 2015-07-24
==================
- Allow hooks to produce outputs with arbitrary bytes
- Fix pre-commit install when .git/hooks/pre-commit is a dead symlink
- Allow an unstaged config when using --files or --all-files

0.5.3 - 2015-06-15
==================
- Fix autoupdate with "local" hooks - don't purge local hooks.

0.5.2 - 2015-06-02
==================
- Fix autoupdate with "local" hooks

0.5.1 - 2015-05-23
==================
- Fix bug with unknown non-ascii hook-id
- Avoid crash when .git/hooks is not present in some git clients

0.5.0 - 2015-05-19
==================
- Add a new "local" hook type for running hooks without remote configuration.
- Complain loudly when .pre-commit-config.yaml is unstaged.
- Better support for multiple language versions when running hooks.
- Allow exclude to be defaulted in repository configuration.

0.4.4 - 2015-03-29
==================
- Use sys.executable when executing virtualenv

0.4.3 - 2015-03-25
==================
- Use reset instead of checkout when checkout out hook repo

0.4.2 - 2015-02-27
==================
- Limit length of xargs arguments to workaround windows xargs bug

0.4.1 - 2015-02-27
==================
- Don't rename across devices when creating sqlite database

0.4.0 - 2015-02-27
==================
- Make ^C^C During installation not cause all subsequent runs to fail
- Print while installing (instead of while cloning)
- Use sqlite to manage repositories (instead of symlinks)
- MVP Windows support

0.3.6 - 2015-02-05
==================
- `args` in venv'd languages are now property quoted.

0.3.5 - 2015-01-15
==================
- Support running during `pre-push`.  See https://pre-commit.com/#advanced 'pre-commit during push'.

0.3.4 - 2015-01-13
==================
- Allow hook providers to default `args` in `hooks.yaml`

0.3.3 - 2015-01-06
==================
- Improve message for `CalledProcessError`

0.3.2 - 2014-10-07
==================
- Fix for `staged_files_only` with color.diff = always #176.

0.3.1 - 2014-10-03
==================
- Fix error clobbering #174.
- Remove dependency on `plumbum`.
- Allow pre-commit to be run from anywhere in a repository #175.

0.3.0 - 2014-09-18
==================
- Add `--files` option to `pre-commit run`

0.2.11 - 2014-09-05
===================
- Fix terminal width detection (broken in 0.2.10)

0.2.10 - 2014-09-04
===================
- Bump version of nodeenv to fix bug with ~/.npmrc
- Choose `python` more intelligently when running.

0.2.9 - 2014-09-02
==================
- Fix bug where sys.stdout.write must take `bytes` in python 2.6

0.2.8 - 2014-08-13
==================
- Allow a client to have duplicates of hooks.
- Use --prebuilt instead of system for node.
- Improve some fatal error messages

0.2.7 - 2014-07-28
==================
- Produce output when running pre-commit install --install-hooks

0.2.6 - 2014-07-28
==================
- Print hookid on failure
- Use sys.executable for running nodeenv
- Allow running as `python -m pre_commit`

0.2.5 - 2014-07-17
==================
- Default columns to 80 (for non-terminal execution).

0.2.4 - 2014-07-07
==================
- Support --install-hooks as an argument to `pre-commit install`
- Install hooks before attempting to run anything
- Use `python -m nodeenv` instead of `nodeenv`

0.2.3 - 2014-06-25
==================
- Freeze ruby building infrastructure
- Fix bug that assumed diffs were utf-8

0.2.2 - 2014-06-22
==================
- Fix filenames with spaces

0.2.1 - 2014-06-18
==================
- Use either `pre-commit` or `python -m pre_commit.main` depending on which is
  available
- Don't use readlink -f

0.2.0 - 2014-06-17
==================
- Fix for merge-conflict during cherry-picking.
- Add -V / --version
- Add migration install mode / install -f / --overwrite
- Add `pcre` "language" for perl compatible regexes
- Reorganize packages.

0.1.1 - 2014-06-11
==================
- Fixed bug with autoupdate setting defaults on un-updated repos.

0.1.0 - 2014-06-07
==================
- Initial Release