Compare commits
1437 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ce975c602 | ||
|
|
89c8821949 | ||
|
|
bd5870c212 | ||
|
|
570b202ee2 | ||
|
|
7a453ffa2e | ||
|
|
04124efe75 | ||
|
|
6f22f2f9ba | ||
|
|
3ee6abf610 | ||
|
|
e26c03691d | ||
|
|
fa4776dd71 | ||
|
|
379de7170f | ||
|
|
23ffa77dee | ||
|
|
fdbd13bcad | ||
|
|
23e3c4300c | ||
|
|
063e674726 | ||
|
|
62102d8eaa | ||
|
|
5a331a4999 | ||
|
|
89cf313699 | ||
|
|
e0e0326cc5 | ||
|
|
ca6650c514 | ||
|
|
bda7fb2353 | ||
|
|
74338865c1 | ||
|
|
b477871310 | ||
|
|
598d24527e | ||
|
|
6498ab1ae4 | ||
|
|
8aea4cfc19 | ||
|
|
55362b9d1b | ||
|
|
e47c489b15 | ||
|
|
5e3c67ab60 | ||
|
|
3253948ff2 | ||
|
|
0e4863b3a2 | ||
|
|
10999da6dc | ||
|
|
07dba6b85d | ||
|
|
ab710fb168 | ||
|
|
cec01b8d1d | ||
|
|
8efe373530 | ||
|
|
123da80395 | ||
|
|
ab5069cbb1 | ||
|
|
eebd3f0a07 | ||
|
|
a2ffc56365 | ||
|
|
58afb05fef | ||
|
|
fe5db36271 | ||
|
|
5982c92676 | ||
|
|
4d6ed243ff | ||
|
|
adb9fa830d | ||
|
|
73246a42b0 | ||
|
|
65a49b917f | ||
|
|
5e8b123b3d | ||
|
|
6164e1cd7f | ||
|
|
4dc0f1f904 | ||
|
|
b4d152a6a5 | ||
|
|
f0fc230482 | ||
|
|
cb2d527650 | ||
|
|
68f10de3ea | ||
|
|
d5414fd30b | ||
|
|
608b7f81de | ||
|
|
a4b2b85206 | ||
|
|
adde7bbfea | ||
|
|
85bd8694a9 | ||
|
|
4dce8843f8 | ||
|
|
7f2aa19bdc | ||
|
|
4ffc815953 | ||
|
|
210cc839c2 | ||
|
|
2c684aedfa | ||
|
|
2703edcc41 | ||
|
|
1a3ea1d324 | ||
|
|
db3ea27a0c | ||
|
|
fc6ac10d4c | ||
|
|
08f351ba16 | ||
|
|
aae4005247 | ||
|
|
eb97e78971 | ||
|
|
35d9bb6ce9 | ||
|
|
ce8c198347 | ||
|
|
1982157b6c | ||
|
|
dddfbd694c | ||
|
|
41ed98fdd5 | ||
|
|
966bc5f420 | ||
|
|
ddcadfd11d | ||
|
|
299748b520 | ||
|
|
57d9664f8e | ||
|
|
653adcf614 | ||
|
|
019dd18a51 | ||
|
|
235067705e | ||
|
|
f487fc6c7b | ||
|
|
0953088baa | ||
|
|
ddc065bac8 | ||
|
|
82b26d6c01 | ||
|
|
c54e638a31 | ||
|
|
e7bcef0f0b | ||
|
|
6f8a32e362 | ||
|
|
0562b9f865 | ||
|
|
be519638b0 | ||
|
|
596fc641d0 | ||
|
|
c0c2634976 | ||
|
|
5ac4c9fe42 | ||
|
|
93ae7c6b6a | ||
|
|
ca8881ae34 | ||
|
|
487675b843 | ||
|
|
988322a381 | ||
|
|
30649ae7e0 | ||
|
|
52c733bd7b | ||
|
|
e6a750f507 | ||
|
|
b1a4c25c63 | ||
|
|
15be594e99 | ||
|
|
5af8560e3b | ||
|
|
ef3b39a58e | ||
|
|
a7850c2ddb | ||
|
|
9a6dabf8d1 | ||
|
|
4f9f822a4a | ||
|
|
e5ceb2cea2 | ||
|
|
238f44e1cf | ||
|
|
dc4c7d50aa | ||
|
|
ebf889a3b1 | ||
|
|
45c8d9cb88 | ||
|
|
19b584354a | ||
|
|
7839ede089 | ||
|
|
15cb0ce053 | ||
|
|
c50c1e0f0c | ||
|
|
b6c440bf6f | ||
|
|
c2296c1b04 | ||
|
|
bacda0ec4f | ||
|
|
ea251d4d2f | ||
|
|
41e8587ad1 | ||
|
|
6159d43b91 | ||
|
|
83eb7d0871 | ||
|
|
e80b1c7e65 | ||
|
|
4c09115926 | ||
|
|
3f78288717 | ||
|
|
1d1287f9fa | ||
|
|
613e474ee0 | ||
|
|
8125192be8 | ||
|
|
d5d55864de | ||
|
|
508ea1fe11 | ||
|
|
dbfd5e10a7 | ||
|
|
4ca6f666de | ||
|
|
20abff4daa | ||
|
|
011c918754 | ||
|
|
71a44a5c8c | ||
|
|
42b8312161 | ||
|
|
99639db2ad | ||
|
|
392359fc8c | ||
|
|
b4afd867a1 | ||
|
|
171fd357a8 | ||
|
|
232c8a3b69 | ||
|
|
8fb979df89 | ||
|
|
7f33882a12 | ||
|
|
8aef40ac80 | ||
|
|
7fcaecbe85 | ||
|
|
8bb2cb2854 | ||
|
|
088336658d | ||
|
|
57f3d32fad | ||
|
|
d09f11f8d0 | ||
|
|
7e8d87b891 | ||
|
|
ee6a0bc6dc | ||
|
|
1d8a2f9137 | ||
|
|
8a5f6280e6 | ||
|
|
61648e78ea | ||
|
|
2693e63ae2 | ||
|
|
ed82d95e3a | ||
|
|
0626c3f940 | ||
|
|
83952deb06 | ||
|
|
c4bb28b25e | ||
|
|
a2b1e5dbb9 | ||
|
|
349b9cd596 | ||
|
|
565ad867fa | ||
|
|
d984765c3c | ||
|
|
f25e6fe945 | ||
|
|
110b9baa5f | ||
|
|
d2f7657e17 | ||
|
|
a5b3ab3adf | ||
|
|
b04bee68cb | ||
|
|
5a415cfa17 | ||
|
|
dac1573a9f | ||
|
|
2cb89c14f8 | ||
|
|
0c11739343 | ||
|
|
a8f275909b | ||
|
|
78e918f749 | ||
|
|
e20f763562 | ||
|
|
aa677d9200 | ||
|
|
c763fb03d9 | ||
|
|
e92019659f | ||
|
|
42fb35e835 | ||
|
|
75ea265d3a | ||
|
|
88a778c8d7 | ||
|
|
2f66d3becc | ||
|
|
9ca5762164 | ||
|
|
4f51d4bdf2 | ||
|
|
3599672c90 | ||
|
|
2b31ed904d | ||
|
|
5db646f3d5 | ||
|
|
f1df99fa1d | ||
|
|
e5cb100651 | ||
|
|
5375720ffa | ||
|
|
4311e06ffd | ||
|
|
f8e9251aac | ||
|
|
b1478017f4 | ||
|
|
1a70916518 | ||
|
|
1bfae76e44 | ||
|
|
85368c0a27 | ||
|
|
901681a010 | ||
|
|
3787560a3d | ||
|
|
a64becde5e | ||
|
|
d6db5b61d1 | ||
|
|
3d674ed245 | ||
|
|
aa0a3c1ae1 | ||
|
|
d5e31f6bc1 | ||
|
|
211879e6d9 | ||
|
|
b75f6c0571 | ||
|
|
4f1ac0562f | ||
|
|
f8f2961361 | ||
|
|
ce4b8e3cba | ||
|
|
ebdb5eac17 | ||
|
|
a4150e3d36 | ||
|
|
4f56809937 | ||
|
|
a377d0ea43 | ||
|
|
483c5e735d | ||
|
|
ba522dd664 | ||
|
|
10aaa531b8 | ||
|
|
394fc25d46 | ||
|
|
76855a1bbe | ||
|
|
6758393645 | ||
|
|
4837447a0b | ||
|
|
78ac3f4d78 | ||
|
|
c3ab8f3936 | ||
|
|
e070e451a6 | ||
|
|
f701d66cbd | ||
|
|
acd99f22a7 | ||
|
|
41bac1e2f7 | ||
|
|
c1b58174f0 | ||
|
|
160c1dacc6 | ||
|
|
550a972358 | ||
|
|
6114375387 | ||
|
|
db14f52900 | ||
|
|
7dd55804cf | ||
|
|
e8733f64fa | ||
|
|
2e7b724f9a | ||
|
|
996300de86 | ||
|
|
9bb7d28e70 | ||
|
|
d574e2b818 | ||
|
|
dccc349e98 | ||
|
|
d4e4d24f9c | ||
|
|
b78225f7de | ||
|
|
6384aa7d7f | ||
|
|
e034ba961f | ||
|
|
40f3d5695f | ||
|
|
8c727bef3c | ||
|
|
7330323a2d | ||
|
|
2b49b75dcb | ||
|
|
a98e4d3169 | ||
|
|
ca4840ce6a | ||
|
|
0a3cc94baa | ||
|
|
237b05158c | ||
|
|
7f75cdb504 | ||
|
|
4bf8a029f7 | ||
|
|
4b6b8eb9e7 | ||
|
|
fd3e44b556 | ||
|
|
1d0bc9880c | ||
|
|
9f3cd20ba2 | ||
|
|
19e86cc60b | ||
|
|
ca30b8500a | ||
|
|
bdfc50c467 | ||
|
|
aabcbcc882 | ||
|
|
6cf9a958b7 | ||
|
|
61361b9cde | ||
|
|
4d1ed48b49 | ||
|
|
58ffe6f792 | ||
|
|
0dbccaa808 | ||
|
|
f195837047 | ||
|
|
bfbf803f41 | ||
|
|
07a1f5a723 | ||
|
|
427b9f931d | ||
|
|
3472a62032 | ||
|
|
f62204d4c7 | ||
|
|
19ecae980a | ||
|
|
8a2dbf5570 | ||
|
|
1d0a36c98e | ||
|
|
760335a2f5 | ||
|
|
70d6677420 | ||
|
|
c789451909 | ||
|
|
6e62cd44dc | ||
|
|
82d305f9fa | ||
|
|
183a9ec343 | ||
|
|
3b6c057cd8 | ||
|
|
e2b21be3d2 | ||
|
|
a7b70fa84d | ||
|
|
7a06bb7247 | ||
|
|
9dc80210cf | ||
|
|
a1a2be24bd | ||
|
|
bb675e1715 | ||
|
|
9e0389c5ae | ||
|
|
9b3a93a0c1 | ||
|
|
a991e1d22a | ||
|
|
0df8efd4d7 | ||
|
|
4f64429e8b | ||
|
|
a73691148f | ||
|
|
cd8e421366 | ||
|
|
32a46ba6ba | ||
|
|
0e4974f191 | ||
|
|
4f939f8e80 | ||
|
|
2405ae6c59 | ||
|
|
49ac42e025 | ||
|
|
9cac2f8ea1 | ||
|
|
6497e8ef99 | ||
|
|
1ae6035162 | ||
|
|
8b8c347ee9 | ||
|
|
bd4ca4c445 | ||
|
|
2a28c9bb7d | ||
|
|
5f902276c1 | ||
|
|
73401b8f0b | ||
|
|
fa300c6aa4 | ||
|
|
79fbc9646d | ||
|
|
eaffc06f9c | ||
|
|
d14a55854a | ||
|
|
01588a88f3 | ||
|
|
c3a1d0574b | ||
|
|
0358232251 | ||
|
|
5bc868d5b5 | ||
|
|
a1893f84b3 | ||
|
|
44d49bc228 | ||
|
|
3f1e44af6c | ||
|
|
d9be0ccb5e | ||
|
|
ff10d2fbc5 | ||
|
|
8fb90ed7f6 | ||
|
|
474e3bd363 | ||
|
|
b2902f40b3 | ||
|
|
17ae17127c | ||
|
|
65dc0e47e9 | ||
|
|
ba5abef332 | ||
|
|
84dcdf586d | ||
|
|
74dc2e8a78 | ||
|
|
a817eeece0 | ||
|
|
b120be5d01 | ||
|
|
626ad8da53 | ||
|
|
8356a01788 | ||
|
|
a84c8f54f9 | ||
|
|
a4f296d02e | ||
|
|
33eef1b0ed | ||
|
|
ae2404f72e | ||
|
|
3f045143ec | ||
|
|
0707f1b441 | ||
|
|
fbc9b61579 | ||
|
|
ac602e39b8 | ||
|
|
ef32360b2d | ||
|
|
4b60d05705 | ||
|
|
385d98db73 | ||
|
|
8c766cffe7 | ||
|
|
00cc8e59b9 | ||
|
|
56a1ce212a | ||
|
|
baaf598b46 | ||
|
|
15519b6a6f | ||
|
|
e9a054c870 | ||
|
|
ed7adeaf22 | ||
|
|
703a319222 | ||
|
|
e6fbdde201 | ||
|
|
860dc31320 | ||
|
|
fd5d6c3a2d | ||
|
|
77fbd5a18c | ||
|
|
aba4e5712b | ||
|
|
c3642c4a1c | ||
|
|
0a207fd892 | ||
|
|
2a74e5e5d4 | ||
|
|
6e85a3501a | ||
|
|
660db6c787 | ||
|
|
a4d22acb20 | ||
|
|
984b4ca567 | ||
|
|
477b380579 | ||
|
|
a699a3be4a | ||
|
|
3a46c048f7 | ||
|
|
d78a469ec7 | ||
|
|
0d9ec12402 | ||
|
|
7e929625a3 | ||
|
|
c09cd8795d | ||
|
|
67482da9c0 | ||
|
|
ef8591de30 | ||
|
|
f282e19e52 | ||
|
|
a20b263d03 | ||
|
|
69b90fbdbe | ||
|
|
2cf3132a60 | ||
|
|
dc7365b27b | ||
|
|
d8b80b3b09 | ||
|
|
33d8d67443 | ||
|
|
9f74b8c9e2 | ||
|
|
17ce62043e | ||
|
|
896db63e40 | ||
|
|
467f657e76 | ||
|
|
efaec6dced | ||
|
|
5adea4114e | ||
|
|
02a5f95a79 | ||
|
|
91e0894f3f | ||
|
|
20cff0223e | ||
|
|
8a4cc4fbd6 | ||
|
|
d372997c45 | ||
|
|
a0b9b1e5a9 | ||
|
|
88defd04db | ||
|
|
e428e21b89 | ||
|
|
b383c47099 | ||
|
|
a262e55d0d | ||
|
|
637cb57c28 | ||
|
|
65688ba5c8 | ||
|
|
63f38f9f41 | ||
|
|
3d46931839 | ||
|
|
3840bc84e6 | ||
|
|
1c9a614a4f | ||
|
|
d127e35180 | ||
|
|
386cb933d4 | ||
|
|
54b7c1b8d2 | ||
|
|
967c8a0609 | ||
|
|
6093777a38 | ||
|
|
bf3ca40593 | ||
|
|
0951b64836 | ||
|
|
32c707316b | ||
|
|
f08344bfbc | ||
|
|
bcd97d2870 | ||
|
|
e54a2423a8 | ||
|
|
3c938dc216 | ||
|
|
80e364a5d0 | ||
|
|
120c425db7 | ||
|
|
df466ccd7d | ||
|
|
0a5b7c6ec0 | ||
|
|
08d0cedfea | ||
|
|
5abef67e95 | ||
|
|
ba788ed4ee | ||
|
|
e883d3fc1b | ||
|
|
7f3332eb99 | ||
|
|
28638a0d9b | ||
|
|
0686733297 | ||
|
|
8a7336fb6f | ||
|
|
bf097488b7 | ||
|
|
fad01cd373 | ||
|
|
5b0b92e859 | ||
|
|
dc7e117725 | ||
|
|
f4f55124a4 | ||
|
|
b86dc28fcb | ||
|
|
c6cd9a4c8b | ||
|
|
62974b6c9c | ||
|
|
f76843a802 | ||
|
|
fb362d4f10 | ||
|
|
3996bc3fde | ||
|
|
7b68fcd082 | ||
|
|
c8dc4b69b8 | ||
|
|
0265ed819d | ||
|
|
96ce8da4f6 | ||
|
|
2ed48aa52f | ||
|
|
434c3eaa98 | ||
|
|
0efacabbb5 | ||
|
|
61fac4da4b | ||
|
|
6ea66cc129 | ||
|
|
30b9252953 | ||
|
|
3b10cebd3d | ||
|
|
171e4353ac | ||
|
|
1882e2f481 | ||
|
|
0c4c0c47b8 | ||
|
|
fe3a37012f | ||
|
|
fe47f7dc4c | ||
|
|
61e93c8aeb | ||
|
|
73e225f69c | ||
|
|
ef0a29048c | ||
|
|
e447432ead | ||
|
|
4203489288 | ||
|
|
e7e332ee69 | ||
|
|
1bf2487713 | ||
|
|
07952792bb | ||
|
|
3e827ae4d1 | ||
|
|
839d5701db | ||
|
|
3ebdc42d8b | ||
|
|
747f9e656c | ||
|
|
9d429cc7ac | ||
|
|
b04424611d | ||
|
|
4f5723a9fe | ||
|
|
d362fea453 | ||
|
|
22ede94fe5 | ||
|
|
94e6fba8d8 | ||
|
|
61fb39f691 | ||
|
|
9478e36442 | ||
|
|
e6bd87aabe | ||
|
|
443b6c32e7 | ||
|
|
56a01f8a9e | ||
|
|
2e4e636392 | ||
|
|
c21087a6bb | ||
|
|
ac07453ae9 | ||
|
|
43835a2749 | ||
|
|
36f5714273 | ||
|
|
d48d7b71f5 | ||
|
|
b82208d0c1 | ||
|
|
9f7a99a9af | ||
|
|
a37f1b1575 | ||
|
|
3dbb79f467 | ||
|
|
44220f8c89 | ||
|
|
e43adb629b | ||
|
|
3c0e266bd5 | ||
|
|
67230d6de5 | ||
|
|
6a9cc33099 | ||
|
|
4b4f463907 | ||
|
|
991e8b3aae | ||
|
|
420a7792d0 | ||
|
|
e062ae86aa | ||
|
|
6326c61a70 | ||
|
|
eea929be22 | ||
|
|
9962dc418e | ||
|
|
77f03d2bb5 | ||
|
|
a236f54cc9 | ||
|
|
de6d1ed419 | ||
|
|
5345fb6b0e | ||
|
|
72d3bb8b33 | ||
|
|
d908ddd2ef | ||
|
|
8dc46ae460 | ||
|
|
1218e11f1e | ||
|
|
18ddeeb8bc | ||
|
|
3b614c0cfa | ||
|
|
5f89dc7d6e | ||
|
|
2d251d6924 | ||
|
|
c46761fdcd | ||
|
|
321490c60a | ||
|
|
dc88c3a0c5 | ||
|
|
2125c059c3 | ||
|
|
f6e319ef2e | ||
|
|
3d1f14f079 | ||
|
|
1abc7bec79 | ||
|
|
18dfe0dd4e | ||
|
|
c94657a1d8 | ||
|
|
c755692dde | ||
|
|
1e46f60599 | ||
|
|
f009ea4a47 | ||
|
|
7cdc68de58 | ||
|
|
734bb168e3 | ||
|
|
6e227a5e76 | ||
|
|
307c11527a | ||
|
|
5621d09ed1 | ||
|
|
8c4057e25f | ||
|
|
8f47019836 | ||
|
|
7a799a583e | ||
|
|
ae54c380bb | ||
|
|
738ce05a6a | ||
|
|
b4f323482c | ||
|
|
e957501bc3 | ||
|
|
f38b70aee3 | ||
|
|
62aa9ed8ce | ||
|
|
eada3203b5 | ||
|
|
e2d72e213a | ||
|
|
664f1245dd | ||
|
|
d41a74b958 | ||
|
|
d2e030b6ed | ||
|
|
1b73c818fe | ||
|
|
a2913c1b3d | ||
|
|
95f386689b | ||
|
|
6ba3c59bc6 | ||
|
|
e65822d31a | ||
|
|
866ffdf84d | ||
|
|
338a11e8c5 | ||
|
|
6a0f4e7f4d | ||
|
|
dee73a71be | ||
|
|
9b079a7363 | ||
|
|
ac593b977e | ||
|
|
5b43f91839 | ||
|
|
ece8e1f566 | ||
|
|
cfbf2ee2ea | ||
|
|
6042b819eb | ||
|
|
367c547d7d | ||
|
|
6ac1087775 | ||
|
|
2982c7c1d0 | ||
|
|
a3a62da413 | ||
|
|
958d453c5d | ||
|
|
0f09389954 | ||
|
|
dc104b5c83 | ||
|
|
97e67238ea | ||
|
|
ac72938f3a | ||
|
|
133f857c90 | ||
|
|
3e8708a684 | ||
|
|
90a4d2a19b | ||
|
|
251c03879a | ||
|
|
ae5f032774 | ||
|
|
dd6f3c9e10 | ||
|
|
84396edc7e | ||
|
|
6079b26874 | ||
|
|
b94eca1419 | ||
|
|
a14ccf053e | ||
|
|
1fd624717d | ||
|
|
dca71d6aaa | ||
|
|
441dd9f254 | ||
|
|
6e95ff3cd5 | ||
|
|
a4d7180f07 | ||
|
|
8890344e49 | ||
|
|
d3f15b49f1 | ||
|
|
8227e3155d | ||
|
|
d0e44775cd | ||
|
|
5f73da34f8 | ||
|
|
ed9a8c623c | ||
|
|
ad3a3e02a7 | ||
|
|
08509d9a42 | ||
|
|
99d1026ab8 | ||
|
|
a471e65bf2 | ||
|
|
807520bd14 | ||
|
|
68efb13b02 | ||
|
|
3351aa00b2 | ||
|
|
b4b4b40c03 | ||
|
|
bfe077bfb6 | ||
|
|
62aef87f39 | ||
|
|
a8965747f2 | ||
|
|
6a28d55cbf | ||
|
|
902daca592 | ||
|
|
b8094dc31e | ||
|
|
e2bb33a278 | ||
|
|
0cf7a23785 | ||
|
|
984ab2b4b8 | ||
|
|
99b636b6a7 | ||
|
|
22c9314c52 | ||
|
|
d96e4cfa30 | ||
|
|
f390b8d769 | ||
|
|
764c279509 | ||
|
|
bf1b284c20 | ||
|
|
c50a04d832 | ||
|
|
f8d4b5c286 | ||
|
|
31d24d6654 | ||
|
|
8fb8d46593 | ||
|
|
7b3e6ed2f5 | ||
|
|
06d1e2d093 | ||
|
|
7d0716889b | ||
|
|
be35464a0e | ||
|
|
b2e6ecea09 | ||
|
|
fea3b5eab8 | ||
|
|
e15fb07855 | ||
|
|
e712ee7e3d | ||
|
|
10de0c5e4e | ||
|
|
08fb627a3d | ||
|
|
61651ceaa9 | ||
|
|
4034cb97bc | ||
|
|
de59412f4b | ||
|
|
13809e0a15 | ||
|
|
c715985c07 | ||
|
|
32c930e9ab | ||
|
|
f1febd43b2 | ||
|
|
b9fcfc65d8 | ||
|
|
19ffb8fde5 | ||
|
|
420c851349 | ||
|
|
75a97e3f7b | ||
|
|
61af1b57e4 | ||
|
|
4703a0ce80 | ||
|
|
4054514874 | ||
|
|
b969806a43 | ||
|
|
b9e70f7821 | ||
|
|
2a5aadbf48 | ||
|
|
0f0e558289 | ||
|
|
7cdc1871c1 | ||
|
|
12633630ab | ||
|
|
0643dfe61b | ||
|
|
d66098e3dd | ||
|
|
3fa5a82cb1 | ||
|
|
58b52f3bf8 | ||
|
|
368551a133 | ||
|
|
2aafb8f8d0 | ||
|
|
9c4736bb17 | ||
|
|
71840771e9 | ||
|
|
a4cabf6b61 | ||
|
|
ce98483800 | ||
|
|
ed67b9caa4 | ||
|
|
cbfb0fda5a | ||
|
|
edd790e0a8 | ||
|
|
f1bc8b0892 | ||
|
|
bc3236f035 | ||
|
|
e92598caeb | ||
|
|
c295a8af70 | ||
|
|
ae1ce4eb54 | ||
|
|
23c0e1a9b3 | ||
|
|
57168941b2 | ||
|
|
dedb6325a8 | ||
|
|
b65bd345ef | ||
|
|
d3cd1f406f | ||
|
|
986dcdd054 | ||
|
|
c2547e29dd | ||
|
|
cebc3a1072 | ||
|
|
932dad3197 | ||
|
|
c0fcba572d | ||
|
|
5dee4bc718 | ||
|
|
66521ab1de | ||
|
|
7ce52e88c0 | ||
|
|
795015c1e8 | ||
|
|
65b4f04d50 | ||
|
|
f94d252cea | ||
|
|
3c4becd315 | ||
|
|
a5be4ddc74 | ||
|
|
e793a5d902 | ||
|
|
1e6b143073 | ||
|
|
983dfd764c | ||
|
|
bcba9b1fee | ||
|
|
39518769ff | ||
|
|
3e2fd5f6b3 | ||
|
|
bb9443782b | ||
|
|
a5eb308eb7 | ||
|
|
6e32c65ce4 | ||
|
|
d24b4c4320 | ||
|
|
68d7ab12b2 | ||
|
|
1a90f7b69c | ||
|
|
c2c004776f | ||
|
|
9f289689bb | ||
|
|
3a08ee3d66 | ||
|
|
3f90c29b0d | ||
|
|
8cfc822887 | ||
|
|
786dd821bc | ||
|
|
98989f19ee | ||
|
|
28a044aa26 | ||
|
|
a8c8155e8e | ||
|
|
fcedc1dc3f | ||
|
|
c1cc30c8d4 | ||
|
|
79704e5d8f | ||
|
|
c276f6ff7e | ||
|
|
096d3eabcd | ||
|
|
252a35e796 | ||
|
|
7f68648067 | ||
|
|
ada5b187c7 | ||
|
|
286e016e0e | ||
|
|
855a023c51 | ||
|
|
fd0e5587fa | ||
|
|
fdc57a15f6 | ||
|
|
4bf3bdf2d8 | ||
|
|
e843160dcb | ||
|
|
01870df0a9 | ||
|
|
1b8d7e81b0 | ||
|
|
77121bc77b | ||
|
|
6ae1152eea | ||
|
|
335f001567 | ||
|
|
ff59751b3c | ||
|
|
bb9c177485 | ||
|
|
68f89922d6 | ||
|
|
450406efbc | ||
|
|
bc752d6087 | ||
|
|
c4d29bf5b2 | ||
|
|
995ead5584 | ||
|
|
af3b754ee2 | ||
|
|
5c9ad7fce6 | ||
|
|
4b455d3d83 | ||
|
|
941c21b681 | ||
|
|
cfc8494f3b | ||
|
|
fe56d428c0 | ||
|
|
f10717dc73 | ||
|
|
e4decfd4bd | ||
|
|
aa52cfcd81 | ||
|
|
d1fb3092ba | ||
|
|
b4938889d4 | ||
|
|
9403c911ce | ||
|
|
50142ba7af | ||
|
|
711eaef9ea | ||
|
|
b670630c81 | ||
|
|
3b998fdc54 | ||
|
|
dd5ec50e4b | ||
|
|
627dfaf069 | ||
|
|
ca3088a08d | ||
|
|
63725ea32d | ||
|
|
8e3e2f13a8 | ||
|
|
262238adca | ||
|
|
4e8b111da1 | ||
|
|
27c18b1c64 | ||
|
|
2d0a396d46 | ||
|
|
cdbd6e5e85 | ||
|
|
f6fb7cb101 | ||
|
|
4b2a818159 | ||
|
|
0b2cecdaae | ||
|
|
a6a95f098b | ||
|
|
17a9fac9ca | ||
|
|
413d837155 | ||
|
|
ad363667e1 | ||
|
|
eb136c70d4 | ||
|
|
1ce0241964 | ||
|
|
a2673955a0 | ||
|
|
1d6e210c97 | ||
|
|
f36f89daeb | ||
|
|
210f4edecf | ||
|
|
a558487ee0 | ||
|
|
b45fdcf650 | ||
|
|
baf172ed6a | ||
|
|
e64110acb1 | ||
|
|
d8ae75228d | ||
|
|
61ed208946 | ||
|
|
4f38efcb15 | ||
|
|
62c6729ad3 | ||
|
|
fd0ee42a4d | ||
|
|
d46fe4c5c6 | ||
|
|
307e695c51 | ||
|
|
b3d763dd5c | ||
|
|
f0555f4cd6 | ||
|
|
8953e851a1 | ||
|
|
09ae9e21b6 | ||
|
|
982d4d0dea | ||
|
|
724c3d91d5 | ||
|
|
759895012f | ||
|
|
48f056c336 | ||
|
|
7e7cfb8175 | ||
|
|
d8275c3c60 | ||
|
|
7c854716df | ||
|
|
efc6ca5073 | ||
|
|
ff1033d6d9 | ||
|
|
8de562e931 | ||
|
|
291d397b90 | ||
|
|
1ced186070 | ||
|
|
dd9210256d | ||
|
|
846166ffa0 | ||
|
|
4e8b0a81f6 | ||
|
|
be3cb7b5aa | ||
|
|
81520789a6 | ||
|
|
bea18ddafc | ||
|
|
b14b0a186c | ||
|
|
8c6e3fef17 | ||
|
|
62690928c6 | ||
|
|
ec96351509 | ||
|
|
5c8fbbaf20 | ||
|
|
bc00134c62 | ||
|
|
7ed7f59ca2 | ||
|
|
5cd49f8c2d | ||
|
|
2740f4ff1f | ||
|
|
5b1a2fe1bf | ||
|
|
a0f6ff42fa | ||
|
|
316681cafb | ||
|
|
6d2a5c29e8 | ||
|
|
3750c5302c | ||
|
|
a299058164 | ||
|
|
235f02844b | ||
|
|
a866c7c45e | ||
|
|
c8b8b3cadf | ||
|
|
2610be7bb8 | ||
|
|
7c640bd299 | ||
|
|
0604c7fd87 | ||
|
|
e4574f5e38 | ||
|
|
2e272d0ec7 | ||
|
|
270645280a | ||
|
|
a8b258a5a2 | ||
|
|
d3148ec5e5 | ||
|
|
0190fb3dbc | ||
|
|
f0f52523e7 | ||
|
|
9461844917 | ||
|
|
03730a35b9 | ||
|
|
bfda1ec9d1 | ||
|
|
17ab284b9d | ||
|
|
f51c3c4c5f | ||
|
|
c742851bbf | ||
|
|
9f56ba29e4 | ||
|
|
10a315a997 | ||
|
|
dd7c81416d | ||
|
|
677536fd32 | ||
|
|
a86508a71e | ||
|
|
f3f3a8e0a0 | ||
|
|
f588e17a5b | ||
|
|
8b5e11a2b1 | ||
|
|
de63afb341 | ||
|
|
a43858e60f | ||
|
|
4dd77eb4d6 | ||
|
|
234951f19b | ||
|
|
02c995141e | ||
|
|
dc786e7809 | ||
|
|
e73ff65381 | ||
|
|
6a459d285a | ||
|
|
3751de29e9 | ||
|
|
29b8f500c2 | ||
|
|
5a03253d72 | ||
|
|
b90d0ab136 | ||
|
|
2b7a7f90b7 | ||
|
|
8f03b98162 | ||
|
|
9b5d88e0d0 | ||
|
|
b4b7e995cd | ||
|
|
528984a4f8 | ||
|
|
1b438493cf | ||
|
|
3b54ee8a34 | ||
|
|
ffddd5941d | ||
|
|
6313c343d4 | ||
|
|
75af1a47c4 | ||
|
|
b50afacfed | ||
|
|
7de6088904 | ||
|
|
8281b8ad57 | ||
|
|
d82ceda8a1 | ||
|
|
bff472661c | ||
|
|
5184a750a6 | ||
|
|
f60f9d4d6b | ||
|
|
9d736a1803 | ||
|
|
d77ab55ce1 | ||
|
|
13c0052761 | ||
|
|
bc7fa5e550 | ||
|
|
3d7cff9835 | ||
|
|
cc6619bd58 | ||
|
|
4cd2d9f19e | ||
|
|
69d9410ad3 | ||
|
|
f038bbbed9 | ||
|
|
05f9744e41 | ||
|
|
ef1134dca7 | ||
|
|
de772eb038 | ||
|
|
5485a02af8 | ||
|
|
2c4c729f2a | ||
|
|
b6b72a44c8 | ||
|
|
0ec94592d4 | ||
|
|
068970bff8 | ||
|
|
26361016d9 | ||
|
|
1f907ee3bb | ||
|
|
fc8e4597a7 | ||
|
|
08dfcc4c04 | ||
|
|
8cbcb5bd41 | ||
|
|
865fd6e79a | ||
|
|
769bb7f140 | ||
|
|
ca2731c4b9 | ||
|
|
2bbb2f249d | ||
|
|
bb03b8754a | ||
|
|
3e3de07034 | ||
|
|
402f3827f0 | ||
|
|
8e3ce84d94 | ||
|
|
8e99cd3206 | ||
|
|
9fdf62af89 | ||
|
|
1bc25030ee | ||
|
|
69cb60a7bb | ||
|
|
7939ced35e | ||
|
|
0144a27348 | ||
|
|
27dd522957 | ||
|
|
fa9e2ce8bf | ||
|
|
6a02815615 | ||
|
|
fa5d3d59a3 | ||
|
|
723b5d3f7d | ||
|
|
a2e52d663f | ||
|
|
99444e8f79 | ||
|
|
024cd9adae | ||
|
|
f7a56405a8 | ||
|
|
a6b6d5ba9a | ||
|
|
ab92e76dc8 | ||
|
|
c87fbfdc3b | ||
|
|
8356556044 | ||
|
|
0bdc1cda4e | ||
|
|
fa269949dd | ||
|
|
1060db9be7 | ||
|
|
df4dacaa89 | ||
|
|
ee96eba261 | ||
|
|
172663c1a0 | ||
|
|
f2e68be9bb | ||
|
|
242ef530a8 | ||
|
|
22a9e7512b | ||
|
|
41562df308 | ||
|
|
4e7053cfd8 | ||
|
|
42f7377ae0 | ||
|
|
086ffa020e | ||
|
|
38731065db | ||
|
|
602081b5d9 | ||
|
|
15c8c40ba8 | ||
|
|
b0bd577697 | ||
|
|
86eef8cdff | ||
|
|
437049ca22 | ||
|
|
6e12407521 | ||
|
|
8fcb602161 | ||
|
|
51af91599b | ||
|
|
c5c9b6ff9e | ||
|
|
e3b5eb746a | ||
|
|
cc8c5e7787 | ||
|
|
4717fbffaa | ||
|
|
d552acdbfc | ||
|
|
c28e2996d2 | ||
|
|
ad33a235d2 | ||
|
|
ba0dd99ea1 | ||
|
|
840016d287 | ||
|
|
0c9b5d5c37 | ||
|
|
4f7185fe00 | ||
|
|
095002c917 | ||
|
|
83322c2e9c | ||
|
|
03ef174aec | ||
|
|
c41b715259 | ||
|
|
d0e5182f78 | ||
|
|
17ea45322d | ||
|
|
7b0c3d7790 | ||
|
|
9461e99923 | ||
|
|
b4c0efad44 | ||
|
|
98d07d49b8 | ||
|
|
bbc26e5efa | ||
|
|
01d9c79ad2 | ||
|
|
48326e19ea | ||
|
|
bf534010c8 | ||
|
|
be849d1612 | ||
|
|
3da07e5b14 | ||
|
|
4ad3c84be0 | ||
|
|
5cd280e718 | ||
|
|
9a417daee7 | ||
|
|
60f4aabced | ||
|
|
5dd27b18ae | ||
|
|
6ffc0e26e3 | ||
|
|
dcd088713a | ||
|
|
3a8cb18589 | ||
|
|
16e8ea38da | ||
|
|
618e703768 | ||
|
|
1faa996b87 | ||
|
|
0f7f451225 | ||
|
|
4472745cf1 | ||
|
|
52a83d3ef3 | ||
|
|
cb433740f0 | ||
|
|
3f5b196783 | ||
|
|
c6b48fe911 | ||
|
|
e0bd90b74a | ||
|
|
82edb42dc4 | ||
|
|
cbcaf86272 | ||
|
|
30ac0d5e30 | ||
|
|
62f3ac4728 | ||
|
|
3491f60cd2 | ||
|
|
da64026a59 | ||
|
|
06f041ee63 | ||
|
|
18edda7475 | ||
|
|
0268ea521b | ||
|
|
841d7d379c | ||
|
|
b12ac5bdd5 | ||
|
|
967b5466c0 | ||
|
|
559d530325 | ||
|
|
b1929916fa | ||
|
|
646144ddf8 | ||
|
|
1bf658c5ba | ||
|
|
659d5814cd | ||
|
|
6aa0ae3b2c | ||
|
|
a9c3a8135d | ||
|
|
baedfec11a | ||
|
|
bec82ebb34 | ||
|
|
88f751a23c | ||
|
|
17288cdb41 | ||
|
|
98c01d6558 | ||
|
|
4ae6f80c0f | ||
|
|
22920e8d5d | ||
|
|
5c03d2895c | ||
|
|
e185973ea9 | ||
|
|
e75dfc6354 | ||
|
|
28ac672424 | ||
|
|
d3225fe87b | ||
|
|
602cf94057 | ||
|
|
620fa099ad | ||
|
|
ee1ab68105 | ||
|
|
8a141f1b25 | ||
|
|
7f4d2ba1d7 | ||
|
|
312a368eff | ||
|
|
492c7bf391 | ||
|
|
7179d77efe | ||
|
|
8d5c4478e2 | ||
|
|
bfc4426d68 | ||
|
|
0e8d0f1209 | ||
|
|
2b777af8b0 | ||
|
|
5e56dcabdd | ||
|
|
257f37d700 | ||
|
|
09e93879a7 | ||
|
|
3789f95625 | ||
|
|
31c22e9e94 | ||
|
|
58ae566dc6 | ||
|
|
8cd034b5cd | ||
|
|
7394701157 | ||
|
|
234423e82b | ||
|
|
f834a938f2 | ||
|
|
d2bf1ba9cd | ||
|
|
8ec2566464 | ||
|
|
7dd9711c64 | ||
|
|
0c7f7d1ce7 | ||
|
|
abfa34ddb6 | ||
|
|
6d5cf3f952 | ||
|
|
5f910fc7e7 | ||
|
|
dd75630a57 | ||
|
|
9014219205 | ||
|
|
36e65a1165 | ||
|
|
4ef34fc5f4 | ||
|
|
95e9882404 | ||
|
|
b977bc8ddc | ||
|
|
bf6ddb7db6 | ||
|
|
50a1854730 | ||
|
|
4c536a7182 | ||
|
|
fb62fbd197 | ||
|
|
3020c439b0 | ||
|
|
6c44eb8294 | ||
|
|
ce1dc8468b | ||
|
|
c07b7603d6 | ||
|
|
22dc9741b8 | ||
|
|
b2ee165d6b | ||
|
|
8acdf5acdf | ||
|
|
fcfb36863a | ||
|
|
e2e05ab7f8 | ||
|
|
665f0cd35c | ||
|
|
5eb9d8c131 | ||
|
|
7d9d8dbed9 | ||
|
|
736c95931c | ||
|
|
8f98569b2a | ||
|
|
34a865a2b2 | ||
|
|
3df9c18651 | ||
|
|
3fac642ac6 | ||
|
|
38cf4def05 | ||
|
|
0d740caef8 | ||
|
|
d9101bf951 | ||
|
|
4d9c041938 | ||
|
|
ad2f98ecee | ||
|
|
d95d0359a5 | ||
|
|
4221d49190 | ||
|
|
6a63d1e1bf | ||
|
|
fb1fe28aa9 | ||
|
|
d39be7dab1 | ||
|
|
0906711ee2 | ||
|
|
4cbef76b5d | ||
|
|
cf50530aad | ||
|
|
6a872c41f9 | ||
|
|
b417139777 | ||
|
|
be340ec1ef | ||
|
|
af9b0d1b66 | ||
|
|
6a97f0189b | ||
|
|
ae90a0b602 | ||
|
|
3538a9c448 | ||
|
|
3ea81e414c | ||
|
|
bc1dc8f54d | ||
|
|
51ab26a070 | ||
|
|
3de1f9a283 | ||
|
|
87d61bba41 | ||
|
|
9716e7993f | ||
|
|
666680491a | ||
|
|
58a81c5c4c | ||
|
|
6b8ef3323f | ||
|
|
1c997727c9 | ||
|
|
0edfedf16d | ||
|
|
42d4eb324d | ||
|
|
205450238e | ||
|
|
c3c25d12b0 | ||
|
|
b77c43beb0 | ||
|
|
8373ec9091 | ||
|
|
944a8b8909 | ||
|
|
a78216810d | ||
|
|
69a29db2d7 | ||
|
|
e4fdf56472 | ||
|
|
582ce2283c | ||
|
|
43886cd0c3 | ||
|
|
581eef0495 | ||
|
|
9e1cda0fb7 | ||
|
|
20b6ac540d | ||
|
|
f0da059036 | ||
|
|
0e1a7180e5 | ||
|
|
e55f7fb99e | ||
|
|
9151ce890a | ||
|
|
225875592f | ||
|
|
4a7ed1cd68 | ||
|
|
0a05f634b6 | ||
|
|
939ae1be50 | ||
|
|
1abdcf81f3 | ||
|
|
4b7f83fb7a | ||
|
|
c815c5df17 | ||
|
|
74d37f129f | ||
|
|
8138d89db1 | ||
|
|
5b5e575c4c | ||
|
|
423833260b | ||
|
|
fbb03cca84 | ||
|
|
02c29677a6 | ||
|
|
09ca4109ad | ||
|
|
b1873d4919 | ||
|
|
7f7bafe37a | ||
|
|
9dcecf749d | ||
|
|
23cf07c0bc | ||
|
|
fd30e95c05 | ||
|
|
67e0fe5e75 | ||
|
|
3e205d23e0 | ||
|
|
b4def97a99 | ||
|
|
ed9e4befd6 | ||
|
|
cce5bff7c0 | ||
|
|
b6d9173b6b | ||
|
|
07b38ce1a1 | ||
|
|
7a19e1f563 | ||
|
|
ce04a71447 | ||
|
|
f96d468a04 | ||
|
|
6655125c37 | ||
|
|
4f723c8a08 | ||
|
|
33a8d4202a | ||
|
|
915804c250 | ||
|
|
4523c1be3d | ||
|
|
8ee5785691 | ||
|
|
7d223a4638 | ||
|
|
c632bba0e4 | ||
|
|
ac7e9e7409 | ||
|
|
8567a10991 | ||
|
|
1b9b564b1b | ||
|
|
c91875f5c7 | ||
|
|
c65a184a68 | ||
|
|
9ee57c0871 | ||
|
|
a47fe7c043 | ||
|
|
f1a01ff091 | ||
|
|
0093196671 | ||
|
|
3baba75579 | ||
|
|
c69f784c4f | ||
|
|
b60efcf625 | ||
|
|
044773f27a | ||
|
|
e42d2fcf77 | ||
|
|
a968e74116 | ||
|
|
b711f8d3a4 | ||
|
|
fe238e608d | ||
|
|
4d042152e5 | ||
|
|
d1c0ee4e67 | ||
|
|
12bb701066 | ||
|
|
a8e851942c | ||
|
|
724e1a1fea | ||
|
|
fdd4ec0d74 | ||
|
|
020ae6440a | ||
|
|
815b8a6dbc | ||
|
|
070aa8aaf9 | ||
|
|
5f40fac43c | ||
|
|
86a97221c8 | ||
|
|
562c86f382 | ||
|
|
c004907b76 | ||
|
|
1e1e79beb1 | ||
|
|
931aafa079 | ||
|
|
1d44b6d930 | ||
|
|
d26252004a | ||
|
|
62c26bf6f0 | ||
|
|
fb18af2532 | ||
|
|
3aa2cc8b70 | ||
|
|
f301f0f948 | ||
|
|
11f586bd88 | ||
|
|
679a1f78bd | ||
|
|
a6d456f542 | ||
|
|
059617dc0d | ||
|
|
b7c4b5161d | ||
|
|
55d7ed5032 | ||
|
|
9d6a865b9e | ||
|
|
b94562c2d4 | ||
|
|
ef211120a5 | ||
|
|
8a0500a5cb | ||
|
|
295aabe028 | ||
|
|
a59f800cbb | ||
|
|
5cf6e7a5be | ||
|
|
576594102a | ||
|
|
f4d8dc543f | ||
|
|
a2f1692a6f | ||
|
|
969e5d8dad | ||
|
|
a6c69ab0ca | ||
|
|
98112b163c | ||
|
|
a6cc85b4b6 | ||
|
|
6c238a972b | ||
|
|
72aab29255 | ||
|
|
6402474c46 | ||
|
|
469cc2b708 | ||
|
|
fdfc2d648c | ||
|
|
d7212b2954 | ||
|
|
513bb9920a | ||
|
|
f465da83c9 | ||
|
|
554fae61a8 | ||
|
|
7dfd007898 | ||
|
|
c12a6f5538 | ||
|
|
e35d0afdc1 | ||
|
|
842e57c994 | ||
|
|
909b045c81 | ||
|
|
9ed666d189 | ||
|
|
081ee9cc54 | ||
|
|
f6c1fe1c6c | ||
|
|
ec018be115 | ||
|
|
041d24051d | ||
|
|
1f30bd2085 | ||
|
|
9125e4d5da | ||
|
|
227e314ad8 | ||
|
|
2bf9c4d198 | ||
|
|
0f808a8de4 | ||
|
|
82b7c17c09 | ||
|
|
b476eb5054 | ||
|
|
ffd30e8dd8 | ||
|
|
a7dc1531cb | ||
|
|
c5eec21596 | ||
|
|
17f2c309ac | ||
|
|
7b71b4999e | ||
|
|
5ef40d7166 | ||
|
|
34a29cb8a6 | ||
|
|
f5a8de7d36 | ||
|
|
abb8062519 | ||
|
|
2702dd241c | ||
|
|
c7b6b5068a | ||
|
|
32778b637f | ||
|
|
eeb5dfb252 | ||
|
|
44a759c065 | ||
|
|
a2a827260c | ||
|
|
a8daea7bf1 | ||
|
|
53dd0e017f | ||
|
|
0bc7d4006f | ||
|
|
b224e37625 | ||
|
|
a53d74f700 | ||
|
|
f5d5eb9133 | ||
|
|
985c5e91f6 | ||
|
|
2f3f1438bb | ||
|
|
ed90466495 | ||
|
|
af93c64cfb | ||
|
|
a7b11ecaab | ||
|
|
239c560880 | ||
|
|
8683cf7a6d | ||
|
|
393dac5ef4 | ||
|
|
832540c0bd | ||
|
|
933541631c | ||
|
|
83f33bd403 | ||
|
|
9c7f90a508 | ||
|
|
37b9df5bd8 | ||
|
|
fe0a8cd3ae | ||
|
|
1c11902f89 | ||
|
|
f51ab66afb | ||
|
|
de8d1bc003 | ||
|
|
e867a0c365 | ||
|
|
4b0508d51e | ||
|
|
1eb4363a4b | ||
|
|
1eabd2fb82 | ||
|
|
4daffbaee1 | ||
|
|
32d6fb28f0 | ||
|
|
4b1f26aed5 | ||
|
|
92456281bc | ||
|
|
6113e26177 | ||
|
|
42712950f2 | ||
|
|
0b33274468 | ||
|
|
9d43e5cb33 | ||
|
|
da7249a7da | ||
|
|
8185763b47 | ||
|
|
b58b0de3c2 | ||
|
|
b539612242 | ||
|
|
a17a4c2841 | ||
|
|
1663a841cf | ||
|
|
8cb0f24d1b | ||
|
|
b3b79dbb9c | ||
|
|
c284d64019 | ||
|
|
d27c1154d5 | ||
|
|
acb1d7db82 | ||
|
|
690deb84ea | ||
|
|
a83b3d3943 | ||
|
|
8e79a7232f | ||
|
|
aaf26005c3 | ||
|
|
618324f5d3 | ||
|
|
3520c15609 | ||
|
|
fad8491fc9 | ||
|
|
3eda4784bb | ||
|
|
b719970c0b | ||
|
|
68651bf651 | ||
|
|
d4982767f9 | ||
|
|
aa6e536bdb | ||
|
|
515a44abdb | ||
|
|
bbda4a813a | ||
|
|
a81ed2173e | ||
|
|
e3e15baf50 | ||
|
|
225624ef26 | ||
|
|
7d60fe14e4 | ||
|
|
357d0e1dee | ||
|
|
2c5f9483f5 | ||
|
|
2e4c654d24 | ||
|
|
c4a2357a3c | ||
|
|
0b72380497 | ||
|
|
21bd727d6c | ||
|
|
18dea8572d | ||
|
|
e7d271c9e1 | ||
|
|
cc2d4600d8 | ||
|
|
830658002d | ||
|
|
b06e69da6c | ||
|
|
2d12c2d5c8 | ||
|
|
711d42d763 | ||
|
|
5acfa350b7 | ||
|
|
fa18b2cf05 | ||
|
|
fd7c70d42d | ||
|
|
be3bd2810f | ||
|
|
52cb7100f2 | ||
|
|
5b338faafa | ||
|
|
b73d4f8d3f | ||
|
|
9d48b7acf4 | ||
|
|
2458fea93e | ||
|
|
539c9b2f0c | ||
|
|
1bf2f9775d | ||
|
|
6be19fd726 | ||
|
|
445bbefc90 | ||
|
|
e9f69ac719 | ||
|
|
416c6348f8 | ||
|
|
75f52eeda4 | ||
|
|
20f6f68d34 | ||
|
|
b94745bfeb | ||
|
|
00cfbecfee | ||
|
|
092bd2feb9 | ||
|
|
738523bd5f | ||
|
|
910453353b | ||
|
|
13328439bc | ||
|
|
7fe764fa81 | ||
|
|
204ed812d0 | ||
|
|
7dfde9f9fe | ||
|
|
269e6c2a15 | ||
|
|
80cb5a3de4 | ||
|
|
61ee456a9d | ||
|
|
b6dd719334 | ||
|
|
40292bd765 | ||
|
|
64580b3060 | ||
|
|
e5db4109e0 | ||
|
|
98bf782e42 | ||
|
|
e77fe6304b | ||
|
|
d0d33c82a2 | ||
|
|
4ea1cf7500 | ||
|
|
835db067d1 | ||
|
|
281391b987 | ||
|
|
e458dee210 | ||
|
|
c4d765fc77 | ||
|
|
283e1f384e | ||
|
|
c204bb533c | ||
|
|
3f66a14524 | ||
|
|
b7e12d640e | ||
|
|
c1d40aa45b | ||
|
|
4e8540cc23 | ||
|
|
9b119a28a5 | ||
|
|
ff749ea95a | ||
|
|
775240461c | ||
|
|
642651fe29 | ||
|
|
c029ed4f59 | ||
|
|
2f20ef2c6b | ||
|
|
686b672b03 | ||
|
|
59233a5db9 | ||
|
|
00f80efd45 | ||
|
|
000d3cff5a | ||
|
|
c1644a1f17 | ||
|
|
af9f912974 | ||
|
|
f56e736bed | ||
|
|
0d89cb5d73 | ||
|
|
ef4467c8b8 | ||
|
|
16f1061f41 | ||
|
|
ee22dfaf73 | ||
|
|
38982dbe41 | ||
|
|
064d858f63 | ||
|
|
31bc57ef04 | ||
|
|
9c1a181e67 | ||
|
|
b160683938 | ||
|
|
78b8e06a07 | ||
|
|
8ddde738a5 | ||
|
|
019a09d36e | ||
|
|
c78c155cf0 | ||
|
|
20765a994f | ||
|
|
8a6f638464 | ||
|
|
c4ea3ea9f8 | ||
|
|
243fa32395 | ||
|
|
3c15e7e4d4 | ||
|
|
3bd96ae803 | ||
|
|
3b638a9708 | ||
|
|
188487d180 | ||
|
|
922308f3c8 | ||
|
|
f2bbfc138b | ||
|
|
b42f932be5 | ||
|
|
30988915fa | ||
|
|
f4ece4ed57 | ||
|
|
b1b88f09a2 | ||
|
|
66714ebcad | ||
|
|
3ef3d14e6d | ||
|
|
0a8c804187 | ||
|
|
fb46697b26 | ||
|
|
243b81766a | ||
|
|
e71d15e5da | ||
|
|
a3d0fc798e | ||
|
|
cb2ab79827 | ||
|
|
5515da09bf | ||
|
|
1622678cd7 | ||
|
|
400b2ce7f5 | ||
|
|
9046b77400 | ||
|
|
98695e35af | ||
|
|
248a1050a8 | ||
|
|
8dfe0ee3f4 |
@@ -60,6 +60,124 @@
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Zamiell",
|
||||
"name": "James",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/5511220?v=4",
|
||||
"profile": "https://github.com/Zamiell",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "wushujames",
|
||||
"name": "James Cheng",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/677529?v=4",
|
||||
"profile": "https://github.com/wushujames",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "massongit",
|
||||
"name": "Masaya Suzuki",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/15100604?v=4",
|
||||
"profile": "https://qiita.com/SUZUKI_Masaya",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "fagai",
|
||||
"name": "fagai",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1772112?v=4",
|
||||
"profile": "https://fagai.net",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "pkit",
|
||||
"name": "Constantine Peresypkin",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/805654?v=4",
|
||||
"profile": "https://github.com/pkit",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "deronnax",
|
||||
"name": "Mathieu Dupuy",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/439279?v=4",
|
||||
"profile": "https://github.com/deronnax",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "JoeOvo",
|
||||
"name": "Joe Moggridge",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/100686542?v=4",
|
||||
"profile": "https://github.com/JoeOvo",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "thyarles",
|
||||
"name": "Charles Santos",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1340046?v=4",
|
||||
"profile": "https://www.credly.com/users/thyarles/badges",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "kostiantyn-korniienko-aurea",
|
||||
"name": "Kostiantyn Korniienko",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/37180625?v=4",
|
||||
"profile": "https://github.com/kostiantyn-korniienko-aurea",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "lpulley",
|
||||
"name": "Logan Pulley",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/7193187?v=4",
|
||||
"profile": "https://github.com/lpulley",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "kenji-miyake",
|
||||
"name": "Kenji Miyake",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/31987104?v=4",
|
||||
"profile": "https://www.linkedin.com/in/kenji-miyake/",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "adonisgarciac",
|
||||
"name": "adonisgarciac",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/71078987?v=4",
|
||||
"profile": "https://github.com/adonisgarciac",
|
||||
"contributions": [
|
||||
"code",
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "cfernhout",
|
||||
"name": "Chiel Fernhout",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/22294606?v=4",
|
||||
"profile": "https://github.com/cfernhout",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
@@ -67,5 +185,6 @@
|
||||
"projectOwner": "tj-actions",
|
||||
"repoType": "github",
|
||||
"repoHost": "https://github.com",
|
||||
"skipCi": true
|
||||
"skipCi": true,
|
||||
"commitConvention": "angular"
|
||||
}
|
||||
|
||||
8
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
8
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
@@ -69,8 +69,14 @@ body:
|
||||
id: logs
|
||||
attributes:
|
||||
label: Relevant log output
|
||||
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
||||
description: Please copy and paste any relevant log output which is obtained after enabling debug logging. This will be automatically formatted into code, so no need for backticks.
|
||||
placeholder: |
|
||||
1. Re-running the workflow with debug logging enabled.
|
||||
2. Copy or download the log archive.
|
||||
3. Paste the contents here or upload the file in a subsequent comment.
|
||||
render: shell
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Anything else?
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
2
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
@@ -53,7 +53,7 @@ body:
|
||||
id: terms
|
||||
attributes:
|
||||
label: Code of Conduct
|
||||
description: By submitting this issue, you agree to follow our [Code of Conduct](./CODE_OF_CONDUCT.md)
|
||||
description: By submitting this issue, you agree to follow our [Code of Conduct](../blob/main/CODE_OF_CONDUCT.md)
|
||||
options:
|
||||
- label: I agree to follow this project's Code of Conduct
|
||||
required: true
|
||||
|
||||
3
.github/workflows/auto-approve.yml
vendored
3
.github/workflows/auto-approve.yml
vendored
@@ -3,11 +3,12 @@ name: Auto approve
|
||||
on:
|
||||
pull_request_target
|
||||
|
||||
|
||||
jobs:
|
||||
auto-approve:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: hmarr/auto-approve-action@v2
|
||||
- uses: hmarr/auto-approve-action@v3
|
||||
if: |
|
||||
(
|
||||
github.event.pull_request.user.login == 'dependabot[bot]' ||
|
||||
|
||||
2
.github/workflows/auto-merge.yml
vendored
2
.github/workflows/auto-merge.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
github.actor == 'renovate'
|
||||
steps:
|
||||
- name: automerge
|
||||
uses: pascalgn/automerge-action@v0.14.3
|
||||
uses: pascalgn/automerge-action@v0.15.6
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}
|
||||
MERGE_METHOD: "rebase"
|
||||
|
||||
10
.github/workflows/codacy-analysis.yml
vendored
10
.github/workflows/codacy-analysis.yml
vendored
@@ -24,11 +24,12 @@ jobs:
|
||||
steps:
|
||||
# Checkout the repository to the GitHub Actions runner
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis
|
||||
- name: Run Codacy Analysis CLI
|
||||
uses: codacy/codacy-analysis-cli-action@4.0.0
|
||||
continue-on-error: true
|
||||
uses: codacy/codacy-analysis-cli-action@v4.3.0
|
||||
with:
|
||||
# Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository
|
||||
# You can also omit the token and run the tools that support default configurations
|
||||
@@ -39,11 +40,12 @@ jobs:
|
||||
# Adjust severity of non-security issues
|
||||
gh-code-scanning-compat: true
|
||||
# Force 0 exit code to allow SARIF file generation
|
||||
# This will handover control about PR rejection to the GitHub side
|
||||
# This will hand over control about PR rejection to the GitHub side
|
||||
max-allowed-issues: 2147483647
|
||||
|
||||
# Upload the SARIF file generated in the previous step
|
||||
- name: Upload SARIF results file
|
||||
uses: github/codeql-action/upload-sarif@v1
|
||||
continue-on-error: true
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
10
.github/workflows/greetings.yml
vendored
10
.github/workflows/greetings.yml
vendored
@@ -6,8 +6,8 @@ jobs:
|
||||
greeting:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/first-interaction@v1.1.0
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
issue-message: 'Thanks for reporting this issue.'
|
||||
pr-message: 'Thanks for implementing a fix. Could you include a test that covers your changes.'
|
||||
- uses: actions/first-interaction@v1
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
issue-message: "Thanks for reporting this issue, don't forget to star this project if you haven't already to help us reach a wider audience."
|
||||
pr-message: "Thanks for implementing a fix, could you ensure that the test covers your changes if applicable."
|
||||
|
||||
19
.github/workflows/label-conflict.yml
vendored
19
.github/workflows/label-conflict.yml
vendored
@@ -1,19 +0,0 @@
|
||||
name: "Maintenance"
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
types: [synchronize]
|
||||
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: check if prs are dirty
|
||||
uses: eps1lon/actions-label-merge-conflict@releases/2.x
|
||||
with:
|
||||
dirtyLabel: "PR: needs rebase"
|
||||
repoToken: "${{ secrets.GITHUB_TOKEN }}"
|
||||
commentOnDirty: "This pull request has conflicts, please resolve those before we can evaluate the pull request."
|
||||
commentOnClean: "Conflicts have been resolved."
|
||||
53
.github/workflows/manual-test.yml
vendored
Normal file
53
.github/workflows/manual-test.yml
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
name: Manual Test
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test changed-files
|
||||
runs-on: ${{ matrix.platform }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
max-parallel: 7
|
||||
matrix:
|
||||
platform: [ubuntu-latest, ubuntu-22.04, windows-latest, macos-latest, macos-11, ubuntu-18.04, windows-2022]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Run changed-files with defaults
|
||||
id: changed-files
|
||||
uses: ./
|
||||
|
||||
- name: Show output
|
||||
run: |
|
||||
echo '${{ toJSON(steps.changed-files.outputs) }}'
|
||||
|
||||
- name: Run changed-files with glob filtering
|
||||
id: changed-files-glob
|
||||
uses: ./
|
||||
with:
|
||||
files: |
|
||||
test/*.txt
|
||||
|
||||
- name: Show output
|
||||
run: |
|
||||
echo '${{ toJSON(steps.changed-files-glob.outputs) }}'
|
||||
|
||||
- name: Run changed-files with glob filtering and all_old_new_renamed_files
|
||||
id: changed-files-glob-all-old-new-renamed-files
|
||||
uses: ./
|
||||
with:
|
||||
include_all_old_new_renamed_files: true
|
||||
files: |
|
||||
test/*.txt
|
||||
|
||||
- name: Show output
|
||||
run: |
|
||||
echo '${{ toJSON(steps.changed-files-glob-all-old-new-renamed-files.outputs) }}'
|
||||
43
.github/workflows/matrix-test.yml
vendored
Normal file
43
.github/workflows/matrix-test.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
name: Matrix Test
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
changed-files:
|
||||
name: Get changes
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: ./
|
||||
with:
|
||||
json: true
|
||||
- name: List all changed files
|
||||
run: echo '${{ steps.changed-files.outputs.all_changed_files }}'
|
||||
- id: set-matrix
|
||||
run: echo "matrix={\"container\":${{ steps.changed-files.outputs.all_changed_files }}}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
matrix-job:
|
||||
name: Run Matrix Job
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changed-files]
|
||||
strategy:
|
||||
matrix: ${{ fromJSON(needs.changed-files.outputs.matrix) }}
|
||||
max-parallel: 4
|
||||
fail-fast: false
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Test
|
||||
run: |
|
||||
echo ${{ matrix.container }}
|
||||
18
.github/workflows/rebase.yml
vendored
18
.github/workflows/rebase.yml
vendored
@@ -1,18 +0,0 @@
|
||||
name: Automatic Rebase
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
jobs:
|
||||
rebase:
|
||||
name: Rebase
|
||||
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase')
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.4.0
|
||||
with:
|
||||
token: ${{ secrets.PAT_TOKEN }}
|
||||
fetch-depth: 0 # otherwise, you will failed to push refs to dest repo
|
||||
- name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@1.5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}
|
||||
29
.github/workflows/submodule-sync.yml
vendored
Normal file
29
.github/workflows/submodule-sync.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
sync:
|
||||
name: Submodule Sync
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
submodules: recursive
|
||||
|
||||
- name: Git Sumbodule Update
|
||||
run: |
|
||||
git pull --recurse-submodules
|
||||
git submodule update --remote --recursive
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v4.2.3
|
||||
with:
|
||||
title: "Updated submodule"
|
||||
labels: "merge when passing"
|
||||
branch: "chore/update-submodule"
|
||||
commit-message: "Updated submodule"
|
||||
body: "Updated submodule"
|
||||
token: ${{ secrets.PAT_TOKEN }}
|
||||
12
.github/workflows/sync-release-version.yml
vendored
12
.github/workflows/sync-release-version.yml
vendored
@@ -8,24 +8,28 @@ jobs:
|
||||
update-version:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.4.0
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Run release-tagger
|
||||
uses: tj-actions/release-tagger@v2
|
||||
- name: Sync release version.
|
||||
uses: tj-actions/sync-release-version@v9
|
||||
uses: tj-actions/sync-release-version@v13
|
||||
id: sync-release-version
|
||||
with:
|
||||
pattern: '${{ github.repository }}@'
|
||||
only_major: true
|
||||
paths: |
|
||||
README.md
|
||||
- name: Generate CHANGELOG
|
||||
uses: tj-actions/github-changelog-generator@v1.8
|
||||
uses: tj-actions/github-changelog-generator@v1.17
|
||||
with:
|
||||
output: 'HISTORY.md'
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v3.11.0
|
||||
uses: peter-evans/create-pull-request@v4.2.3
|
||||
with:
|
||||
base: "main"
|
||||
labels: "merge when passing"
|
||||
title: "Upgraded to ${{ steps.sync-release-version.outputs.new_version }}"
|
||||
branch: "upgrade-to-${{ steps.sync-release-version.outputs.new_version }}"
|
||||
commit-message: "Upgraded from ${{ steps.sync-release-version.outputs.old_version }} -> ${{ steps.sync-release-version.outputs.new_version }}"
|
||||
|
||||
813
.github/workflows/test.yml
vendored
813
.github/workflows/test.yml
vendored
File diff suppressed because it is too large
Load Diff
16
.github/workflows/update-readme.yml
vendored
16
.github/workflows/update-readme.yml
vendored
@@ -9,15 +9,18 @@ jobs:
|
||||
sync-assets:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.4.0
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Run test
|
||||
uses: tj-actions/remark@v1.7
|
||||
- name: Run auto-doc
|
||||
uses: tj-actions/auto-doc@v1
|
||||
|
||||
- name: Run remark
|
||||
uses: tj-actions/remark@v3
|
||||
|
||||
- name: Verify Changed files
|
||||
uses: tj-actions/verify-changed-files@v8
|
||||
uses: tj-actions/verify-changed-files@v13
|
||||
id: verify_changed_files
|
||||
with:
|
||||
files: |
|
||||
@@ -26,14 +29,15 @@ jobs:
|
||||
- name: README.md changed
|
||||
if: steps.verify_changed_files.outputs.files_changed == 'true'
|
||||
run: |
|
||||
echo "README.md has uncommited changes"
|
||||
echo "README.md has uncommitted changes"
|
||||
exit 1
|
||||
|
||||
- name: Create Pull Request
|
||||
if: failure()
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
with:
|
||||
base: "main"
|
||||
labels: "merge when passing"
|
||||
title: "Updated README.md"
|
||||
branch: "chore/update-readme"
|
||||
commit-message: "Updated README.md"
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,3 +2,4 @@
|
||||
.envrc
|
||||
tag.sh
|
||||
untag.sh
|
||||
.DS_Store
|
||||
|
||||
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "test/demo"]
|
||||
path = test/demo
|
||||
url = git@github.com:tj-actions/demo.git
|
||||
2093
HISTORY.md
2093
HISTORY.md
File diff suppressed because it is too large
Load Diff
886
README.md
886
README.md
@@ -1,42 +1,55 @@
|
||||
[](https://github.com/tj-actions/changed-files/actions/workflows/test.yml) [](https://github.com/tj-actions/changed-files/actions/workflows/sync-release-version.yml) [](https://www.codacy.com/gh/tj-actions/changed-files/dashboard?utm_source=github.com\&utm_medium=referral\&utm_content=tj-actions/changed-files\&utm_campaign=Badge_Grade) [](https://github.com/search?o=desc\&q=tj-actions+changed-files+language%3AYAML\&s=\&type=Code)
|
||||
[](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
|
||||
[](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
|
||||
[](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
|
||||
[](https://github.com/search?o=desc\&q=tj-actions+changed-files+language%3AYAML\&s=\&type=Code)
|
||||
|
||||
[](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
|
||||
[](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
|
||||
[](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idruns-on)
|
||||
[](https://www.codacy.com/gh/tj-actions/changed-files/dashboard?utm_source=github.com\&utm_medium=referral\&utm_content=tj-actions/changed-files\&utm_campaign=Badge_Grade)
|
||||
[](https://github.com/tj-actions/changed-files/actions/workflows/test.yml)
|
||||
[](https://github.com/tj-actions/changed-files/actions/workflows/sync-release-version.yml)
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||
|
||||
[](#contributors-)
|
||||
[](#contributors-)
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||
|
||||
## changed-files
|
||||
|
||||
Retrieve all changed files relative to the default branch (`pull_request*` based events) or a previous commit (`push` based event) returning the **absolute path** to all changed files from the project root.
|
||||
Retrieve all changed files and directories relative to the target branch or the last remote commit returning a **relative path** from the project root.
|
||||
|
||||
## Features
|
||||
|
||||
* Fast execution (0-2 seconds on average).
|
||||
* Fast execution (0-10 seconds on average).
|
||||
* Easy to debug.
|
||||
* Boolean output indicating that certain files have been modified.
|
||||
* Multiple repositories.
|
||||
* Self hosted runners.
|
||||
* GitHub Enterprise Server.
|
||||
* Supports all platforms.
|
||||
* List all files that have changed.
|
||||
* Between the current pull request branch and the default branch.
|
||||
* Scales to large repositories.
|
||||
* Supports Git submodules.
|
||||
* Escaped JSON output which can be used to run matrix jobs based on changed files.
|
||||
* List changed directories.
|
||||
* Restrict the max depth of changed directories.
|
||||
* Write outputs to files at a specified location for further processing.
|
||||
* Monorepos (Fetches a fixed number of commits).
|
||||
* Supports all platforms (Linux, MacOS, Windows).
|
||||
* [GitHub-hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners) support
|
||||
* [GitHub Enterprise Server](https://docs.github.com/en/enterprise-server@3.3/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-github-actions-for-github-enterprise-server) support.
|
||||
* [self-hosted runners](https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners) support.
|
||||
* List all files and directories that have changed:
|
||||
* Between the current pull request branch and the last commit on the target branch.
|
||||
* Between the last commit and the current pushed change.
|
||||
* Between the last remote branch commit and the current HEAD.
|
||||
* Restrict change detection to a subset of files.
|
||||
* Report on files that have at least one change.
|
||||
* [Regex pattern](https://www.gnu.org/software/grep/manual/grep.html#Regular-Expressions) matching on a subset of files.
|
||||
* Restrict change detection to a subset of files and directories:
|
||||
* Boolean output indicating that certain files have been changed.
|
||||
* Using [Glob pattern](https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet) matching.
|
||||
* Brace expansion.
|
||||
|
||||
## Usage
|
||||
|
||||
> NOTE: :warning:
|
||||
>
|
||||
> * **IMPORTANT:** For `push` events you need to include `fetch-depth: 0` **OR** `fetch-depth: 2` depending on your use case.
|
||||
> * When using `persist-credentials: false` with `actions/checkout@v2` you'll need to specify a `token` using the `token` input.
|
||||
> * For monorepos where pulling all the branch history might not be desired, you can omit `fetch-depth` for `pull_request` events.
|
||||
> * For files located in a sub-directory ensure that the pattern specified contains `**/` (globstar) to match any preceding directories or explicitly pass the full path relative to the project root. See: [#314](https://github.com/tj-actions/changed-files/issues/314).
|
||||
> * All multiline inputs should not use double or single quotes since the value is already a string seperated by a newline character. See [Examples](#examples) for more information.
|
||||
> * Ensure that `persist-credentials` is set to `true` when configuring `actions/checkout` if `fetch-depth` isn't set to `0`.
|
||||
|
||||
```yaml
|
||||
name: CI
|
||||
@@ -54,235 +67,643 @@ jobs:
|
||||
runs-on: ubuntu-latest # windows-latest | macos-latest
|
||||
name: Test changed-files
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.
|
||||
|
||||
# Example 1
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
uses: tj-actions/changed-files@v35
|
||||
# -------------------------------------------------------------------------------------------------------------------------
|
||||
# Event `push`: Compare the preceeding commit -> to the current commit of the main branch.
|
||||
# Event `pull_request`: Compare the last commit of main -> to the current commit of a Pull Request branch.
|
||||
# -------------------------------------------------------------------------------------------------------------------------
|
||||
# To compare changes between the current commit and the last pushed remote commit set `since_last_remote_commit: true`. e.g
|
||||
# with:
|
||||
# since_last_remote_commit: true
|
||||
|
||||
- name: List all modified files
|
||||
- name: List all changed files
|
||||
run: |
|
||||
for file in ${{ steps.changed-files.outputs.all_modified_files }}; do
|
||||
echo "$file was modified"
|
||||
done
|
||||
```
|
||||
|
||||
## Outputs
|
||||
|
||||
| Acronym | Meaning |
|
||||
|:---------:|:------------:|
|
||||
| A | Added |
|
||||
| C | Copied |
|
||||
| M | Modified |
|
||||
| D | Deleted |
|
||||
| R | Renamed |
|
||||
| T | Type changed |
|
||||
| U | Unmerged |
|
||||
| X | Unknown |
|
||||
|
||||
| Output | type | example | description |
|
||||
|:--------------------:|:------------:|:----------------------------------:|:----------------------------------------:|
|
||||
| any\_changed | `string` | `true` OR `false` | Returns `true` when any <br /> of the filenames provided using <br /> the `files` input has changed. <br /> i.e. *using a combination of all added, <br />copied, modified and renamed files (ACMR)* |
|
||||
| only\_changed | `string` | `true` OR `false` | Returns `true` when only <br /> files provided using <br /> the `files` input have changed. (ACMR) |
|
||||
| other\_changed\_files | `string` | `'new.txt path/to/file.png ...'` | Select all other changed files <br/> not listed in the files input <br /> i.e. *a combination of all added, <br /> copied and modified files (ACMR)* |
|
||||
| any\_deleted | `string` | `true` OR `false` | Returns `true` when any <br /> of the filenames provided using <br /> the `files` input has been deleted. (D) |
|
||||
| only\_deleted | `string` | `true` OR `false` | Returns `true` when only <br /> files provided using <br /> the `files` input has been deleted. (D) |
|
||||
| other\_deleted\_files | `string` | `'new.txt path/to/file.png ...'` | Select all other deleted files <br/> not listed in the files input <br /> i.e. *a combination of all deleted files (D)* |
|
||||
| all\_modified\_files | `string` | `'new.txt path/to/file.png ...'` | Select all modified files <br /> i.e. *a combination of all added, <br />copied, modified and renamed files (ACMR)* |
|
||||
| all\_changed\_and\_modified\_files | `string` | `'new.txt path/to/file.png ...'` | Select all changed <br /> and modified files <br /> i.e. *a combination of (ACMRDTUX)* |
|
||||
| added\_files | `string` | `'new.txt path/to/file.png ...'` | Select only files that are Added (A) |
|
||||
| copied\_files | `string` | `'new.txt path/to/file.png ...'` | Select only files that are Copied (C) |
|
||||
| deleted\_files | `string` | `'new.txt path/to/file.png ...'` | Select only files that are Deleted (D) |
|
||||
| modified\_files | `string` | `'new.txt path/to/file.png ...'` | Select only files that are Modified (M) |
|
||||
| renamed\_files | `string` | `'new.txt path/to/file.png ...'` | Select only files that are Renamed (R) |
|
||||
| type\_changed\_files | `string` | `'new.txt path/to/file.png ...'` | Select only files that have their file type changed (T) |
|
||||
| unmerged\_files | `string` | `'new.txt path/to/file.png ...'` | Select only files that are Unmerged (U) |
|
||||
| unknown\_files | `string` | `'new.txt path/to/file.png ...'` | Select only files that are Unknown (X) |
|
||||
|
||||
## Inputs
|
||||
|
||||
| Input | type | required | default | description |
|
||||
|:-------------:|:-----------:|:-------------:|:-----------------------------:|:-------------:|
|
||||
| token | `string` | `false` | `${{ github.token }}` | [GITHUB\_TOKEN](https://docs.github.com/en/free-pro-team@latest/actions/reference/authentication-in-a-workflow#using-the-github_token-in-a-workflow) <br /> or a repo scoped <br /> [Personal Access Token](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token) |
|
||||
| separator | `string` | `true` | `' '` | Output string separator |
|
||||
| files | `string` OR `string[]` | `false` | | Check for changes <br> using only these <br> list of file(s) <br> (Defaults to the <br> entire repo) |
|
||||
| base\_sha | `string` | `false` | | Specify a different <br> base commit SHA <br> used for <br> comparing changes |
|
||||
| sha | `string` | `true` | `${{ github.sha }}` | Specify a different <br> commit SHA <br> used for <br> comparing changes |
|
||||
| files\_from\_source\_file | `string` | `false` | | Source file <br> used to populate <br> the files input |
|
||||
| path | `string` | `false` | | Relative path under <br> `GITHUB_WORKSPACE` <br> to the repository |
|
||||
| since\_last\_remote\_commit | `string` | `false` | `false` | Use the last commit on the remote <br> branch as the `base_sha`.<br> (Defaults to the previous commit). <br /> NOTE: This requires <br /> `fetch-depth: 0`|
|
||||
|
||||
## Example
|
||||
|
||||
```yaml
|
||||
...
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Get changed files using defaults
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
|
||||
- name: Get changed files using a comma separator
|
||||
id: changed-files-comma
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
with:
|
||||
separator: ","
|
||||
|
||||
- name: List all added files
|
||||
run: |
|
||||
for file in ${{ steps.changed-files.outputs.added_files }}; do
|
||||
echo "$file was added"
|
||||
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
||||
echo "$file was changed"
|
||||
done
|
||||
|
||||
- name: Run step when a file changes
|
||||
if: contains(steps.changed-files.outputs.modified_files, 'my-file.txt')
|
||||
run: |
|
||||
echo "Your my-file.txt file has been modified."
|
||||
|
||||
- name: Run step when a file has been deleted
|
||||
if: contains(steps.changed-files.outputs.deleted_files, 'test.txt')
|
||||
run: |
|
||||
echo "Your test.txt file has been deleted."
|
||||
|
||||
- name: Get specific changed files
|
||||
# Example 2
|
||||
- name: Get changed files in the docs folder
|
||||
id: changed-files-specific
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
files: |
|
||||
my-file.txt
|
||||
test.txt
|
||||
new.txt
|
||||
test_directory
|
||||
\.sh$
|
||||
.(png|jpeg)$
|
||||
.(sql|py)$
|
||||
^(mynewfile|custom)
|
||||
files: docs/*.{js,html} # Alternatively using: `docs/**` or `docs`
|
||||
|
||||
- name: Run step if any of the listed files above change
|
||||
- name: Run step if any file(s) in the docs folder change
|
||||
if: steps.changed-files-specific.outputs.any_changed == 'true'
|
||||
run: |
|
||||
echo "One or more files listed above has changed."
|
||||
|
||||
- name: Run step if only the files listed above change
|
||||
if: steps.changed-files-specific.outputs.only_changed == 'true'
|
||||
run: |
|
||||
echo "Only files listed above have changed."
|
||||
|
||||
- name: Run step if any of the listed files above is deleted
|
||||
if: steps.changed-files.outputs.any_deleted == "true"
|
||||
run: |
|
||||
for file in ${{ steps.changed-files.outputs.deleted_files }}; do
|
||||
echo "$file was deleted"
|
||||
done
|
||||
|
||||
- name: Run step if all listed files above have been deleted
|
||||
if: steps.changed-files.outputs.only_deleted == "true"
|
||||
run: |
|
||||
for file in ${{ steps.changed-files.outputs.deleted_files }}; do
|
||||
echo "$file was deleted"
|
||||
done
|
||||
|
||||
- name: Use a source file or list of file(s) to populate to files input.
|
||||
id: changed-files-specific-source-file
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
echo "One or more files in the docs folder has changed."
|
||||
echo "List all the files that have changed: ${{ steps.changed-files-specific.outputs.all_changed_files }}"
|
||||
|
||||
# Example 3
|
||||
- name: Get changed js files excluding the docs folder
|
||||
id: changed-files-excluded
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
files_from_source_file: |
|
||||
test/changed-files-list.txt
|
||||
|
||||
- name: Use a source file or list of file(s) to populate to files input and optionally specify more files.
|
||||
id: changed-files-specific-source-file-and-specify-files
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
with:
|
||||
files_from_source_file: |
|
||||
test/changed-files-list.txt
|
||||
files: |
|
||||
test.txt
|
||||
**/*.js
|
||||
files_ignore: docs/** # Alternatively using: `docs`
|
||||
|
||||
- name: Use a different commit SHA
|
||||
id: changed-files-custom-sha
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
with:
|
||||
sha: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
- name: Use a different base SHA
|
||||
id: changed-files-custom-base-sha
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
with:
|
||||
base_sha: "2096ed0"
|
||||
|
||||
- name: Checkout into dir1
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
path: dir1
|
||||
|
||||
- name: Run changed-files with defaults on the dir1
|
||||
id: changed-files-for-dir1
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
with:
|
||||
path: dir1
|
||||
|
||||
- name: List all added files in dir1
|
||||
- name: Run step if any other js file(s) change
|
||||
if: steps.changed-files-excluded.outputs.any_changed == 'true'
|
||||
run: |
|
||||
for file in ${{ steps.changed-files-for-dir1.outputs.added_files }}; do
|
||||
echo "$file was added"
|
||||
done
|
||||
|
||||
- name: Run changed-files using the last commit on the remote branch
|
||||
id: changed-files-since-last-remote-commit
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
with:
|
||||
since_last_remote_commit: 'true'
|
||||
|
||||
echo "One or more js files not in the doc folder has changed."
|
||||
echo "List all the files that have changed: ${{ steps.changed-files-excluded.outputs.all_changed_files }}"
|
||||
```
|
||||
|
||||
### Running [pre-commit](https://pre-commit.com/) on all modified files
|
||||
|
||||
```yaml
|
||||
...
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v11.5
|
||||
|
||||
- name: Pre-commit
|
||||
uses: pre-commit/action@v2.0.0
|
||||
with:
|
||||
extra_args: -v --hook-stage push --files ${{ steps.changed-files.outputs.all_modified_files }}
|
||||
token: ${{ secrets.github_token }}
|
||||
```
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
* Free software: [MIT license](LICENSE)
|
||||
|
||||
If you feel generous and want to show some extra appreciation:
|
||||
|
||||
Support me with a :star:
|
||||
Support this project with a :star:
|
||||
|
||||
[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
|
||||
|
||||
[buymeacoffee]: https://www.buymeacoffee.com/jackton1
|
||||
|
||||
[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png
|
||||
|
||||
## Useful Acronyms
|
||||
|
||||
| Acronym | Meaning |
|
||||
|:---------:|:------------:|
|
||||
| A | Added |
|
||||
| C | Copied |
|
||||
| M | Modified |
|
||||
| D | Deleted |
|
||||
| R | Renamed |
|
||||
| T | Type changed |
|
||||
| U | Unmerged |
|
||||
| X | Unknown |
|
||||
|
||||
## Outputs
|
||||
|
||||
<!-- AUTO-DOC-OUTPUT:START - Do not remove or modify this section -->
|
||||
|
||||
| OUTPUT | TYPE | DESCRIPTION |
|
||||
|--------------------------------|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| added\_files | string | Returns only files that are Added<br>(A). |
|
||||
| all\_changed\_and\_modified\_files | string | Returns all changed and modified files<br>i.e. *a combination of (ACMRDTUX)* |
|
||||
| all\_changed\_files | string | Returns all changed files i.e. *a<br> combination of all added, copied, modified<br>and renamed files (ACMR)* |
|
||||
| all\_modified\_files | string | Returns all changed files i.e. *a<br> combination of all added, copied, modified,<br>renamed and deleted files (ACMRD)*. |
|
||||
| all\_old\_new\_renamed\_files | string | Returns only files that are Renamed<br> and list their old and new<br> names. **NOTE:** This requires setting `include_all_old_new_renamed_files`<br>to `true` (R) |
|
||||
| any\_changed | string | Returns `true` when any of the<br> filenames provided using the `files` input<br> has changed. If no `files` have<br> been specified,an empty string `''` is<br> returned. i.e. *using a combination of<br> all added, copied, modified and renamed<br>files (ACMR)*. |
|
||||
| any\_deleted | string | Returns `true` when any of the<br> filenames provided using the `files` input<br> has been deleted. If no `files`<br> have been specified,an empty string `''`<br>is returned. (D) |
|
||||
| any\_modified | string | Returns `true` when any of the<br> filenames provided using the `files` input<br> has been modified. If no `files`<br> have been specified,an empty string `''`<br> is returned. i.e. *using a combination<br> of all added, copied, modified, renamed,<br>and deleted files (ACMRD)*. |
|
||||
| copied\_files | string | Returns only files that are Copied<br>(C). |
|
||||
| deleted\_files | string | Returns only files that are Deleted<br>(D). |
|
||||
| modified\_files | string | Returns only files that are Modified<br>(M). |
|
||||
| only\_changed | string | Returns `true` when only files provided<br> using the `files` input has changed.<br> If no `files` have been specified,an<br> empty string `''` is returned. i.e.<br> *using a combination of all added,<br>copied, modified and renamed files (ACMR)*. |
|
||||
| only\_deleted | string | Returns `true` when only files provided<br> using the `files` input has been<br> deleted. If no `files` have been<br> specified,an empty string `''` is returned.<br>(D) |
|
||||
| only\_modified | string | Returns `true` when only files provided<br> using the `files` input has been<br> modified. If no `files` have been<br>specified,an empty string `''` is returned.(ACMRD). |
|
||||
| other\_changed\_files | string | Returns all other changed files not<br> listed in the files input i.e.<br> *using a combination of all added,<br>copied, modified and renamed files (ACMR)*. |
|
||||
| other\_deleted\_files | string | Returns all other deleted files not<br> listed in the files input i.e.<br> *a combination of all deleted files<br>(D)* |
|
||||
| other\_modified\_files | string | Returns all other modified files not<br> listed in the files input i.e.<br> *a combination of all added, copied,<br>modified, and deleted files (ACMRD)* |
|
||||
| renamed\_files | string | Returns only files that are Renamed<br>(R). |
|
||||
| type\_changed\_files | string | Returns only files that have their<br>file type changed (T). |
|
||||
| unknown\_files | string | Returns only files that are Unknown<br>(X). |
|
||||
| unmerged\_files | string | Returns only files that are Unmerged<br>(U). |
|
||||
|
||||
<!-- AUTO-DOC-OUTPUT:END -->
|
||||
|
||||
## Inputs
|
||||
|
||||
<!-- AUTO-DOC-INPUT:START - Do not remove or modify this section -->
|
||||
|
||||
| INPUT | TYPE | REQUIRED | DEFAULT | DESCRIPTION |
|
||||
|-----------------------------------|--------|----------|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| base\_sha | string | false | | Specify a different base commit SHA<br>used for comparing changes |
|
||||
| diff\_relative | string | false | | Exclude changes outside the current directory<br> and show path names relative to<br> it. **NOTE:** This requires you to<br> specify the top level directory via<br>the `path` input. |
|
||||
| dir\_names | string | false | `"false"` | Output unique changed directories instead of<br> filenames. **NOTE:** This returns `.` for<br> changed files located in the root<br>of the project. |
|
||||
| dir\_names\_exclude\_root | string | false | `"false"` | Exclude the root directory represented by<br> `.` from the output when `dir_names`is<br>set to `true`. |
|
||||
| dir\_names\_max\_depth | string | false | | Maximum depth of directories to output.<br> e.g `test/test1/test2` with max depth of<br>`2` returns `test/test1`. |
|
||||
| fetch\_depth | string | false | `"50"` | Depth of additional branch history fetched.<br> **NOTE**: This can be adjusted to<br>resolve errors with insufficient history. |
|
||||
| files | string | false | | File and directory patterns to detect<br> changes using only these list of<br> file(s) (Defaults to the entire repo)<br> **NOTE:** Multiline file/directory patterns should not<br>include quotes. |
|
||||
| files\_from\_source\_file | string | false | | Source file(s) used to populate the<br>`files` input. |
|
||||
| files\_ignore | string | false | | Ignore changes to these file(s) **NOTE:**<br> Multiline file/directory patterns should not include<br>quotes. |
|
||||
| files\_ignore\_from\_source\_file | string | false | | Source file(s) used to populate the<br>`files_ignore` input |
|
||||
| files\_ignore\_separator | string | false | `"\n"` | Separator used to split the `files_ignore`<br>input |
|
||||
| files\_separator | string | false | `"\n"` | Separator used to split the `files`<br>input |
|
||||
| include\_all\_old\_new\_renamed\_files | string | false | `"false"` | Include `all_old_new_renamed_files` output. Note this can<br>generate a large output See: [#501](https://github.com/tj-actions/changed-files/issues/501). |
|
||||
| json | string | false | `"false"` | Output list of changed files in<br> a JSON formatted string which can<br>be used for matrix jobs. |
|
||||
| json\_raw\_format | string | false | `"false"` | Output list of changed files in<br> [jq](https://devdocs.io/jq/) raw output format which means that the output will not be<br> surrounded by quotes and special characters<br>will not be escaped. |
|
||||
| match\_directories | string | false | `"true"` | Indicates whether to include match directories |
|
||||
| old\_new\_files\_separator | string | false | `" "` | Split character for old and new<br>renamed filename pairs. |
|
||||
| old\_new\_separator | string | false | `","` | Split character for old and new<br>filename pairs. |
|
||||
| output\_dir | string | false | `".github/outputs"` | Directory to store output files. |
|
||||
| path | string | false | `"."` | Specify a relative path under `$GITHUB_WORKSPACE`<br>to locate the repository. |
|
||||
| quotepath | string | false | `"true"` | Use non ascii characters to match<br> files and output the filenames completely<br>verbatim by setting this to `false` |
|
||||
| separator | string | false | `" "` | Split character for output strings |
|
||||
| sha | string | false | | Specify a different commit SHA used<br>for comparing changes |
|
||||
| since | string | false | | Get changed files for commits whose<br> timestamp is older than the given<br>time. |
|
||||
| since\_last\_remote\_commit | string | false | `"false"` | Use the last commit on the<br> remote branch as the `base_sha`. Defaults<br> to the last non merge commit<br> on the target branch for pull<br> request events and the previous remote<br> commit of the current branch for<br>push events. |
|
||||
| until | string | false | | Get changed files for commits whose<br> timestamp is earlier than the given<br>time. |
|
||||
| write\_output\_files | string | false | `"false"` | Write outputs to files in the<br>`.github/outputs` folder by default. |
|
||||
|
||||
<!-- AUTO-DOC-INPUT:END -->
|
||||
|
||||
## Examples
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files in the current branch</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v35
|
||||
...
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files and using a comma separator</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get all changed files and use a comma separator in the output
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
separator: ","
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary> Get all changed files and list all added files</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v35
|
||||
|
||||
- name: List all added files
|
||||
run: |
|
||||
for file in ${{ steps.changed-files.outputs.added_files }}; do
|
||||
echo "$file was added"
|
||||
done
|
||||
...
|
||||
```
|
||||
|
||||
See [outputs](#outputs) for a list of all available outputs.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files and optionally run a step if a file was modified</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v35
|
||||
|
||||
- name: Run a step if my-file.txt was modified
|
||||
if: contains(steps.changed-files.outputs.modified_files, 'my-file.txt')
|
||||
run: |
|
||||
echo "my-file.txt file has been modified."
|
||||
...
|
||||
```
|
||||
|
||||
See [outputs](#outputs) for a list of all available outputs.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files using a list of files</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
files: |
|
||||
my-file.txt
|
||||
*.sh
|
||||
*.png
|
||||
!*.md
|
||||
test_directory
|
||||
**/*.sql
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files using a list of files and take action based on the changes</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get changed files
|
||||
id: changed-files-specific
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
files: |
|
||||
my-file.txt
|
||||
*.sh
|
||||
*.png
|
||||
!*.md
|
||||
test_directory
|
||||
**/*.sql
|
||||
|
||||
- name: Run step if any of the listed files above change
|
||||
if: steps.changed-files-specific.outputs.any_changed == 'true'
|
||||
run: |
|
||||
echo "One or more files listed above has changed."
|
||||
|
||||
- name: Run step if only the files listed above change
|
||||
if: steps.changed-files-specific.outputs.only_changed == 'true'
|
||||
run: |
|
||||
echo "Only files listed above have changed."
|
||||
|
||||
- name: Run step if any of the listed files above is deleted
|
||||
if: steps.changed-files-specific.outputs.any_deleted == 'true'
|
||||
run: |
|
||||
for file in ${{ steps.changed-files-specific.outputs.deleted_files }}; do
|
||||
echo "$file was deleted"
|
||||
done
|
||||
|
||||
- name: Run step if all listed files above have been deleted
|
||||
if: steps.changed-files-specific.outputs.only_deleted == 'true'
|
||||
run: |
|
||||
for file in ${{ steps.changed-files-specific.outputs.deleted_files }}; do
|
||||
echo "$file was deleted"
|
||||
done
|
||||
...
|
||||
```
|
||||
|
||||
See [outputs](#outputs) for a list of all available outputs.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files using a source file or list of file(s) to populate to files input</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get changed files using a source file or list of file(s) to populate to files input.
|
||||
id: changed-files-specific-source-file
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
files_from_source_file: test/changed-files-list.txt
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get changed files using a source file or list of file(s) to populate to files input and optionally specify more files</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get changed files using a source file or list of file(s) to populate to files input and optionally specify more files.
|
||||
id: changed-files-specific-source-file-and-specify-files
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
files_from_source_file: |
|
||||
test/changed-files-list.txt
|
||||
files: |
|
||||
test.txt
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Get all changed files using a different SHA</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get changed files using a different SHA
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
sha: ${{ github.event.pull_request.head.sha }}
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files using a different base SHA</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get changed files using a different base SHA
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
base_sha: ${{ github.event.pull_request.base.sha }}
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files between the previous tag and the current tag</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
jobs:
|
||||
release:
|
||||
name: Release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Get changed files
|
||||
id: changed-files
|
||||
uses: tj-actions/changed-files@v35
|
||||
|
||||
- name: Get changed files in the .github folder
|
||||
id: changed-files-specific
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
base_sha: ${{ steps.get-base-sha.outputs.base_sha }}
|
||||
files: .github/**
|
||||
|
||||
- name: Run step if any file(s) in the .github folder change
|
||||
if: steps.changed-files-specific.outputs.any_changed == 'true'
|
||||
run: |
|
||||
echo "One or more files in the .github folder has changed."
|
||||
echo "List all the files that have changed: ${{ steps.changed-files-specific.outputs.all_changed_files }}"
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files for a repository located in a different path</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Checkout into dir1
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
path: dir1
|
||||
|
||||
- name: Run changed-files with defaults in dir1
|
||||
id: changed-files-for-dir1
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
path: dir1
|
||||
|
||||
- name: List all added files in dir1
|
||||
run: |
|
||||
for file in ${{ steps.changed-files-for-dir1.outputs.added_files }}; do
|
||||
echo "$file was added"
|
||||
done
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files with non äšćįí characters i.e (Filename in other languages)</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Run changed-files with quotepath disabled
|
||||
id: changed-files-quotepath
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
quotepath: "false"
|
||||
|
||||
- name: Run changed-files with quotepath disabled for a specified list of file(s)
|
||||
id: changed-files-quotepath-specific
|
||||
uses: ./
|
||||
with:
|
||||
files: test/test-è.txt
|
||||
quotepath: "false"
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files using the last successful commit of the base branch</summary>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<details>
|
||||
<summary>Push event</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get branch name
|
||||
id: branch-name
|
||||
uses: tj-actions/branch-names@v6
|
||||
|
||||
- uses: nrwl/nx-set-shas@v3
|
||||
id: last_successful_commit_push
|
||||
with:
|
||||
main-branch-name: ${{ steps.branch-name.outputs.current_branch }} # Get the last successful commit for the current branch.
|
||||
workflow-id: 'test.yml'
|
||||
|
||||
- name: Run changed-files with the commit of the last successful test workflow run
|
||||
id: changed-files-base-sha-push
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
base_sha: ${{ steps.last_successful_commit_push.outputs.base }}
|
||||
...
|
||||
```
|
||||
|
||||
</details>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<details>
|
||||
<summary>Pull request events </summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get branch name
|
||||
id: branch-name
|
||||
uses: tj-actions/branch-names@v5
|
||||
|
||||
- uses: nrwl/nx-set-shas@v3
|
||||
id: last_successful_commit_pull_request
|
||||
with:
|
||||
main-branch-name: ${{ steps.branch-name.outputs.base_ref_branch }} # Get the last successful commit on master or main branch
|
||||
workflow_id: 'test.yml'
|
||||
|
||||
- name: Run changed-files with the commit of the last successful test workflow run on main
|
||||
id: changed-files-base-sha-pull-request
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
base_sha: ${{ steps.last_successful_commit_pull_request.outputs.base }}
|
||||
...
|
||||
```
|
||||
|
||||
</details>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
> NOTE: This setting overrides the commit sha used by setting `since_last_remote_commit` to true.
|
||||
> It is recommended to use either solution that works for your use case.
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files but only return the directory names</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Run changed-files with dir_names
|
||||
id: changed-files-dir-names
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
dir_names: "true"
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files and return JSON formatted outputs</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Run changed-files with json output
|
||||
id: changed-files-json
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
json: "true"
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Get all changed files by commits pushed in the past</summary>
|
||||
|
||||
```yaml
|
||||
...
|
||||
- name: Get changed-files since 2022-08-19
|
||||
id: changed-files-since
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
since: "2022-08-19"
|
||||
|
||||
- name: Get changed-files until 2022-08-20
|
||||
id: changed-files-until
|
||||
uses: tj-actions/changed-files@v35
|
||||
with:
|
||||
until: "2022-08-20"
|
||||
...
|
||||
```
|
||||
|
||||
See [inputs](#inputs) for more information.
|
||||
|
||||
</details>
|
||||
|
||||
### Real world example
|
||||
|
||||
<img width="1147" alt="Screen Shot 2021-11-19 at 4 59 21 PM" src="https://user-images.githubusercontent.com/17484350/142696936-8b7ca955-7ef9-4d53-9bdf-3e0008e90c3f.png">
|
||||
|
||||
* Free software: [MIT license](LICENSE)
|
||||
|
||||
## Known Limitation
|
||||
|
||||
> NOTE: :warning:
|
||||
>
|
||||
> * Spaces in file names can introduce bugs when using bash loops. See: [Issue #216](https://github.com/tj-actions/changed-files/issues/216)
|
||||
> * However, this action will handle spaces in file names, with a recommendation of using a separator to prevent hidden issues.
|
||||
> * Using characters like `\n`, `%`, `.` and `\r` as separators would be [URL encoded](https://www.w3schools.com/tags/ref_urlencode.asp)
|
||||
> * Spaces in file names can introduce bugs when using bash loops. See: [#216](https://github.com/tj-actions/changed-files/issues/216)
|
||||
> However, this action will handle spaces in file names, with a recommendation of using a separator to prevent hidden issues.
|
||||
> 
|
||||
|
||||
## Migration guide
|
||||
|
||||
With the switch from using grep's Extended regex to match files to the natively supported workflow glob pattern matching syntax introduced in [v13](https://github.com/tj-actions/changed-files/releases/tag/v13) you'll need to modify patterns used to match `files`.
|
||||
|
||||
**BEFORE**
|
||||
|
||||
```yml
|
||||
...
|
||||
|
||||
- name: Get specific changed files
|
||||
id: changed-files-specific
|
||||
uses: tj-actions/changed-files@v12.2
|
||||
with:
|
||||
files: |
|
||||
\.sh$
|
||||
.(sql|py)$
|
||||
^(mynewfile|custom)
|
||||
```
|
||||
|
||||
**AFTER**
|
||||
|
||||
```yml
|
||||
...
|
||||
|
||||
- name: Get specific changed files
|
||||
id: changed-files-specific
|
||||
uses: tj-actions/changed-files@v24
|
||||
with:
|
||||
files: |
|
||||
*.sh
|
||||
*.sql
|
||||
*.py
|
||||
mynewfile
|
||||
custom/**
|
||||
```
|
||||
|
||||
## Credits
|
||||
|
||||
This package was created with [Cookiecutter](https://github.com/cookiecutter/cookiecutter).
|
||||
|
||||
* [tj-actions/glob](https://github.com/tj-actions/glob)
|
||||
* [tj-actions/auto-doc](https://github.com/tj-actions/auto-doc)
|
||||
* [tj-actions/verify-changed-files](https://github.com/tj-actions/verify-changed-files)
|
||||
* [tj-actions/demo](https://github.com/tj-actions/demo)
|
||||
* [tj-actions/demo2](https://github.com/tj-actions/demo2)
|
||||
* [tj-actions/demo3](https://github.com/tj-actions/demo3)
|
||||
* [tj-actions/release-tagger](https://github.com/tj-actions/release-tagger)
|
||||
|
||||
## Report Bugs
|
||||
|
||||
Report bugs at https://github.com/tj-actions/changed-files/issues.
|
||||
@@ -290,7 +711,7 @@ Report bugs at https://github.com/tj-actions/changed-files/issues.
|
||||
If you are reporting a bug, please include:
|
||||
|
||||
* Your operating system name and version.
|
||||
* Any details about your workflow that might be helpful in troubleshooting.
|
||||
* Any details about your workflow that might be helpful in troubleshooting. (**NOTE**: Ensure that you include full log outputs with debugging enabled)
|
||||
* Detailed steps to reproduce the bug.
|
||||
|
||||
## Contributors ✨
|
||||
@@ -304,14 +725,33 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
||||
<!-- markdownlint-disable -->
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/jsoref"><img src="https://avatars.githubusercontent.com/u/2119212?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Josh Soref</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=jsoref" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/monoxgas"><img src="https://avatars.githubusercontent.com/u/1223016?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nick Landers</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=monoxgas" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/Kras4ooo"><img src="https://avatars.githubusercontent.com/u/1948054?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Krasimir Nikolov</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=Kras4ooo" title="Code">💻</a> <a href="https://github.com/tj-actions/changed-files/commits?author=Kras4ooo" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/IvanPizhenko"><img src="https://avatars.githubusercontent.com/u/11859904?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ivan Pizhenko</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=IvanPizhenko" title="Code">💻</a> <a href="https://github.com/tj-actions/changed-files/commits?author=IvanPizhenko" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/talva-tr"><img src="https://avatars.githubusercontent.com/u/82046981?v=4?s=100" width="100px;" alt=""/><br /><sub><b>talva-tr</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=talva-tr" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=eltociear" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/jsoref"><img src="https://avatars.githubusercontent.com/u/2119212?v=4?s=100" width="100px;" alt="Josh Soref"/><br /><sub><b>Josh Soref</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=jsoref" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/monoxgas"><img src="https://avatars.githubusercontent.com/u/1223016?v=4?s=100" width="100px;" alt="Nick Landers"/><br /><sub><b>Nick Landers</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=monoxgas" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/Kras4ooo"><img src="https://avatars.githubusercontent.com/u/1948054?v=4?s=100" width="100px;" alt="Krasimir Nikolov"/><br /><sub><b>Krasimir Nikolov</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=Kras4ooo" title="Code">💻</a> <a href="https://github.com/tj-actions/changed-files/commits?author=Kras4ooo" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/IvanPizhenko"><img src="https://avatars.githubusercontent.com/u/11859904?v=4?s=100" width="100px;" alt="Ivan Pizhenko"/><br /><sub><b>Ivan Pizhenko</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=IvanPizhenko" title="Code">💻</a> <a href="https://github.com/tj-actions/changed-files/commits?author=IvanPizhenko" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/talva-tr"><img src="https://avatars.githubusercontent.com/u/82046981?v=4?s=100" width="100px;" alt="talva-tr"/><br /><sub><b>talva-tr</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=talva-tr" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://bandism.net/"><img src="https://avatars.githubusercontent.com/u/22633385?v=4?s=100" width="100px;" alt="Ikko Ashimine"/><br /><sub><b>Ikko Ashimine</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=eltociear" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/Zamiell"><img src="https://avatars.githubusercontent.com/u/5511220?v=4?s=100" width="100px;" alt="James"/><br /><sub><b>James</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=Zamiell" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/wushujames"><img src="https://avatars.githubusercontent.com/u/677529?v=4?s=100" width="100px;" alt="James Cheng"/><br /><sub><b>James Cheng</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=wushujames" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://qiita.com/SUZUKI_Masaya"><img src="https://avatars.githubusercontent.com/u/15100604?v=4?s=100" width="100px;" alt="Masaya Suzuki"/><br /><sub><b>Masaya Suzuki</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=massongit" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://fagai.net"><img src="https://avatars.githubusercontent.com/u/1772112?v=4?s=100" width="100px;" alt="fagai"/><br /><sub><b>fagai</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=fagai" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/pkit"><img src="https://avatars.githubusercontent.com/u/805654?v=4?s=100" width="100px;" alt="Constantine Peresypkin"/><br /><sub><b>Constantine Peresypkin</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=pkit" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/deronnax"><img src="https://avatars.githubusercontent.com/u/439279?v=4?s=100" width="100px;" alt="Mathieu Dupuy"/><br /><sub><b>Mathieu Dupuy</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=deronnax" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/JoeOvo"><img src="https://avatars.githubusercontent.com/u/100686542?v=4?s=100" width="100px;" alt="Joe Moggridge"/><br /><sub><b>Joe Moggridge</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=JoeOvo" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://www.credly.com/users/thyarles/badges"><img src="https://avatars.githubusercontent.com/u/1340046?v=4?s=100" width="100px;" alt="Charles Santos"/><br /><sub><b>Charles Santos</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=thyarles" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><a href="https://github.com/kostiantyn-korniienko-aurea"><img src="https://avatars.githubusercontent.com/u/37180625?v=4?s=100" width="100px;" alt="Kostiantyn Korniienko"/><br /><sub><b>Kostiantyn Korniienko</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=kostiantyn-korniienko-aurea" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/lpulley"><img src="https://avatars.githubusercontent.com/u/7193187?v=4?s=100" width="100px;" alt="Logan Pulley"/><br /><sub><b>Logan Pulley</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=lpulley" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://www.linkedin.com/in/kenji-miyake/"><img src="https://avatars.githubusercontent.com/u/31987104?v=4?s=100" width="100px;" alt="Kenji Miyake"/><br /><sub><b>Kenji Miyake</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=kenji-miyake" title="Code">💻</a></td>
|
||||
<td align="center"><a href="https://github.com/adonisgarciac"><img src="https://avatars.githubusercontent.com/u/71078987?v=4?s=100" width="100px;" alt="adonisgarciac"/><br /><sub><b>adonisgarciac</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=adonisgarciac" title="Code">💻</a> <a href="https://github.com/tj-actions/changed-files/commits?author=adonisgarciac" title="Documentation">📖</a></td>
|
||||
<td align="center"><a href="https://github.com/cfernhout"><img src="https://avatars.githubusercontent.com/u/22294606?v=4?s=100" width="100px;" alt="Chiel Fernhout"/><br /><sub><b>Chiel Fernhout</b></sub></a><br /><a href="https://github.com/tj-actions/changed-files/commits?author=cfernhout" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
@@ -321,7 +761,3 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
|
||||
|
||||
[buymeacoffee]: https://www.buymeacoffee.com/jackton1
|
||||
|
||||
[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png
|
||||
|
||||
284
action.yml
284
action.yml
@@ -1,123 +1,289 @@
|
||||
name: Changed files
|
||||
description: Get all changed files for push and pull request events.
|
||||
name: Changed Files
|
||||
description: Get all Added, Copied, Modified, Deleted, Renamed, Type changed, Unmerged, Unknown files.
|
||||
author: tj-actions
|
||||
|
||||
inputs:
|
||||
token:
|
||||
description: 'Github token'
|
||||
required: true
|
||||
default: ${{ github.token }}
|
||||
separator:
|
||||
description: 'Split character for array output'
|
||||
required: true
|
||||
description: "Split character for output strings"
|
||||
required: false
|
||||
default: " "
|
||||
include_all_old_new_renamed_files:
|
||||
description: "Include `all_old_new_renamed_files` output. Note this can generate a large output See: [#501](https://github.com/tj-actions/changed-files/issues/501)."
|
||||
required: false
|
||||
default: "false"
|
||||
old_new_separator:
|
||||
description: "Split character for old and new filename pairs."
|
||||
required: false
|
||||
default: ","
|
||||
old_new_files_separator:
|
||||
description: "Split character for old and new renamed filename pairs."
|
||||
required: false
|
||||
default: " "
|
||||
files_from_source_file:
|
||||
description: 'Source file to populate the files input'
|
||||
description: "Source file(s) used to populate the `files` input."
|
||||
required: false
|
||||
default: ""
|
||||
files:
|
||||
description: 'Check for changes using only this list of files (Defaults to the entire repo)'
|
||||
description: "File and directory patterns to detect changes using only these list of file(s) (Defaults to the entire repo) **NOTE:** Multiline file/directory patterns should not include quotes."
|
||||
required: false
|
||||
default: ""
|
||||
files_separator:
|
||||
description: "Separator used to split the `files` input"
|
||||
default: "\n"
|
||||
required: false
|
||||
files_ignore:
|
||||
description: "Ignore changes to these file(s) **NOTE:** Multiline file/directory patterns should not include quotes."
|
||||
required: false
|
||||
default: ""
|
||||
files_ignore_separator:
|
||||
description: "Separator used to split the `files_ignore` input"
|
||||
default: "\n"
|
||||
required: false
|
||||
files_ignore_from_source_file:
|
||||
description: "Source file(s) used to populate the `files_ignore` input"
|
||||
required: false
|
||||
default: ""
|
||||
sha:
|
||||
description: 'Specify a current commit SHA used for comparing changes'
|
||||
required: true
|
||||
default: ${{ github.sha }}
|
||||
description: "Specify a different commit SHA used for comparing changes"
|
||||
required: false
|
||||
base_sha:
|
||||
description: 'Specify a base commit SHA on used for comparing changes'
|
||||
description: "Specify a different base commit SHA used for comparing changes"
|
||||
required: false
|
||||
since_last_remote_commit:
|
||||
description: 'Use the last commit on the remote branch as the base_sha for push event.'
|
||||
since:
|
||||
description: "Get changed files for commits whose timestamp is older than the given time."
|
||||
required: false
|
||||
default: 'false'
|
||||
default: ""
|
||||
until:
|
||||
description: "Get changed files for commits whose timestamp is earlier than the given time."
|
||||
required: false
|
||||
default: ""
|
||||
path:
|
||||
description: 'Specify a relative path under $GITHUB_WORKSPACE to locate the repository'
|
||||
description: "Specify a relative path under `$GITHUB_WORKSPACE` to locate the repository."
|
||||
required: false
|
||||
default: "."
|
||||
quotepath:
|
||||
description: "Use non ascii characters to match files and output the filenames completely verbatim by setting this to `false`"
|
||||
default: "true"
|
||||
required: false
|
||||
diff_relative:
|
||||
description: "Exclude changes outside the current directory and show path names relative to it. **NOTE:** This requires you to specify the top level directory via the `path` input."
|
||||
required: false
|
||||
dir_names:
|
||||
default: "false"
|
||||
description: "Output unique changed directories instead of filenames. **NOTE:** This returns `.` for changed files located in the root of the project."
|
||||
required: false
|
||||
dir_names_max_depth:
|
||||
description: "Maximum depth of directories to output. e.g `test/test1/test2` with max depth of `2` returns `test/test1`."
|
||||
required: false
|
||||
dir_names_exclude_root:
|
||||
description: "Exclude the root directory represented by `.` from the output when `dir_names`is set to `true`."
|
||||
required: false
|
||||
default: "false"
|
||||
json:
|
||||
description: "Output list of changed files in a JSON formatted string which can be used for matrix jobs."
|
||||
required: false
|
||||
default: "false"
|
||||
json_raw_format:
|
||||
description: "Output list of changed files in [jq](https://devdocs.io/jq/) raw output format which means that the output will not be surrounded by quotes and special characters will not be escaped."
|
||||
required: false
|
||||
default: "false"
|
||||
fetch_depth:
|
||||
description: "Depth of additional branch history fetched. **NOTE**: This can be adjusted to resolve errors with insufficient history."
|
||||
required: false
|
||||
default: "50"
|
||||
since_last_remote_commit:
|
||||
description: "Use the last commit on the remote branch as the `base_sha`. Defaults to the last non merge commit on the target branch for pull request events and the previous remote commit of the current branch for push events."
|
||||
required: false
|
||||
default: "false"
|
||||
write_output_files:
|
||||
description: "Write outputs to files in the `.github/outputs` folder by default."
|
||||
required: false
|
||||
default: "false"
|
||||
output_dir:
|
||||
description: "Directory to store output files."
|
||||
required: false
|
||||
default: ".github/outputs"
|
||||
match_directories:
|
||||
description: "Indicates whether to include match directories"
|
||||
default: "true"
|
||||
required: false
|
||||
|
||||
outputs:
|
||||
added_files:
|
||||
description: List of added files.
|
||||
description: "Returns only files that are Added (A)."
|
||||
value: ${{ steps.changed-files.outputs.added_files }}
|
||||
copied_files:
|
||||
description: List of copied files.
|
||||
description: "Returns only files that are Copied (C)."
|
||||
value: ${{ steps.changed-files.outputs.copied_files }}
|
||||
deleted_files:
|
||||
description: List of deleted files.
|
||||
description: "Returns only files that are Deleted (D)."
|
||||
value: ${{ steps.changed-files.outputs.deleted_files }}
|
||||
modified_files:
|
||||
description: List of modified files.
|
||||
description: "Returns only files that are Modified (M)."
|
||||
value: ${{ steps.changed-files.outputs.modified_files }}
|
||||
renamed_files:
|
||||
description: List of renamed files.
|
||||
description: "Returns only files that are Renamed (R)."
|
||||
value: ${{ steps.changed-files.outputs.renamed_files }}
|
||||
all_old_new_renamed_files:
|
||||
description: "Returns only files that are Renamed and list their old and new names. **NOTE:** This requires setting `include_all_old_new_renamed_files` to `true` (R)"
|
||||
value: ${{ steps.changed-files.outputs.all_old_new_renamed_files }}
|
||||
type_changed_files:
|
||||
description: List of files that had type changes.
|
||||
description: "Returns only files that have their file type changed (T)."
|
||||
value: ${{ steps.changed-files.outputs.type_changed_files }}
|
||||
unmerged_files:
|
||||
description: List of unmerged files.
|
||||
description: "Returns only files that are Unmerged (U)."
|
||||
value: ${{ steps.changed-files.outputs.unmerged_files }}
|
||||
unknown_files:
|
||||
description: List of unknown files.
|
||||
description: "Returns only files that are Unknown (X)."
|
||||
value: ${{ steps.changed-files.outputs.unknown_files }}
|
||||
all_changed_and_modified_files:
|
||||
description: List of all changed files.
|
||||
description: "Returns all changed and modified files i.e. *a combination of (ACMRDTUX)*"
|
||||
value: ${{ steps.changed-files.outputs.all_changed_and_modified_files }}
|
||||
all_modified_files:
|
||||
description: List of all copied modified and added files.
|
||||
value: ${{ steps.changed-files.outputs.all_modified_files }}
|
||||
all_changed_files:
|
||||
description: "Returns all changed files i.e. *a combination of all added, copied, modified and renamed files (ACMR)*"
|
||||
value: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
any_changed:
|
||||
description: Return true only when any files provided using the files input have changed.
|
||||
description: "Returns `true` when any of the filenames provided using the `files` input has changed. If no `files` have been specified,an empty string `''` is returned. i.e. *using a combination of all added, copied, modified and renamed files (ACMR)*."
|
||||
value: ${{ steps.changed-files.outputs.any_changed }}
|
||||
only_changed:
|
||||
description: Return true when all files provided using the files input have changed.
|
||||
description: "Returns `true` when only files provided using the `files` input has changed. If no `files` have been specified,an empty string `''` is returned. i.e. *using a combination of all added, copied, modified and renamed files (ACMR)*."
|
||||
value: ${{ steps.changed-files.outputs.only_changed }}
|
||||
other_changed_files:
|
||||
description: Return list of changed files not listed in the files input.
|
||||
description: "Returns all other changed files not listed in the files input i.e. *using a combination of all added, copied, modified and renamed files (ACMR)*."
|
||||
value: ${{ steps.changed-files.outputs.other_changed_files }}
|
||||
all_modified_files:
|
||||
description: "Returns all changed files i.e. *a combination of all added, copied, modified, renamed and deleted files (ACMRD)*."
|
||||
value: ${{ steps.changed-files.outputs.all_modified_files }}
|
||||
any_modified:
|
||||
description: "Returns `true` when any of the filenames provided using the `files` input has been modified. If no `files` have been specified,an empty string `''` is returned. i.e. *using a combination of all added, copied, modified, renamed, and deleted files (ACMRD)*."
|
||||
value: ${{ steps.changed-files.outputs.any_modified }}
|
||||
only_modified:
|
||||
description: "Returns `true` when only files provided using the `files` input has been modified. If no `files` have been specified,an empty string `''` is returned.(ACMRD)."
|
||||
value: ${{ steps.changed-files.outputs.only_modified }}
|
||||
other_modified_files:
|
||||
description: "Returns all other modified files not listed in the files input i.e. *a combination of all added, copied, modified, and deleted files (ACMRD)*"
|
||||
value: ${{ steps.changed-files.outputs.other_modified_files }}
|
||||
any_deleted:
|
||||
description: Return true only when any files provided using the files input have been deleted.
|
||||
description: "Returns `true` when any of the filenames provided using the `files` input has been deleted. If no `files` have been specified,an empty string `''` is returned. (D)"
|
||||
value: ${{ steps.changed-files.outputs.any_deleted }}
|
||||
only_deleted:
|
||||
description: Return true when all files provided using the files input have been deleted.
|
||||
description: "Returns `true` when only files provided using the `files` input has been deleted. If no `files` have been specified,an empty string `''` is returned. (D)"
|
||||
value: ${{ steps.changed-files.outputs.only_deleted }}
|
||||
other_deleted_files:
|
||||
description: Return list of deleted files not listed in the files input.
|
||||
description: "Returns all other deleted files not listed in the files input i.e. *a combination of all deleted files (D)*"
|
||||
value: ${{ steps.changed-files.outputs.other_deleted_files }}
|
||||
|
||||
runs:
|
||||
using: 'composite'
|
||||
using: "composite"
|
||||
steps:
|
||||
- run: |
|
||||
bash $GITHUB_ACTION_PATH/sourcefiles.sh
|
||||
id: source-input-files
|
||||
shell: bash
|
||||
env:
|
||||
INPUT_FILES: ${{ inputs.files }}
|
||||
INPUT_FILES_FROM_SOURCE_FILE: ${{ inputs.files_from_source_file }}
|
||||
- run: |
|
||||
if [[ -n "${{ inputs.base_sha }}" ]]; then
|
||||
echo "::set-output name=base_sha::${{ inputs.base_sha }}"
|
||||
elif [[ "${{ inputs.since_last_remote_commit }}" == "true" ]]; then
|
||||
echo "::set-output name=base_sha::${{ github.event.before }}"
|
||||
fi
|
||||
id: base-sha
|
||||
shell: bash
|
||||
- run: |
|
||||
bash $GITHUB_ACTION_PATH/entrypoint.sh
|
||||
id: changed-files
|
||||
# "Calculating the previous and current SHA..."
|
||||
bash $GITHUB_ACTION_PATH/diff-sha.sh
|
||||
id: changed-files-diff-sha
|
||||
shell: bash
|
||||
env:
|
||||
GITHUB_SERVER_URL: ${{ github.server_url }}
|
||||
GITHUB_REPOSITORY: ${{ github.repository }}
|
||||
GITHUB_BASE_REF: ${{ github.base_ref }}
|
||||
GITHUB_REF: ${{ github.ref }}
|
||||
GITHUB_SHA: ${{ github.sha }}
|
||||
GITHUB_WORKSPACE: ${{ github.workspace }}
|
||||
GITHUB_EVENT_BASE_REF: ${{ github.event.base_ref }}
|
||||
GITHUB_EVENT_HEAD_REPO_FORK: ${{ github.event.pull_request.head.repo.fork }}
|
||||
GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
|
||||
GITHUB_EVENT_PULL_REQUEST_BASE_REF: ${{ github.event.pull_request.base.ref }}
|
||||
GITHUB_EVENT_PULL_REQUEST_HEAD_REF: ${{ github.event.pull_request.head.ref }}
|
||||
GITHUB_EVENT_PULL_REQUEST_BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
||||
GITHUB_EVENT_PULL_REQUEST_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
||||
GITHUB_EVENT_PULL_REQUEST_COMMITS: ${{ github.event.pull_request.commits }}
|
||||
GITHUB_EVENT_BEFORE: ${{ github.event.before }}
|
||||
GITHUB_EVENT_FORCED: ${{ github.event.forced }}
|
||||
GITHUB_REFNAME: ${{ github.ref_name }}
|
||||
# INPUT_<VARIABLE_NAME> is not available in Composite run steps
|
||||
# https://github.community/t/input-variable-name-is-not-available-in-composite-run-steps/127611
|
||||
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#example-specifying-inputs
|
||||
INPUT_SHA: ${{ inputs.sha }}
|
||||
INPUT_BASE_SHA: ${{ steps.base-sha.outputs.base_sha }}
|
||||
INPUT_TOKEN: ${{ inputs.token }}
|
||||
INPUT_FILES: ${{ steps.source-input-files.outputs.files }}
|
||||
INPUT_BASE_SHA: ${{ inputs.base_sha }}
|
||||
INPUT_SINCE: ${{ inputs.since }}
|
||||
INPUT_UNTIL: ${{ inputs.until }}
|
||||
INPUT_PATH: ${{ inputs.path }}
|
||||
INPUT_FETCH_DEPTH: ${{ inputs.fetch_depth }}
|
||||
INPUT_SINCE_LAST_REMOTE_COMMIT: ${{ inputs.since_last_remote_commit }}
|
||||
- name: Glob match
|
||||
uses: tj-actions/glob@v16
|
||||
id: glob
|
||||
with:
|
||||
files: ${{ inputs.files }}
|
||||
files-separator: ${{ inputs.files_separator }}
|
||||
excluded-files: ${{ inputs.files_ignore }}
|
||||
excluded-files-separator: ${{ inputs.files_ignore_separator }}
|
||||
files-from-source-file: ${{ inputs.files_from_source_file }}
|
||||
excluded-files-from-source-file: ${{ inputs.files_ignore_from_source_file}}
|
||||
escape-paths: true
|
||||
working-directory: ${{ inputs.path }}
|
||||
base-sha: ${{ steps.changed-files-diff-sha.outputs.previous_sha }}
|
||||
sha: ${{ steps.changed-files-diff-sha.outputs.current_sha }}
|
||||
diff: ${{ steps.changed-files-diff-sha.outputs.diff }}
|
||||
match-directories: ${{ inputs.match_directories }}
|
||||
include-deleted-files: true
|
||||
separator: "|"
|
||||
- run: |
|
||||
bash $GITHUB_ACTION_PATH/get-changed-paths.sh
|
||||
id: changed-files
|
||||
shell: bash
|
||||
env:
|
||||
GITHUB_WORKSPACE: ${{ github.workspace }}
|
||||
GITHUB_EVENT_PULL_REQUEST_BASE_REF: ${{ github.event.pull_request.base.ref }}
|
||||
GITHUB_EVENT_PULL_REQUEST_HEAD_REPO_FORK: ${{ github.event.pull_request.head.repo.fork }}
|
||||
# INPUT_<VARIABLE_NAME> is not available in Composite run steps
|
||||
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions#example-specifying-inputs
|
||||
INPUT_FILES_PATTERN_FILE: ${{ steps.glob.outputs.paths-output-file }}
|
||||
INPUT_SEPARATOR: ${{ inputs.separator }}
|
||||
INPUT_PATH: ${{ inputs.path }}
|
||||
INPUT_PREVIOUS_SHA: ${{ steps.changed-files-diff-sha.outputs.previous_sha }}
|
||||
INPUT_CURRENT_SHA: ${{ steps.changed-files-diff-sha.outputs.current_sha }}
|
||||
INPUT_TARGET_BRANCH: ${{ steps.changed-files-diff-sha.outputs.target_branch }}
|
||||
INPUT_CURRENT_BRANCH: ${{ steps.changed-files-diff-sha.outputs.current_branch }}
|
||||
INPUT_DIFF: ${{ steps.changed-files-diff-sha.outputs.diff }}
|
||||
INPUT_QUOTEPATH: ${{ inputs.quotepath }}
|
||||
INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES: ${{ inputs.include_all_old_new_renamed_files }}
|
||||
INPUT_OLD_NEW_SEPARATOR: ${{ inputs.old_new_separator }}
|
||||
INPUT_OLD_NEW_FILES_SEPARATOR: ${{ inputs.old_new_files_separator }}
|
||||
INPUT_DIFF_RELATIVE: ${{ inputs.diff_relative }}
|
||||
INPUT_DIR_NAMES: ${{ inputs.dir_names }}
|
||||
INPUT_DIR_NAMES_MAX_DEPTH: ${{ inputs.dir_names_max_depth }}
|
||||
INPUT_DIR_NAMES_EXCLUDE_ROOT: ${{ inputs.dir_names_exclude_root }}
|
||||
INPUT_JSON: ${{ inputs.json }}
|
||||
INPUT_HAS_CUSTOM_PATTERNS: ${{ steps.glob.outputs.has-custom-patterns }}
|
||||
INPUT_JSON_RAW_FORMAT: ${{ inputs.json_raw_format }}
|
||||
- name: Generate output files
|
||||
uses: tj-actions/json2file@v1
|
||||
if: inputs.write_output_files == 'true'
|
||||
with:
|
||||
outputs: ${{ toJSON(steps.changed-files.outputs) }}
|
||||
directory: ${{ inputs.output_dir }}
|
||||
skip_missing_keys: true
|
||||
keys: |
|
||||
added_files
|
||||
copied_files
|
||||
deleted_files
|
||||
modified_files
|
||||
renamed_files
|
||||
all_old_new_renamed_files
|
||||
type_changed_files
|
||||
unmerged_files
|
||||
unknown_files
|
||||
all_changed_and_modified_files
|
||||
all_changed_files
|
||||
any_changed
|
||||
only_changed
|
||||
other_changed_files
|
||||
all_modified_files
|
||||
any_modified
|
||||
only_modified
|
||||
other_modified_files
|
||||
any_deleted
|
||||
only_deleted
|
||||
other_deleted_files
|
||||
extension: ${{ steps.changed-files.outputs.outputs_extension }}
|
||||
|
||||
branding:
|
||||
icon: file-text
|
||||
|
||||
322
diff-sha.sh
Normal file
322
diff-sha.sh
Normal file
@@ -0,0 +1,322 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
INITIAL_COMMIT="false"
|
||||
GITHUB_OUTPUT=${GITHUB_OUTPUT:-""}
|
||||
EXTRA_ARGS="--no-tags --prune --recurse-submodules"
|
||||
PREVIOUS_SHA=""
|
||||
CURRENT_SHA=""
|
||||
DIFF="..."
|
||||
IS_TAG="false"
|
||||
SOURCE_BRANCH=""
|
||||
|
||||
if [[ "$GITHUB_REF" == "refs/tags/"* ]]; then
|
||||
IS_TAG="true"
|
||||
EXTRA_ARGS="--prune --no-recurse-submodules"
|
||||
SOURCE_BRANCH=${GITHUB_EVENT_BASE_REF#refs/heads/}
|
||||
fi
|
||||
|
||||
if [[ -z $GITHUB_EVENT_PULL_REQUEST_BASE_REF || "$GITHUB_EVENT_HEAD_REPO_FORK" == "true" ]]; then
|
||||
DIFF=".."
|
||||
fi
|
||||
|
||||
echo "::group::changed-files-diff-sha"
|
||||
|
||||
if [[ -n $INPUT_PATH ]]; then
|
||||
REPO_DIR="$GITHUB_WORKSPACE/$INPUT_PATH"
|
||||
|
||||
echo "::debug::Resolving repository path: $REPO_DIR"
|
||||
if [[ ! -d "$REPO_DIR" ]]; then
|
||||
echo "::error::Invalid repository path: $REPO_DIR"
|
||||
exit 1
|
||||
fi
|
||||
cd "$REPO_DIR"
|
||||
fi
|
||||
|
||||
function __version() {
|
||||
echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }';
|
||||
}
|
||||
|
||||
echo "Verifying git version..."
|
||||
|
||||
GIT_VERSION=$(git --version | awk '{print $3}') && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::error::git not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $(__version "$GIT_VERSION") -lt $(__version "2.18.0") ]]; then
|
||||
echo "::error::Invalid git version. Please upgrade ($GIT_VERSION) to >= (2.18.0)"
|
||||
exit 1
|
||||
else
|
||||
echo "Valid git version found: ($GIT_VERSION)"
|
||||
fi
|
||||
|
||||
IS_SHALLOW=$(git rev-parse --is-shallow-repository) && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::error::Unable to determine if the repository is shallow"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z $GITHUB_EVENT_PULL_REQUEST_BASE_REF ]]; then
|
||||
echo "Running on a push event..."
|
||||
TARGET_BRANCH=$GITHUB_REFNAME
|
||||
CURRENT_BRANCH=$TARGET_BRANCH
|
||||
|
||||
if [[ "$IS_SHALLOW" == "true" ]]; then
|
||||
echo "Fetching remote refs..."
|
||||
if [[ "$IS_TAG" == "false" ]]; then
|
||||
# shellcheck disable=SC2086
|
||||
git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" origin +refs/heads/"$CURRENT_BRANCH":refs/remotes/origin/"$CURRENT_BRANCH" 1>/dev/null
|
||||
elif [[ "$SOURCE_BRANCH" != "" ]]; then
|
||||
# shellcheck disable=SC2086
|
||||
git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" origin +refs/heads/"$SOURCE_BRANCH":refs/remotes/origin/"$SOURCE_BRANCH" 1>/dev/null
|
||||
fi
|
||||
|
||||
if git submodule status &>/dev/null; then
|
||||
# shellcheck disable=SC2086
|
||||
git submodule foreach git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" || true
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "::debug::Getting HEAD SHA..."
|
||||
if [[ -n "$INPUT_UNTIL" ]]; then
|
||||
echo "::debug::Getting HEAD SHA for '$INPUT_UNTIL'..."
|
||||
CURRENT_SHA=$(git log -1 --format="%H" --date=local --until="$INPUT_UNTIL") && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::error::Invalid until date: $INPUT_UNTIL"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [[ -z $INPUT_SHA ]]; then
|
||||
CURRENT_SHA=$(git rev-list -n 1 HEAD) && exit_status=$? || exit_status=$?
|
||||
else
|
||||
CURRENT_SHA=$INPUT_SHA; exit_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "::debug::Verifying the current commit SHA: $CURRENT_SHA"
|
||||
git rev-parse --quiet --verify "$CURRENT_SHA^{commit}" 1>/dev/null 2>&1 && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::error::Unable to locate the current sha: $CURRENT_SHA"
|
||||
echo "::error::Please verify that current sha is valid, and increase the fetch_depth to a number higher than $INPUT_FETCH_DEPTH."
|
||||
exit 1
|
||||
else
|
||||
echo "::debug::Current SHA: $CURRENT_SHA"
|
||||
fi
|
||||
|
||||
if [[ -z $INPUT_BASE_SHA ]]; then
|
||||
if [[ -n "$INPUT_SINCE" ]]; then
|
||||
echo "::debug::Getting base SHA for '$INPUT_SINCE'..."
|
||||
PREVIOUS_SHA=$(git log --format="%H" --date=local --since="$INPUT_SINCE" | tail -1) && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ -z "$PREVIOUS_SHA" ]]; then
|
||||
echo "::error::Unable to locate a previous commit for the specified date: $INPUT_SINCE"
|
||||
exit 1
|
||||
fi
|
||||
elif [[ "$IS_TAG" == "true" ]]; then
|
||||
PREVIOUS_SHA=$(git rev-parse "$(git tag --sort=-v:refname | head -n 2 | tail -n 1)") && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ -z "$PREVIOUS_SHA" ]]; then
|
||||
echo "::error::Unable to locate a previous commit for the specified tag: $GITHUB_REF"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [[ "$INPUT_SINCE_LAST_REMOTE_COMMIT" == "true" ]]; then
|
||||
PREVIOUS_SHA=""
|
||||
|
||||
if [[ "$GITHUB_EVENT_FORCED" == "false" || -z "$GITHUB_EVENT_FORCED" ]]; then
|
||||
PREVIOUS_SHA=$GITHUB_EVENT_BEFORE && exit_status=$? || exit_status=$?
|
||||
else
|
||||
PREVIOUS_SHA=$(git rev-list -n 1 "HEAD^") && exit_status=$? || exit_status=$?
|
||||
fi
|
||||
else
|
||||
PREVIOUS_SHA=$(git rev-list -n 1 "HEAD^") && exit_status=$? || exit_status=$?
|
||||
fi
|
||||
|
||||
if [[ -z "$PREVIOUS_SHA" || "$PREVIOUS_SHA" == "0000000000000000000000000000000000000000" ]]; then
|
||||
PREVIOUS_SHA=$(git rev-list -n 1 "HEAD^") && exit_status=$? || exit_status=$?
|
||||
fi
|
||||
|
||||
if [[ "$PREVIOUS_SHA" == "$CURRENT_SHA" ]]; then
|
||||
if ! git rev-parse "$PREVIOUS_SHA^1" &>/dev/null; then
|
||||
INITIAL_COMMIT="true"
|
||||
PREVIOUS_SHA=$(git rev-parse "$CURRENT_SHA")
|
||||
echo "::warning::Initial commit detected no previous commit found."
|
||||
else
|
||||
PREVIOUS_SHA=$(git rev-parse "$PREVIOUS_SHA^1")
|
||||
fi
|
||||
else
|
||||
if [[ -z "$PREVIOUS_SHA" ]]; then
|
||||
echo "::error::Unable to locate a previous commit."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
PREVIOUS_SHA=$INPUT_BASE_SHA
|
||||
|
||||
if [[ "$IS_TAG" == "true" ]]; then
|
||||
TARGET_BRANCH=$(git describe --tags "$PREVIOUS_SHA")
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "::debug::Target branch $TARGET_BRANCH..."
|
||||
echo "::debug::Current branch $CURRENT_BRANCH..."
|
||||
|
||||
echo "::debug::Verifying the previous commit SHA: $PREVIOUS_SHA"
|
||||
git rev-parse --quiet --verify "$PREVIOUS_SHA^{commit}" 1>/dev/null 2>&1 && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::error::Unable to locate the previous sha: $PREVIOUS_SHA"
|
||||
echo "::error::Please verify that the previous sha commit is valid, and increase the fetch_depth to a number higher than $INPUT_FETCH_DEPTH."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "Running on a pull request event..."
|
||||
TARGET_BRANCH=$GITHUB_EVENT_PULL_REQUEST_BASE_REF
|
||||
CURRENT_BRANCH=$GITHUB_EVENT_PULL_REQUEST_HEAD_REF
|
||||
|
||||
if [[ "$INPUT_SINCE_LAST_REMOTE_COMMIT" == "true" ]]; then
|
||||
TARGET_BRANCH=$CURRENT_BRANCH
|
||||
fi
|
||||
|
||||
if [[ "$IS_SHALLOW" == "true" ]]; then
|
||||
echo "Fetching remote refs..."
|
||||
|
||||
if [[ "$GITHUB_EVENT_HEAD_REPO_FORK" != "true" ]]; then
|
||||
# shellcheck disable=SC2086
|
||||
git fetch $EXTRA_ARGS -u --progress origin pull/"$GITHUB_EVENT_PULL_REQUEST_NUMBER"/head:"$CURRENT_BRANCH" 1>/dev/null
|
||||
else
|
||||
# shellcheck disable=SC2086
|
||||
git fetch $EXTRA_ARGS -u --progress origin "+refs/heads/$TARGET_BRANCH:refs/remotes/origin/$TARGET_BRANCH" "+refs/heads/$CURRENT_BRANCH*:refs/remotes/origin/$CURRENT_BRANCH*" 1>/dev/null
|
||||
fi
|
||||
|
||||
if [[ "$INPUT_SINCE_LAST_REMOTE_COMMIT" != "true" ]]; then
|
||||
echo "::debug::Fetching remote target branch..."
|
||||
# shellcheck disable=SC2086
|
||||
git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" origin +refs/heads/"$TARGET_BRANCH":refs/remotes/origin/"$TARGET_BRANCH" 1>/dev/null
|
||||
git branch --track "$TARGET_BRANCH" origin/"$TARGET_BRANCH" 1>/dev/null || true
|
||||
fi
|
||||
|
||||
if git submodule status &>/dev/null; then
|
||||
# shellcheck disable=SC2086
|
||||
git submodule foreach git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" || true
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "::debug::Getting HEAD SHA..."
|
||||
if [[ -n "$INPUT_UNTIL" ]]; then
|
||||
echo "::debug::Getting HEAD SHA for '$INPUT_UNTIL'..."
|
||||
CURRENT_SHA=$(git log -1 --format="%H" --date=local --until="$INPUT_UNTIL") && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::error::Invalid until date: $INPUT_UNTIL"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
if [[ -z $INPUT_SHA ]]; then
|
||||
CURRENT_SHA=$(git rev-list -n 1 HEAD) && exit_status=$? || exit_status=$?
|
||||
else
|
||||
CURRENT_SHA=$INPUT_SHA; exit_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "::debug::Verifying the current commit SHA: $CURRENT_SHA"
|
||||
git rev-parse --quiet --verify "$CURRENT_SHA^{commit}" 1>/dev/null 2>&1 && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::error::Unable to locate the current sha: $CURRENT_SHA"
|
||||
echo "::error::Please verify that current sha is valid, and increase the fetch_depth to a number higher than $INPUT_FETCH_DEPTH."
|
||||
exit 1
|
||||
else
|
||||
echo "::debug::Current SHA: $CURRENT_SHA"
|
||||
fi
|
||||
|
||||
if [[ -z $INPUT_BASE_SHA ]]; then
|
||||
if [[ "$INPUT_SINCE_LAST_REMOTE_COMMIT" == "true" ]]; then
|
||||
PREVIOUS_SHA=$GITHUB_EVENT_BEFORE
|
||||
|
||||
if ! git rev-parse --quiet --verify "$PREVIOUS_SHA^{commit}" 1>/dev/null 2>&1; then
|
||||
PREVIOUS_SHA=$GITHUB_EVENT_PULL_REQUEST_BASE_SHA
|
||||
fi
|
||||
else
|
||||
PREVIOUS_SHA=$(git rev-parse origin/"$TARGET_BRANCH") && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ "$IS_SHALLOW" == "true" ]]; then
|
||||
# check if the merge base is in the local history
|
||||
if ! git merge-base "$PREVIOUS_SHA" "$CURRENT_SHA" 1>/dev/null 2>&1; then
|
||||
echo "::debug::Merge base is not in the local history, fetching remote target branch..."
|
||||
# Fetch more of the target branch history until the merge base is found
|
||||
for i in {1..10}; do
|
||||
# shellcheck disable=SC2086
|
||||
git fetch $EXTRA_ARGS -u --progress --deepen="$INPUT_FETCH_DEPTH" origin +refs/heads/"$TARGET_BRANCH":refs/remotes/origin/"$TARGET_BRANCH" 1>/dev/null
|
||||
if git merge-base "$PREVIOUS_SHA" "$CURRENT_SHA" 1>/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
echo "::debug::Merge base is not in the local history, fetching remote target branch again..."
|
||||
echo "::debug::Attempt $i/10"
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z "$PREVIOUS_SHA" || "$PREVIOUS_SHA" == "$CURRENT_SHA" ]]; then
|
||||
PREVIOUS_SHA=$GITHUB_EVENT_PULL_REQUEST_BASE_SHA && exit_status=$? || exit_status=$?
|
||||
fi
|
||||
|
||||
echo "::debug::Previous SHA: $PREVIOUS_SHA"
|
||||
else
|
||||
PREVIOUS_SHA=$INPUT_BASE_SHA && exit_status=$? || exit_status=$?
|
||||
fi
|
||||
|
||||
if ! git diff --name-only --ignore-submodules=all "$PREVIOUS_SHA$DIFF$CURRENT_SHA" 1>/dev/null 2>&1; then
|
||||
DIFF=".."
|
||||
fi
|
||||
|
||||
echo "::debug::Target branch: $TARGET_BRANCH"
|
||||
echo "::debug::Current branch: $CURRENT_BRANCH"
|
||||
|
||||
echo "::debug::Verifying the previous commit SHA: $PREVIOUS_SHA"
|
||||
git rev-parse --quiet --verify "$PREVIOUS_SHA^{commit}" 1>/dev/null 2>&1 && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::error::Unable to locate the previous sha: $PREVIOUS_SHA"
|
||||
echo "::error::Please verify that the previous sha is valid, and increase the fetch_depth to a number higher than $INPUT_FETCH_DEPTH."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! git diff --name-only --ignore-submodules=all "$PREVIOUS_SHA$DIFF$CURRENT_SHA" 1>/dev/null 2>&1; then
|
||||
echo "::error::Unable to determine a difference between $PREVIOUS_SHA$DIFF$CURRENT_SHA"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$PREVIOUS_SHA" == "$CURRENT_SHA" && "$INITIAL_COMMIT" == "false" ]]; then
|
||||
echo "::error::Similar commit hashes detected: previous sha: $PREVIOUS_SHA is equivalent to the current sha: $CURRENT_SHA."
|
||||
echo "::error::Please verify that both commits are valid, and increase the fetch_depth to a number higher than $INPUT_FETCH_DEPTH."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=target_branch::$TARGET_BRANCH"
|
||||
echo "::set-output name=current_branch::$CURRENT_BRANCH"
|
||||
echo "::set-output name=previous_sha::$PREVIOUS_SHA"
|
||||
echo "::set-output name=current_sha::$CURRENT_SHA"
|
||||
echo "::set-output name=diff::$DIFF"
|
||||
else
|
||||
cat <<EOF >> "$GITHUB_OUTPUT"
|
||||
target_branch=$TARGET_BRANCH
|
||||
current_branch=$CURRENT_BRANCH
|
||||
previous_sha=$PREVIOUS_SHA
|
||||
current_sha=$CURRENT_SHA
|
||||
diff=$DIFF
|
||||
EOF
|
||||
fi
|
||||
|
||||
echo "::endgroup::"
|
||||
209
entrypoint.sh
209
entrypoint.sh
@@ -1,209 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
echo "::group::changed-files"
|
||||
|
||||
echo "Resolving repository path..."
|
||||
|
||||
if [[ -n $INPUT_PATH ]]; then
|
||||
REPO_DIR="$GITHUB_WORKSPACE/$INPUT_PATH"
|
||||
if [[ ! -d "$REPO_DIR" ]]; then
|
||||
echo "::warning::Invalid repository path"
|
||||
exit 1
|
||||
fi
|
||||
cd "$REPO_DIR"
|
||||
fi
|
||||
|
||||
SERVER_URL=$(echo "$GITHUB_SERVER_URL" | awk -F/ '{print $3}')
|
||||
|
||||
echo "Setting up 'temp_changed_files' remote..."
|
||||
|
||||
git ls-remote --exit-code temp_changed_files 1>/dev/null 2>&1 && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "No 'temp_changed_files' remote found"
|
||||
echo "Creating 'temp_changed_files' remote..."
|
||||
git remote add temp_changed_files "https://${INPUT_TOKEN}@${SERVER_URL}/${GITHUB_REPOSITORY}"
|
||||
else
|
||||
echo "Found 'temp_changed_files' remote"
|
||||
fi
|
||||
|
||||
echo "Getting HEAD info..."
|
||||
|
||||
if [[ -z $INPUT_SHA ]]; then
|
||||
CURRENT_SHA=$(git rev-parse HEAD 2>&1) && exit_status=$? || exit_status=$?
|
||||
else
|
||||
CURRENT_SHA=$INPUT_SHA && exit_status=$? || exit_status=$?
|
||||
fi
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::warning::Unable to determine the current head sha"
|
||||
git remote remove temp_changed_files
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z $GITHUB_BASE_REF ]]; then
|
||||
TARGET_BRANCH=${GITHUB_REF/refs\/heads\//}
|
||||
CURRENT_BRANCH=$TARGET_BRANCH
|
||||
|
||||
if [[ -z $INPUT_BASE_SHA ]]; then
|
||||
PREVIOUS_SHA=$(git rev-parse HEAD^1 2>&1) && exit_status=$? || exit_status=$?
|
||||
else
|
||||
PREVIOUS_SHA=$INPUT_BASE_SHA && exit_status=$? || exit_status=$?
|
||||
fi
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::warning::Unable to determine the previous commit sha"
|
||||
echo "::warning::You seem to be missing 'fetch-depth: 0' or 'fetch-depth: 2'. See https://github.com/tj-actions/changed-files#usage"
|
||||
git remote remove temp_changed_files
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
TARGET_BRANCH=$GITHUB_BASE_REF
|
||||
CURRENT_BRANCH=$GITHUB_HEAD_REF
|
||||
|
||||
if [[ -z $INPUT_BASE_SHA ]]; then
|
||||
git fetch --no-tags -u --progress --depth=1 temp_changed_files "${TARGET_BRANCH}":"${TARGET_BRANCH}"
|
||||
PREVIOUS_SHA=$(git rev-parse "${TARGET_BRANCH}" 2>&1) && exit_status=$? || exit_status=$?
|
||||
else
|
||||
git fetch --no-tags -u --progress --depth=1 temp_changed_files "$INPUT_BASE_SHA"
|
||||
PREVIOUS_SHA=$INPUT_BASE_SHA
|
||||
fi
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::warning::Unable to determine the base ref sha for ${TARGET_BRANCH}"
|
||||
echo "::warning::You seem to be missing 'fetch-depth: 0' or 'fetch-depth: 2'. See https://github.com/tj-actions/changed-files#usage"
|
||||
git remote remove temp_changed_files
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Retrieving changes between $PREVIOUS_SHA ($TARGET_BRANCH) → $CURRENT_SHA ($CURRENT_BRANCH)"
|
||||
|
||||
if [[ -z "${INPUT_FILES[*]}" ]]; then
|
||||
echo "Getting diff..."
|
||||
ADDED=$(git diff --diff-filter=A --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
COPIED=$(git diff --diff-filter=C --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
DELETED=$(git diff --diff-filter=D --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
MODIFIED=$(git diff --diff-filter=M --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
RENAMED=$(git diff --diff-filter=R --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
TYPE_CHANGED=$(git diff --diff-filter=T --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNMERGED=$(git diff --diff-filter=U --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNKNOWN=$(git diff --diff-filter=X --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED_AND_MODIFIED=$(git diff --diff-filter="*ACDMRTUX" --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_MODIFIED=$(git diff --diff-filter="ACMR" --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
|
||||
echo "Input files: ${INPUT_FILES[*]}"
|
||||
|
||||
FILES=$(echo "${INPUT_FILES[*]}" | awk '{gsub(/ /,"\n"); print $0;}' | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
|
||||
echo "Checking for file changes: \"${FILES}\"..."
|
||||
ADDED=$(git diff --diff-filter=A --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | grep -E "(${FILES})" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
COPIED=$(git diff --diff-filter=C --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | grep -E "(${FILES})" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
DELETED=$(git diff --diff-filter=D --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | grep -E "(${FILES})" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
MODIFIED=$(git diff --diff-filter=M --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | grep -E "(${FILES})" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
RENAMED=$(git diff --diff-filter=R --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | grep -E "(${FILES})" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
TYPE_CHANGED=$(git diff --diff-filter=T --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | grep -E "(${FILES})" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNMERGED=$(git diff --diff-filter=U --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | grep -E "(${FILES})" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNKNOWN=$(git diff --diff-filter=X --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | grep -E "(${FILES})" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED_AND_MODIFIED=$(git diff --diff-filter="*ACDMRTUX" --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | grep -E "(${FILES})" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_MODIFIED=$(git diff --diff-filter="ACMR" --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | grep -E "(${FILES})" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
|
||||
ALL_OTHER_MODIFIED=$(git diff --diff-filter="ACMR" --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNIQUE_ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | sort -u | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
|
||||
if [[ -n $ALL_OTHER_MODIFIED ]]; then
|
||||
if [[ -n "$UNIQUE_ALL_MODIFIED" ]]; then
|
||||
OTHER_MODIFIED=$(echo "${ALL_OTHER_MODIFIED}|${UNIQUE_ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | sort | uniq -u | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
OTHER_MODIFIED=$ALL_OTHER_MODIFIED
|
||||
fi
|
||||
fi
|
||||
|
||||
UNIQUE_ALL_MODIFIED=$(echo "${UNIQUE_ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
|
||||
if [[ -n "${UNIQUE_ALL_MODIFIED}" ]]; then
|
||||
echo "Matching modified files: ${UNIQUE_ALL_MODIFIED}"
|
||||
echo "::set-output name=any_changed::true"
|
||||
else
|
||||
echo "::set-output name=any_changed::false"
|
||||
fi
|
||||
|
||||
OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
|
||||
if [[ -n "${OTHER_MODIFIED}" ]]; then
|
||||
echo "Non Matching modified files: ${OTHER_MODIFIED}"
|
||||
echo "::set-output name=only_changed::false"
|
||||
echo "::set-output name=other_changed_files::$OTHER_MODIFIED"
|
||||
elif [[ -n "${UNIQUE_ALL_MODIFIED}" ]]; then
|
||||
echo "::set-output name=only_changed::true"
|
||||
fi
|
||||
|
||||
ALL_OTHER_DELETED=$(git diff --diff-filter=D --name-only "$PREVIOUS_SHA" "$CURRENT_SHA" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNIQUE_ALL_DELETED=$(echo "${DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | sort -u | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
|
||||
if [[ -n $ALL_OTHER_DELETED ]]; then
|
||||
if [[ -n "$UNIQUE_ALL_DELETED" ]]; then
|
||||
OTHER_DELETED=$(echo "${ALL_OTHER_DELETED}|${UNIQUE_ALL_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | sort | uniq -u | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
OTHER_DELETED=$ALL_OTHER_DELETED
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Matching deleted files: ${UNIQUE_ALL_DELETED}"
|
||||
|
||||
if [[ -n "${UNIQUE_ALL_DELETED}" ]]; then
|
||||
echo "::set-output name=any_deleted::true"
|
||||
else
|
||||
echo "::set-output name=any_deleted::false"
|
||||
fi
|
||||
|
||||
OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
|
||||
if [[ -n "${OTHER_DELETED}" ]]; then
|
||||
echo "Non Matching deleted files: ${OTHER_DELETED}"
|
||||
echo "::set-output name=only_deleted::false"
|
||||
echo "::set-output name=other_deleted_files::$OTHER_DELETED"
|
||||
elif [[ -n "${UNIQUE_ALL_DELETED}" ]]; then
|
||||
echo "::set-output name=only_deleted::true"
|
||||
fi
|
||||
|
||||
ADDED=$(echo "${ADDED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
COPIED=$(echo "${COPIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
DELETED=$(echo "${DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
MODIFIED=$(echo "${MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
RENAMED=$(echo "${RENAMED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNMERGED=$(echo "${UNMERGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNKNOWN=$(echo "${UNKNOWN}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
fi
|
||||
|
||||
echo "Added files: $ADDED"
|
||||
echo "Copied files: $COPIED"
|
||||
echo "Deleted files: $DELETED"
|
||||
echo "Modified files: $MODIFIED"
|
||||
echo "Renamed files: $RENAMED"
|
||||
echo "Type Changed files: $TYPE_CHANGED"
|
||||
echo "Unmerged files: $UNMERGED"
|
||||
echo "Unknown files: $UNKNOWN"
|
||||
echo "All changed files: $ALL_CHANGED_AND_MODIFIED"
|
||||
echo "All modified files: $ALL_MODIFIED"
|
||||
|
||||
git remote remove temp_changed_files
|
||||
|
||||
echo "::set-output name=added_files::$ADDED"
|
||||
echo "::set-output name=copied_files::$COPIED"
|
||||
echo "::set-output name=deleted_files::$DELETED"
|
||||
echo "::set-output name=modified_files::$MODIFIED"
|
||||
echo "::set-output name=renamed_files::$RENAMED"
|
||||
echo "::set-output name=type_changed_files::$TYPE_CHANGED"
|
||||
echo "::set-output name=unmerged_files::$UNMERGED"
|
||||
echo "::set-output name=unknown_files::$UNKNOWN"
|
||||
echo "::set-output name=all_changed_and_modified_files::$ALL_CHANGED_AND_MODIFIED"
|
||||
echo "::set-output name=all_modified_files::$ALL_MODIFIED"
|
||||
|
||||
echo "::endgroup::"
|
||||
528
get-changed-paths.sh
Executable file
528
get-changed-paths.sh
Executable file
@@ -0,0 +1,528 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
INPUT_SEPARATOR="${INPUT_SEPARATOR//'%'/'%25'}"
|
||||
INPUT_SEPARATOR="${INPUT_SEPARATOR//'.'/'%2E'}"
|
||||
INPUT_SEPARATOR="${INPUT_SEPARATOR//$'\n'/'%0A'}"
|
||||
INPUT_SEPARATOR="${INPUT_SEPARATOR//$'\r'/'%0D'}"
|
||||
|
||||
GITHUB_OUTPUT=${GITHUB_OUTPUT:-""}
|
||||
DIFF=$INPUT_DIFF
|
||||
|
||||
OUTPUTS_EXTENSION="txt"
|
||||
|
||||
if [[ "$INPUT_JSON" == "true" ]]; then
|
||||
OUTPUTS_EXTENSION="json"
|
||||
fi
|
||||
|
||||
if [[ $INPUT_QUOTEPATH == "false" ]]; then
|
||||
git config --global core.quotepath off
|
||||
else
|
||||
git config --global core.quotepath on
|
||||
fi
|
||||
|
||||
if [[ -n $INPUT_DIFF_RELATIVE ]]; then
|
||||
git config --global diff.relative "$INPUT_DIFF_RELATIVE"
|
||||
fi
|
||||
|
||||
function get_dirname_max_depth() {
|
||||
while IFS='' read -r line; do
|
||||
local dir="$line"
|
||||
local dirs=()
|
||||
IFS='/' read -ra dirs <<<"$dir"
|
||||
|
||||
local max_depth=${#dirs[@]}
|
||||
local input_dir_names_max_depth="${INPUT_DIR_NAMES_MAX_DEPTH:-$max_depth}"
|
||||
|
||||
if [[ -n "$input_dir_names_max_depth" && "$input_dir_names_max_depth" -lt "$max_depth" ]]; then
|
||||
max_depth="$input_dir_names_max_depth"
|
||||
fi
|
||||
|
||||
local output="${dirs[0]}"
|
||||
local depth="1"
|
||||
|
||||
while [ "$depth" -lt "$max_depth" ]; do
|
||||
output="$output/${dirs[${depth}]}"
|
||||
depth=$((depth + 1))
|
||||
done
|
||||
|
||||
if [[ "$INPUT_DIR_NAMES_EXCLUDE_ROOT" == "true" && "$output" == "." ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
echo "$output"
|
||||
done < <(uniq)
|
||||
}
|
||||
|
||||
function json_output() {
|
||||
local jq_args="-sR"
|
||||
if [[ "$INPUT_JSON_RAW_FORMAT" == "true" ]]; then
|
||||
jq_args="$jq_args -r"
|
||||
fi
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
jq $jq_args 'split("\n") | map(select(. != "")) | @json' | sed -r 's/^"|"$//g' | tr -s /
|
||||
}
|
||||
|
||||
function get_diff() {
|
||||
local base="$1"
|
||||
local sha="$2"
|
||||
local filter="$3"
|
||||
|
||||
while IFS='' read -r sub; do
|
||||
sub_commit_pre="$(git diff "$base" "$sha" -- "$sub" | { grep '^[-]Subproject commit' || true; } | awk '{print $3}')" && exit_status=$? || exit_status=$?
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::warning::Failed to get previous commit for submodule ($sub) between: $base $sha. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
|
||||
fi
|
||||
|
||||
sub_commit_cur="$(git diff "$base" "$sha" -- "$sub" | { grep '^[+]Subproject commit' || true; } | awk '{print $3}')" && exit_status=$? || exit_status=$?
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::warning::Failed to get current commit for submodule ($sub) between: $base $sha. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
|
||||
fi
|
||||
|
||||
if [ -n "$sub_commit_cur" ]; then
|
||||
(
|
||||
cd "$sub" && (
|
||||
# the strange magic number is a hardcoded "empty tree" commit sha
|
||||
git diff --diff-filter="$filter" --name-only --ignore-submodules=all "${sub_commit_pre:-4b825dc642cb6eb9a060e54bf8d69288fbee4904}" "${sub_commit_cur}" | awk -v r="$sub" '{ print "" r "/" $0}' 2>/dev/null
|
||||
)
|
||||
) || {
|
||||
echo "::warning::Failed to get changed files for submodule ($sub) between: ${sub_commit_pre:-4b825dc642cb6eb9a060e54bf8d69288fbee4904} ${sub_commit_cur}. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
|
||||
}
|
||||
fi
|
||||
done < <(git submodule status --recursive | grep -v "^-" | awk '{print $2}')
|
||||
|
||||
if [[ "$filter" == "D" ]]; then
|
||||
while read -r sub; do
|
||||
echo "$sub"
|
||||
done < <(git submodule status --recursive | grep -e "^-" | awk '{print $2}')
|
||||
fi
|
||||
|
||||
git diff --diff-filter="$filter" --name-only --ignore-submodules=all "$base$DIFF$sha" && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::error::Failed to get changed files between: $base$DIFF$sha" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
function get_renames() {
|
||||
local base="$1"
|
||||
local sha="$2"
|
||||
|
||||
while IFS='' read -r sub; do
|
||||
sub_commit_pre="$(git diff "$base" "$sha" -- "$sub" | { grep '^[-]Subproject commit' || true; } | awk '{print $3}')" && exit_status=$? || exit_status=$?
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::warning::Failed to get previous commit for submodule ($sub) between: $base $sha. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
|
||||
fi
|
||||
|
||||
sub_commit_cur="$(git diff "$base" "$sha" -- "$sub" | { grep '^[+]Subproject commit' || true; } | awk '{print $3}')" && exit_status=$? || exit_status=$?
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::warning::Failed to get current commit for submodule ($sub) between: $base $sha. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
|
||||
fi
|
||||
|
||||
if [ -n "$sub_commit_cur" ]; then
|
||||
(
|
||||
cd "$sub" && (
|
||||
# the strange magic number is a hardcoded "empty tree" commit sha
|
||||
git log --name-status --ignore-submodules=all "${sub_commit_pre:-4b825dc642cb6eb9a060e54bf8d69288fbee4904}" "${sub_commit_cur}" | { grep -E "^R" || true; } | awk -F '\t' -v d="$INPUT_OLD_NEW_SEPARATOR" '{print $2d$3}' | awk -v r="$sub" '{ print "" r "/" $0}'
|
||||
)
|
||||
) || {
|
||||
echo "::warning::Failed to get renamed files for submodule ($sub) between: ${sub_commit_pre:-4b825dc642cb6eb9a060e54bf8d69288fbee4904} ${sub_commit_cur}. Please ensure that submodules are initialized and up to date. See: https://github.com/actions/checkout#usage" >&2
|
||||
}
|
||||
fi
|
||||
done < <(git submodule | awk '{print $2}')
|
||||
|
||||
git log --name-status --ignore-submodules=all "$base" "$sha" | { grep -E "^R" || true; } | awk -F '\t' -v d="$INPUT_OLD_NEW_SEPARATOR" '{print $2d$3}' && exit_status=$? || exit_status=$?
|
||||
|
||||
if [[ $exit_status -ne 0 ]]; then
|
||||
echo "::error::Failed to get renamed files between: $base → $sha" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
echo "::group::changed-files"
|
||||
|
||||
if [[ -n $INPUT_PATH ]]; then
|
||||
REPO_DIR="$GITHUB_WORKSPACE/$INPUT_PATH"
|
||||
|
||||
echo "Resolving repository path: $REPO_DIR"
|
||||
if [[ ! -d "$REPO_DIR" ]]; then
|
||||
echo "::error::Invalid repository path: $REPO_DIR"
|
||||
exit 1
|
||||
fi
|
||||
cd "$REPO_DIR"
|
||||
fi
|
||||
|
||||
echo "Retrieving changes between $INPUT_PREVIOUS_SHA ($INPUT_TARGET_BRANCH) → $INPUT_CURRENT_SHA ($INPUT_CURRENT_BRANCH)"
|
||||
|
||||
if [[ "$INPUT_HAS_CUSTOM_PATTERNS" == "false" || -z "$INPUT_FILES_PATTERN_FILE" ]]; then
|
||||
if [[ "$INPUT_JSON" == "false" ]]; then
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
fi
|
||||
if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_OLD_NEW_FILES_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | awk -v d="$INPUT_OLD_NEW_FILES_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
fi
|
||||
fi
|
||||
else
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
else
|
||||
ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | json_output)
|
||||
COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | json_output)
|
||||
DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | json_output)
|
||||
MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | json_output)
|
||||
RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | json_output)
|
||||
TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | json_output)
|
||||
UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | json_output)
|
||||
UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | json_output)
|
||||
ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | json_output)
|
||||
ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | json_output)
|
||||
ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | json_output)
|
||||
fi
|
||||
if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
else
|
||||
ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | json_output)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
ADDED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" A | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
COPIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" C | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" M | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
RENAMED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" R | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
TYPE_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" T | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNMERGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" U | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNKNOWN=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" X | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED_AND_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "*ACDMRTUX" | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | { grep -x -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then
|
||||
ALL_OLD_NEW_RENAMED=$(get_renames "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" | { grep -w -E -f "$INPUT_FILES_PATTERN_FILE" || true; } | awk -v d="$INPUT_OLD_NEW_FILES_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
fi
|
||||
|
||||
ALL_OTHER_CHANGED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMR" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
|
||||
if [[ -n "${ALL_CHANGED}" ]]; then
|
||||
echo "::debug::Matching changed files: ${ALL_CHANGED}"
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=any_changed::true"
|
||||
else
|
||||
echo "any_changed=true" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
else
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=any_changed::false"
|
||||
else
|
||||
echo "any_changed=false" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
fi
|
||||
|
||||
OTHER_CHANGED=""
|
||||
|
||||
if [[ -n $ALL_OTHER_CHANGED ]]; then
|
||||
if [[ -n "$ALL_CHANGED" ]]; then
|
||||
OTHER_CHANGED=$(echo "${ALL_OTHER_CHANGED}|${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | sort | uniq -u | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
OTHER_CHANGED=$ALL_OTHER_CHANGED
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$INPUT_JSON" == "false" ]]; then
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
fi
|
||||
else
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
else
|
||||
OTHER_CHANGED=$(echo "${OTHER_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "${OTHER_CHANGED}" && "${OTHER_CHANGED}" != "[]" ]]; then
|
||||
echo "::debug::Non Matching changed files: ${OTHER_CHANGED}"
|
||||
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=only_changed::false"
|
||||
echo "::set-output name=other_changed_files::$OTHER_CHANGED"
|
||||
else
|
||||
echo "only_changed=false" >>"$GITHUB_OUTPUT"
|
||||
echo "other_changed_files=$OTHER_CHANGED" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
elif [[ -n "${ALL_CHANGED}" ]]; then
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=only_changed::true"
|
||||
else
|
||||
echo "only_changed=true" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
fi
|
||||
|
||||
ALL_OTHER_MODIFIED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" "ACMRD" | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
|
||||
if [[ -n "${ALL_MODIFIED}" ]]; then
|
||||
echo "::debug::Matching modified files: ${ALL_MODIFIED}"
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=any_modified::true"
|
||||
else
|
||||
echo "any_modified=true" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
else
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=any_modified::false"
|
||||
else
|
||||
echo "any_modified=false" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
fi
|
||||
|
||||
OTHER_MODIFIED=""
|
||||
|
||||
if [[ -n $ALL_OTHER_MODIFIED ]]; then
|
||||
if [[ -n "$ALL_MODIFIED" ]]; then
|
||||
OTHER_MODIFIED=$(echo "${ALL_OTHER_MODIFIED}|${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | sort | uniq -u | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
OTHER_MODIFIED=$ALL_OTHER_MODIFIED
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$INPUT_JSON" == "false" ]]; then
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
fi
|
||||
else
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
else
|
||||
OTHER_MODIFIED=$(echo "${OTHER_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "${OTHER_MODIFIED}" && "$OTHER_MODIFIED" != "[]" ]]; then
|
||||
echo "::debug::Non Matching modified files: ${OTHER_MODIFIED}"
|
||||
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=only_modified::false"
|
||||
echo "::set-output name=other_modified_files::$OTHER_MODIFIED"
|
||||
else
|
||||
echo "only_modified=false" >>"$GITHUB_OUTPUT"
|
||||
echo "other_modified_files=$OTHER_MODIFIED" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
elif [[ -n "${ALL_MODIFIED}" ]]; then
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=only_modified::true"
|
||||
else
|
||||
echo "only_modified=true" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
fi
|
||||
|
||||
ALL_OTHER_DELETED=$(get_diff "$INPUT_PREVIOUS_SHA" "$INPUT_CURRENT_SHA" D | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
|
||||
if [[ -n "${DELETED}" ]]; then
|
||||
echo "::debug::Matching deleted files: ${DELETED}"
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=any_deleted::true"
|
||||
else
|
||||
echo "any_deleted=true" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
else
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=any_deleted::false"
|
||||
else
|
||||
echo "any_deleted=false" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
fi
|
||||
|
||||
OTHER_DELETED=""
|
||||
|
||||
if [[ -n $ALL_OTHER_DELETED ]]; then
|
||||
if [[ -n "$DELETED" ]]; then
|
||||
OTHER_DELETED=$(echo "${ALL_OTHER_DELETED}|${DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | sort | uniq -u | awk -v d="|" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
OTHER_DELETED=$ALL_OTHER_DELETED
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$INPUT_JSON" == "false" ]]; then
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
fi
|
||||
else
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
else
|
||||
OTHER_DELETED=$(echo "${OTHER_DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "${OTHER_DELETED}" && "${OTHER_DELETED}" != "[]" ]]; then
|
||||
echo "::debug::Non Matching deleted files: ${OTHER_DELETED}"
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=only_deleted::false"
|
||||
echo "::set-output name=other_deleted_files::$OTHER_DELETED"
|
||||
else
|
||||
echo "only_deleted=false" >>"$GITHUB_OUTPUT"
|
||||
echo "other_deleted_files=$OTHER_DELETED" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
elif [[ -n "${DELETED}" ]]; then
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=only_deleted::true"
|
||||
else
|
||||
echo "only_deleted=true" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
fi
|
||||
if [[ "$INPUT_JSON" == "false" ]]; then
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
ADDED=$(echo "${ADDED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
COPIED=$(echo "${COPIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
DELETED=$(echo "${DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
MODIFIED=$(echo "${MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
RENAMED=$(echo "${RENAMED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNMERGED=$(echo "${UNMERGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNKNOWN=$(echo "${UNKNOWN}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED=$(echo "${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
else
|
||||
ADDED=$(echo "${ADDED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
COPIED=$(echo "${COPIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
DELETED=$(echo "${DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
MODIFIED=$(echo "${MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
RENAMED=$(echo "${RENAMED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNMERGED=$(echo "${UNMERGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
UNKNOWN=$(echo "${UNKNOWN}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_CHANGED=$(echo "${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | awk -v d="$INPUT_SEPARATOR" '{s=(NR==1?s:s d)$0}END{print s}')
|
||||
fi
|
||||
else
|
||||
if [[ "$INPUT_DIR_NAMES" == "true" ]]; then
|
||||
ADDED=$(echo "${ADDED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
COPIED=$(echo "${COPIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
DELETED=$(echo "${DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
MODIFIED=$(echo "${MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
RENAMED=$(echo "${RENAMED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
UNMERGED=$(echo "${UNMERGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
UNKNOWN=$(echo "${UNKNOWN}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
ALL_CHANGED=$(echo "${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | xargs -I {} dirname {} | get_dirname_max_depth | uniq | json_output)
|
||||
else
|
||||
ADDED=$(echo "${ADDED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
COPIED=$(echo "${COPIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
DELETED=$(echo "${DELETED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
MODIFIED=$(echo "${MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
RENAMED=$(echo "${RENAMED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
TYPE_CHANGED=$(echo "${TYPE_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
UNMERGED=$(echo "${UNMERGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
UNKNOWN=$(echo "${UNKNOWN}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
ALL_CHANGED_AND_MODIFIED=$(echo "${ALL_CHANGED_AND_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
ALL_CHANGED=$(echo "${ALL_CHANGED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
ALL_MODIFIED=$(echo "${ALL_MODIFIED}" | awk '{gsub(/\|/,"\n"); print $0;}' | json_output)
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "::debug::Added files: $ADDED"
|
||||
echo "::debug::Copied files: $COPIED"
|
||||
echo "::debug::Deleted files: $DELETED"
|
||||
echo "::debug::Modified files: $MODIFIED"
|
||||
echo "::debug::Renamed files: $RENAMED"
|
||||
echo "::debug::Type Changed files: $TYPE_CHANGED"
|
||||
echo "::debug::Unmerged files: $UNMERGED"
|
||||
echo "::debug::Unknown files: $UNKNOWN"
|
||||
echo "::debug::All changed and modified files: $ALL_CHANGED_AND_MODIFIED"
|
||||
echo "::debug::All changed files: $ALL_CHANGED"
|
||||
echo "::debug::All modified files: $ALL_MODIFIED"
|
||||
if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then
|
||||
echo "::debug::All old & new renamed files: $ALL_OLD_NEW_RENAMED"
|
||||
fi
|
||||
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=added_files::$ADDED"
|
||||
echo "::set-output name=copied_files::$COPIED"
|
||||
echo "::set-output name=deleted_files::$DELETED"
|
||||
echo "::set-output name=modified_files::$MODIFIED"
|
||||
echo "::set-output name=renamed_files::$RENAMED"
|
||||
echo "::set-output name=type_changed_files::$TYPE_CHANGED"
|
||||
echo "::set-output name=unmerged_files::$UNMERGED"
|
||||
echo "::set-output name=unknown_files::$UNKNOWN"
|
||||
echo "::set-output name=all_changed_and_modified_files::$ALL_CHANGED_AND_MODIFIED"
|
||||
echo "::set-output name=all_changed_files::$ALL_CHANGED"
|
||||
echo "::set-output name=all_modified_files::$ALL_MODIFIED"
|
||||
echo "::set-output name=outputs_extension::$OUTPUTS_EXTENSION"
|
||||
else
|
||||
cat <<EOF >>"$GITHUB_OUTPUT"
|
||||
added_files=$ADDED
|
||||
copied_files=$COPIED
|
||||
deleted_files=$DELETED
|
||||
modified_files=$MODIFIED
|
||||
renamed_files=$RENAMED
|
||||
type_changed_files=$TYPE_CHANGED
|
||||
unmerged_files=$UNMERGED
|
||||
unknown_files=$UNKNOWN
|
||||
all_changed_and_modified_files=$ALL_CHANGED_AND_MODIFIED
|
||||
all_changed_files=$ALL_CHANGED
|
||||
all_modified_files=$ALL_MODIFIED
|
||||
outputs_extension=$OUTPUTS_EXTENSION
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ $INPUT_INCLUDE_ALL_OLD_NEW_RENAMED_FILES == "true" ]]; then
|
||||
if [[ -z "$GITHUB_OUTPUT" ]]; then
|
||||
echo "::set-output name=all_old_new_renamed_files::$ALL_OLD_NEW_RENAMED"
|
||||
else
|
||||
echo "all_old_new_renamed_files=$ALL_OLD_NEW_RENAMED" >>"$GITHUB_OUTPUT"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "::endgroup::"
|
||||
@@ -7,7 +7,8 @@
|
||||
"prConcurrentLimit": 5,
|
||||
"rebaseWhen": "behind-base-branch",
|
||||
"addLabels": [
|
||||
"dependencies"
|
||||
"dependencies",
|
||||
"merge when passing"
|
||||
],
|
||||
"assignees": [
|
||||
"jackton1"
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
echo "::group::changed-files-from-source-file"
|
||||
|
||||
IFS=" " read -r -a FILES <<< "$(echo "${INPUT_FILES[@]}" | sort -u | tr "\n" " ")"
|
||||
|
||||
if [[ -n $INPUT_FILES_FROM_SOURCE_FILE ]]; then
|
||||
for file in $INPUT_FILES_FROM_SOURCE_FILE
|
||||
do
|
||||
while read -r fileName; do
|
||||
FILES+=("$fileName")
|
||||
done <"$file"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "Input Files: ${FILES[*]}"
|
||||
|
||||
IFS=" " read -r -a ALL_UNIQUE_FILES <<< "$(echo "${FILES[@]}" | tr " " "\n" | sort -u | tr "\n" " ")"
|
||||
|
||||
echo "All Unique Input files: ${ALL_UNIQUE_FILES[*]}"
|
||||
|
||||
echo "::set-output name=files::${ALL_UNIQUE_FILES[*]}"
|
||||
|
||||
echo "::endgroup::"
|
||||
1
test/[test new].txt
Normal file
1
test/[test new].txt
Normal file
@@ -0,0 +1 @@
|
||||
This is a test file
|
||||
@@ -2,3 +2,6 @@
|
||||
action.yml
|
||||
action.yml
|
||||
action.yml
|
||||
**/test.txt
|
||||
!test/test/test.txt
|
||||
[test new].txt
|
||||
|
||||
1
test/demo
Submodule
1
test/demo
Submodule
Submodule test/demo added at 83ccca9b63
@@ -1 +1 @@
|
||||
This is a test file
|
||||
This is a test file.
|
||||
|
||||
1
test/test rename 2.txt
Normal file
1
test/test rename 2.txt
Normal file
@@ -0,0 +1 @@
|
||||
This is test file 2.
|
||||
1
test/test rename-1.txt
Normal file
1
test/test rename-1.txt
Normal file
@@ -0,0 +1 @@
|
||||
This is a test file 1.
|
||||
1
test/test-è.txt
Normal file
1
test/test-è.txt
Normal file
@@ -0,0 +1 @@
|
||||
This is a test file with non ascii character filename.
|
||||
1
test/test.txt
Normal file
1
test/test.txt
Normal file
@@ -0,0 +1 @@
|
||||
This is a test file.
|
||||
1
test/test/test.txt
Normal file
1
test/test/test.txt
Normal file
@@ -0,0 +1 @@
|
||||
This is a test file.
|
||||
1
test/test2/test.txt
Normal file
1
test/test2/test.txt
Normal file
@@ -0,0 +1 @@
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
||||
1
test/test2/test3/new.txt
Normal file
1
test/test2/test3/new.txt
Normal file
@@ -0,0 +1 @@
|
||||
Test file.
|
||||
1
test/test2/test3/test4/test.txt
Normal file
1
test/test2/test3/test4/test.txt
Normal file
@@ -0,0 +1 @@
|
||||
Test file.
|
||||
Reference in New Issue
Block a user