diff --git a/CHANGELOG.md b/CHANGELOG.md index e4abf5af..dca21660 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,1384 +1,962 @@ ## [6.2.5](https://github.com/forcedotcom/source-tracking/compare/6.2.4...6.2.5) (2024-05-25) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 11.6.1 to 11.6.2 ([74742dc](https://github.com/forcedotcom/source-tracking/commit/74742dc0c2b7adcee2a3b6b2c4b9bb961ef0e7f2)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 11.6.1 to 11.6.2 ([74742dc](https://github.com/forcedotcom/source-tracking/commit/74742dc0c2b7adcee2a3b6b2c4b9bb961ef0e7f2)) ## [6.2.4](https://github.com/forcedotcom/source-tracking/compare/6.2.3...6.2.4) (2024-05-23) - ### Bug Fixes -* quick-action-definition ([#590](https://github.com/forcedotcom/source-tracking/issues/590)) ([73228f3](https://github.com/forcedotcom/source-tracking/commit/73228f3c56640d945cd8fa191a3c2b9c6bcd6b01)) - - +- quick-action-definition ([#590](https://github.com/forcedotcom/source-tracking/issues/590)) ([73228f3](https://github.com/forcedotcom/source-tracking/commit/73228f3c56640d945cd8fa191a3c2b9c6bcd6b01)) ## [6.2.3](https://github.com/forcedotcom/source-tracking/compare/6.2.2...6.2.3) (2024-05-18) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.26.5 to 3.26.6 ([490e45e](https://github.com/forcedotcom/source-tracking/commit/490e45e6629fdd9231ceb09c8579cd238de31f81)) - - +- **deps:** bump @oclif/core from 3.26.5 to 3.26.6 ([490e45e](https://github.com/forcedotcom/source-tracking/commit/490e45e6629fdd9231ceb09c8579cd238de31f81)) ## [6.2.2](https://github.com/forcedotcom/source-tracking/compare/6.2.1...6.2.2) (2024-05-18) - ### Bug Fixes -* **deps:** bump @salesforce/core from 7.3.6 to 7.3.8 ([5e51733](https://github.com/forcedotcom/source-tracking/commit/5e51733a6eefc488814077691883cc0ca487ccda)) - - +- **deps:** bump @salesforce/core from 7.3.6 to 7.3.8 ([5e51733](https://github.com/forcedotcom/source-tracking/commit/5e51733a6eefc488814077691883cc0ca487ccda)) ## [6.2.1](https://github.com/forcedotcom/source-tracking/compare/6.2.0...6.2.1) (2024-05-16) - ### Bug Fixes -* **deps:** bump @salesforce/core from 7.3.5 to 7.3.6 ([0e08264](https://github.com/forcedotcom/source-tracking/commit/0e08264a9f114bb858972a01928874452f670ed2)) - - +- **deps:** bump @salesforce/core from 7.3.5 to 7.3.6 ([0e08264](https://github.com/forcedotcom/source-tracking/commit/0e08264a9f114bb858972a01928874452f670ed2)) # [6.2.0](https://github.com/forcedotcom/source-tracking/compare/6.0.4...6.2.0) (2024-05-15) - ### Bug Fixes -* force release ([#585](https://github.com/forcedotcom/source-tracking/issues/585)) ([559ab4c](https://github.com/forcedotcom/source-tracking/commit/559ab4c30b41701591c788418dffc87d07def393)) - +- force release ([#585](https://github.com/forcedotcom/source-tracking/issues/585)) ([559ab4c](https://github.com/forcedotcom/source-tracking/commit/559ab4c30b41701591c788418dffc87d07def393)) ### Features -* detect file moves in source tracking ([06fdb1b](https://github.com/forcedotcom/source-tracking/commit/06fdb1b400f5718150569f36c1c3889f1c2fd834)) - - +- detect file moves in source tracking ([06fdb1b](https://github.com/forcedotcom/source-tracking/commit/06fdb1b400f5718150569f36c1c3889f1c2fd834)) ## [6.0.4](https://github.com/forcedotcom/source-tracking/compare/6.0.3...6.0.4) (2024-04-20) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.26.3 to 3.26.4 ([2afd28b](https://github.com/forcedotcom/source-tracking/commit/2afd28bd538e54bf3500a6557d75d4aed4d0de31)) - - +- **deps:** bump @oclif/core from 3.26.3 to 3.26.4 ([2afd28b](https://github.com/forcedotcom/source-tracking/commit/2afd28bd538e54bf3500a6557d75d4aed4d0de31)) ## [6.0.3](https://github.com/forcedotcom/source-tracking/compare/6.0.2...6.0.3) (2024-04-16) - ### Bug Fixes -* **deps:** devScripts update ([#568](https://github.com/forcedotcom/source-tracking/issues/568)) ([73ffa7e](https://github.com/forcedotcom/source-tracking/commit/73ffa7e27c54228a6faa6492d755832bdb1ec2e3)) - - +- **deps:** devScripts update ([#568](https://github.com/forcedotcom/source-tracking/issues/568)) ([73ffa7e](https://github.com/forcedotcom/source-tracking/commit/73ffa7e27c54228a6faa6492d755832bdb1ec2e3)) ## [6.0.2](https://github.com/forcedotcom/source-tracking/compare/6.0.1...6.0.2) (2024-04-13) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.26.0 to 3.26.2 ([827a3f1](https://github.com/forcedotcom/source-tracking/commit/827a3f13ada574b6b88b1ec8bb00fd5be59ebe0c)) - - +- **deps:** bump @oclif/core from 3.26.0 to 3.26.2 ([827a3f1](https://github.com/forcedotcom/source-tracking/commit/827a3f13ada574b6b88b1ec8bb00fd5be59ebe0c)) ## [6.0.1](https://github.com/forcedotcom/source-tracking/compare/6.0.0...6.0.1) (2024-04-13) - ### Bug Fixes -* **deps:** bump @salesforce/core from 7.0.0 to 7.2.0 ([86d36ee](https://github.com/forcedotcom/source-tracking/commit/86d36eed47d11a2dc3daa6b614ef0be56c5ec381)) - - +- **deps:** bump @salesforce/core from 7.0.0 to 7.2.0 ([86d36ee](https://github.com/forcedotcom/source-tracking/commit/86d36eed47d11a2dc3daa6b614ef0be56c5ec381)) # [6.0.0](https://github.com/forcedotcom/source-tracking/compare/5.2.4...6.0.0) (2024-04-10) - -* feat!: core7 (#564) ([d0d8f7b](https://github.com/forcedotcom/source-tracking/commit/d0d8f7b821e155653a6be8b652b77e1b313d4f08)), closes [#564](https://github.com/forcedotcom/source-tracking/issues/564) - +- feat!: core7 (#564) ([d0d8f7b](https://github.com/forcedotcom/source-tracking/commit/d0d8f7b821e155653a6be8b652b77e1b313d4f08)), closes [#564](https://github.com/forcedotcom/source-tracking/issues/564) ### BREAKING CHANGES -* core7, sdr11, jsforce-node - -* chore: node16 module resolution - +- core7, sdr11, jsforce-node +- chore: node16 module resolution ## [5.2.4](https://github.com/forcedotcom/source-tracking/compare/5.2.3...5.2.4) (2024-04-05) - ### Bug Fixes -* interfaces to types, no-param-reassign for windows normalization ([a4be02c](https://github.com/forcedotcom/source-tracking/commit/a4be02c000b09606b0c8b90ba87c5badc5b135fc)) - - +- interfaces to types, no-param-reassign for windows normalization ([a4be02c](https://github.com/forcedotcom/source-tracking/commit/a4be02c000b09606b0c8b90ba87c5badc5b135fc)) ## [5.2.3](https://github.com/forcedotcom/source-tracking/compare/5.2.2...5.2.3) (2024-04-05) - ### Bug Fixes -* show iso-git err qty in logs ([#559](https://github.com/forcedotcom/source-tracking/issues/559)) ([09b5b75](https://github.com/forcedotcom/source-tracking/commit/09b5b75e2195f3622154822410d9dbb42a418f37)) - - +- show iso-git err qty in logs ([#559](https://github.com/forcedotcom/source-tracking/issues/559)) ([09b5b75](https://github.com/forcedotcom/source-tracking/commit/09b5b75e2195f3622154822410d9dbb42a418f37)) ## [5.2.2](https://github.com/forcedotcom/source-tracking/compare/5.2.1...5.2.2) (2024-03-30) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 10.6.1 to 10.7.0 ([c15fef3](https://github.com/forcedotcom/source-tracking/commit/c15fef3428daf33540a8fb795e36981487cabfad)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 10.6.1 to 10.7.0 ([c15fef3](https://github.com/forcedotcom/source-tracking/commit/c15fef3428daf33540a8fb795e36981487cabfad)) ## [5.2.1](https://github.com/forcedotcom/source-tracking/compare/5.2.0...5.2.1) (2024-03-29) - ### Bug Fixes -* **deps:** bump fast-xml-parser from 4.3.5 to 4.3.6 ([6c93156](https://github.com/forcedotcom/source-tracking/commit/6c9315637bec22a6f6ed6cd7c07c32c1b1344717)) - - +- **deps:** bump fast-xml-parser from 4.3.5 to 4.3.6 ([6c93156](https://github.com/forcedotcom/source-tracking/commit/6c9315637bec22a6f6ed6cd7c07c32c1b1344717)) # [5.2.0](https://github.com/forcedotcom/source-tracking/compare/5.1.18...5.2.0) (2024-03-28) - ### Bug Fixes -* use real types for UT ([0905b07](https://github.com/forcedotcom/source-tracking/commit/0905b07b7a081a6acb8677bc84b3b25995dc1cf8)) - +- use real types for UT ([0905b07](https://github.com/forcedotcom/source-tracking/commit/0905b07b7a081a6acb8677bc84b3b25995dc1cf8)) ### Features -* bump stl for customRegistries ([597f5cb](https://github.com/forcedotcom/source-tracking/commit/597f5cb2d0ee320fa78f7727c576fc466b94b202)) -* custom registry support ([b0f2f35](https://github.com/forcedotcom/source-tracking/commit/b0f2f35351d6ab812c79eda24348ad8bbc5915c6)) -* pass in registry ([164cca6](https://github.com/forcedotcom/source-tracking/commit/164cca6a8171036810d5ddb7f13c454be0ce6646)) - - +- bump stl for customRegistries ([597f5cb](https://github.com/forcedotcom/source-tracking/commit/597f5cb2d0ee320fa78f7727c576fc466b94b202)) +- custom registry support ([b0f2f35](https://github.com/forcedotcom/source-tracking/commit/b0f2f35351d6ab812c79eda24348ad8bbc5915c6)) +- pass in registry ([164cca6](https://github.com/forcedotcom/source-tracking/commit/164cca6a8171036810d5ddb7f13c454be0ce6646)) ## [5.1.18](https://github.com/forcedotcom/source-tracking/compare/5.1.17...5.1.18) (2024-03-19) - ### Bug Fixes -* bump sdr to 10.5.3 ([fa8e729](https://github.com/forcedotcom/source-tracking/commit/fa8e729b32151d6287f0281746e118e25da0e34c)) - - +- bump sdr to 10.5.3 ([fa8e729](https://github.com/forcedotcom/source-tracking/commit/fa8e729b32151d6287f0281746e118e25da0e34c)) ## [5.1.17](https://github.com/forcedotcom/source-tracking/compare/5.1.16...5.1.17) (2024-03-17) - ### Bug Fixes -* **deps:** bump @salesforce/core from 6.7.0 to 6.7.1 ([923c5b1](https://github.com/forcedotcom/source-tracking/commit/923c5b1090075c6a8846a4c9cc5ecd1da8a2073b)) - - +- **deps:** bump @salesforce/core from 6.7.0 to 6.7.1 ([923c5b1](https://github.com/forcedotcom/source-tracking/commit/923c5b1090075c6a8846a4c9cc5ecd1da8a2073b)) ## [5.1.16](https://github.com/forcedotcom/source-tracking/compare/5.1.15...5.1.16) (2024-03-16) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.23.0 to 3.25.2 ([426d164](https://github.com/forcedotcom/source-tracking/commit/426d16433f7444556e3bca96f91b9f9ae3b82013)) - - +- **deps:** bump @oclif/core from 3.23.0 to 3.25.2 ([426d164](https://github.com/forcedotcom/source-tracking/commit/426d16433f7444556e3bca96f91b9f9ae3b82013)) ## [5.1.15](https://github.com/forcedotcom/source-tracking/compare/5.1.14...5.1.15) (2024-03-16) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 10.5.1 to 10.5.2 ([eeb7558](https://github.com/forcedotcom/source-tracking/commit/eeb75580742530a0835fcd2b0cc79ac265fd5280)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 10.5.1 to 10.5.2 ([eeb7558](https://github.com/forcedotcom/source-tracking/commit/eeb75580742530a0835fcd2b0cc79ac265fd5280)) ## [5.1.14](https://github.com/forcedotcom/source-tracking/compare/5.1.13...5.1.14) (2024-03-09) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.22.0 to 3.23.0 ([a3e6a95](https://github.com/forcedotcom/source-tracking/commit/a3e6a9534adf4049ebee4e3fcb84dec64e5bd964)) - - +- **deps:** bump @oclif/core from 3.22.0 to 3.23.0 ([a3e6a95](https://github.com/forcedotcom/source-tracking/commit/a3e6a9534adf4049ebee4e3fcb84dec64e5bd964)) ## [5.1.13](https://github.com/forcedotcom/source-tracking/compare/5.1.12...5.1.13) (2024-03-06) - ### Bug Fixes -* **deps:** bump ip from 1.1.8 to 1.1.9 ([3978964](https://github.com/forcedotcom/source-tracking/commit/397896408ba4e860c51e69ca90f1fabadd0c6100)) - - +- **deps:** bump ip from 1.1.8 to 1.1.9 ([3978964](https://github.com/forcedotcom/source-tracking/commit/397896408ba4e860c51e69ca90f1fabadd0c6100)) ## [5.1.12](https://github.com/forcedotcom/source-tracking/compare/5.1.11...5.1.12) (2024-03-05) - ### Bug Fixes -* **deps:** bump @salesforce/core from 6.5.1 to 6.7.0 ([#545](https://github.com/forcedotcom/source-tracking/issues/545)) ([2254118](https://github.com/forcedotcom/source-tracking/commit/22541183aa9f10d1f89c7e57b1de33a1f4c5a570)) - - +- **deps:** bump @salesforce/core from 6.5.1 to 6.7.0 ([#545](https://github.com/forcedotcom/source-tracking/issues/545)) ([2254118](https://github.com/forcedotcom/source-tracking/commit/22541183aa9f10d1f89c7e57b1de33a1f4c5a570)) ## [5.1.11](https://github.com/forcedotcom/source-tracking/compare/5.1.10...5.1.11) (2024-02-03) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.18.1 to 3.18.2 ([8460e61](https://github.com/forcedotcom/source-tracking/commit/8460e61b95ae12cba863dea8922d83e924f964a2)) - - +- **deps:** bump @oclif/core from 3.18.1 to 3.18.2 ([8460e61](https://github.com/forcedotcom/source-tracking/commit/8460e61b95ae12cba863dea8922d83e924f964a2)) ## [5.1.10](https://github.com/forcedotcom/source-tracking/compare/5.1.9...5.1.10) (2024-02-03) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve ([cec897b](https://github.com/forcedotcom/source-tracking/commit/cec897b06c345b0a4983c78930c17a2e00b1b86e)) - - +- **deps:** bump @salesforce/source-deploy-retrieve ([cec897b](https://github.com/forcedotcom/source-tracking/commit/cec897b06c345b0a4983c78930c17a2e00b1b86e)) ## [5.1.9](https://github.com/forcedotcom/source-tracking/compare/5.1.8...5.1.9) (2024-01-27) - ### Bug Fixes -* **deps:** bump @salesforce/core from 6.4.7 to 6.5.1 ([6c03ba9](https://github.com/forcedotcom/source-tracking/commit/6c03ba939e2b9ed1131c6f21920d8ec9b7b7704c)) - - +- **deps:** bump @salesforce/core from 6.4.7 to 6.5.1 ([6c03ba9](https://github.com/forcedotcom/source-tracking/commit/6c03ba939e2b9ed1131c6f21920d8ec9b7b7704c)) ## [5.1.8](https://github.com/forcedotcom/source-tracking/compare/5.1.7...5.1.8) (2024-01-27) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve ([be6fa25](https://github.com/forcedotcom/source-tracking/commit/be6fa25ee6b2c371c0be1b47f54b2be12f1412a6)) - - +- **deps:** bump @salesforce/source-deploy-retrieve ([be6fa25](https://github.com/forcedotcom/source-tracking/commit/be6fa25ee6b2c371c0be1b47f54b2be12f1412a6)) ## [5.1.7](https://github.com/forcedotcom/source-tracking/compare/5.1.6...5.1.7) (2024-01-23) - ### Bug Fixes -* bump SDR to 10.2.12 ([c6bef82](https://github.com/forcedotcom/source-tracking/commit/c6bef828050ff8a8b118f82177979ddfcb508c67)) - - +- bump SDR to 10.2.12 ([c6bef82](https://github.com/forcedotcom/source-tracking/commit/c6bef828050ff8a8b118f82177979ddfcb508c67)) ## [5.1.6](https://github.com/forcedotcom/source-tracking/compare/5.1.5...5.1.6) (2024-01-20) - ### Bug Fixes -* **deps:** bump ts-retry-promise from 0.7.1 to 0.8.0 ([fd06561](https://github.com/forcedotcom/source-tracking/commit/fd0656127ec7d1dca518cae93e71ac184658e9f2)) - - +- **deps:** bump ts-retry-promise from 0.7.1 to 0.8.0 ([fd06561](https://github.com/forcedotcom/source-tracking/commit/fd0656127ec7d1dca518cae93e71ac184658e9f2)) ## [5.1.5](https://github.com/forcedotcom/source-tracking/compare/5.1.4...5.1.5) (2024-01-18) - ### Bug Fixes -* catch URI Malformed error ([c0c80f7](https://github.com/forcedotcom/source-tracking/commit/c0c80f7a3b228f0a7ca2dcd291ce3cf382ed1772)) - - +- catch URI Malformed error ([c0c80f7](https://github.com/forcedotcom/source-tracking/commit/c0c80f7a3b228f0a7ca2dcd291ce3cf382ed1772)) ## [5.1.4](https://github.com/forcedotcom/source-tracking/compare/5.1.3...5.1.4) (2024-01-16) - ### Bug Fixes -* clearer library message ([#530](https://github.com/forcedotcom/source-tracking/issues/530)) ([4786cd8](https://github.com/forcedotcom/source-tracking/commit/4786cd83f5b004e54d8345693b557552e8d4142c)) - - +- clearer library message ([#530](https://github.com/forcedotcom/source-tracking/issues/530)) ([4786cd8](https://github.com/forcedotcom/source-tracking/commit/4786cd83f5b004e54d8345693b557552e8d4142c)) ## [5.1.3](https://github.com/forcedotcom/source-tracking/compare/5.1.2...5.1.3) (2023-12-11) - ### Bug Fixes -* **deps:** devScripts update ([#518](https://github.com/forcedotcom/source-tracking/issues/518)) ([0c628c2](https://github.com/forcedotcom/source-tracking/commit/0c628c2fd8940b9fc30734fd505c576f2151593c)) - - +- **deps:** devScripts update ([#518](https://github.com/forcedotcom/source-tracking/issues/518)) ([0c628c2](https://github.com/forcedotcom/source-tracking/commit/0c628c2fd8940b9fc30734fd505c576f2151593c)) ## [5.1.2](https://github.com/forcedotcom/source-tracking/compare/5.1.1...5.1.2) (2023-12-02) - ### Bug Fixes -* **deps:** bump @salesforce/core from 6.2.0 to 6.2.2 ([d01cad7](https://github.com/forcedotcom/source-tracking/commit/d01cad7fa6338d163398051c1a1f50671e5f0d23)) - - +- **deps:** bump @salesforce/core from 6.2.0 to 6.2.2 ([d01cad7](https://github.com/forcedotcom/source-tracking/commit/d01cad7fa6338d163398051c1a1f50671e5f0d23)) ## [5.1.1](https://github.com/forcedotcom/source-tracking/compare/5.1.0...5.1.1) (2023-12-02) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 10.0.2 to 10.0.3 ([744473c](https://github.com/forcedotcom/source-tracking/commit/744473c86f0455c41100ba46f8e3438abd99e5c3)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 10.0.2 to 10.0.3 ([744473c](https://github.com/forcedotcom/source-tracking/commit/744473c86f0455c41100ba46f8e3438abd99e5c3)) # [5.1.0](https://github.com/forcedotcom/source-tracking/compare/5.0.1...5.1.0) (2023-11-28) - ### Features -* warn about missing sourceMembers ([#511](https://github.com/forcedotcom/source-tracking/issues/511)) ([950d15c](https://github.com/forcedotcom/source-tracking/commit/950d15cd32a587fe3c330b01c14bca7ee4387a42)) - - +- warn about missing sourceMembers ([#511](https://github.com/forcedotcom/source-tracking/issues/511)) ([950d15c](https://github.com/forcedotcom/source-tracking/commit/950d15cd32a587fe3c330b01c14bca7ee4387a42)) ## [5.0.1](https://github.com/forcedotcom/source-tracking/compare/5.0.0...5.0.1) (2023-11-18) - ### Bug Fixes -* **deps:** bump @salesforce/core from 6.1.0 to 6.1.3 ([f9b4342](https://github.com/forcedotcom/source-tracking/commit/f9b4342d2d6e112ae46046ad66fafd9140be05c3)) - - +- **deps:** bump @salesforce/core from 6.1.0 to 6.1.3 ([f9b4342](https://github.com/forcedotcom/source-tracking/commit/f9b4342d2d6e112ae46046ad66fafd9140be05c3)) # [5.0.0](https://github.com/forcedotcom/source-tracking/compare/4.4.3...5.0.0) (2023-11-15) - -* feat!: use core 6 ([40d8565](https://github.com/forcedotcom/source-tracking/commit/40d8565b2fdbd0fe9329e608fbcba2d852714787)) - +- feat!: use core 6 ([40d8565](https://github.com/forcedotcom/source-tracking/commit/40d8565b2fdbd0fe9329e608fbcba2d852714787)) ### BREAKING CHANGES -* core6 types for configFile - -* feat!: node18 -* require node 18+ - +- core6 types for configFile +- feat!: node18 +- require node 18+ ## [4.4.3](https://github.com/forcedotcom/source-tracking/compare/4.4.2...4.4.3) (2023-11-12) - ### Bug Fixes -* **deps:** bump @salesforce/core from 5.3.18 to 5.3.20 ([e308f14](https://github.com/forcedotcom/source-tracking/commit/e308f14566a5db0c28eb90dfb2b7dc6a7094cd7b)) - - +- **deps:** bump @salesforce/core from 5.3.18 to 5.3.20 ([e308f14](https://github.com/forcedotcom/source-tracking/commit/e308f14566a5db0c28eb90dfb2b7dc6a7094cd7b)) ## [4.4.2](https://github.com/forcedotcom/source-tracking/compare/4.4.1...4.4.2) (2023-11-11) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.10.6 to 3.10.8 ([cb1a690](https://github.com/forcedotcom/source-tracking/commit/cb1a6908a193c1d674bf1ba01c96b3dd13870a8f)) - - +- **deps:** bump @oclif/core from 3.10.6 to 3.10.8 ([cb1a690](https://github.com/forcedotcom/source-tracking/commit/cb1a6908a193c1d674bf1ba01c96b3dd13870a8f)) ## [4.4.1](https://github.com/forcedotcom/source-tracking/compare/4.4.0...4.4.1) (2023-11-11) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 9.8.4 to 9.8.5 ([1cbd39c](https://github.com/forcedotcom/source-tracking/commit/1cbd39c5f4c5a4f2983e47a76563f7e94d731580)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 9.8.4 to 9.8.5 ([1cbd39c](https://github.com/forcedotcom/source-tracking/commit/1cbd39c5f4c5a4f2983e47a76563f7e94d731580)) # [4.4.0](https://github.com/forcedotcom/source-tracking/compare/4.3.0...4.4.0) (2023-11-07) - ### Features -* performance marks ([f7f495f](https://github.com/forcedotcom/source-tracking/commit/f7f495f2eeb3392eb784f85f5d4c2ff1e6aabe42)) - - +- performance marks ([f7f495f](https://github.com/forcedotcom/source-tracking/commit/f7f495f2eeb3392eb784f85f5d4c2ff1e6aabe42)) # [4.3.0](https://github.com/forcedotcom/source-tracking/compare/4.2.20...4.3.0) (2023-11-06) - ### Features -* no configFile in remoteSourceTracking ([f347144](https://github.com/forcedotcom/source-tracking/commit/f347144b3f86f9516edf533830c94361c1b5a277)) - - +- no configFile in remoteSourceTracking ([f347144](https://github.com/forcedotcom/source-tracking/commit/f347144b3f86f9516edf533830c94361c1b5a277)) ## [4.2.20](https://github.com/forcedotcom/source-tracking/compare/4.2.19...4.2.20) (2023-10-31) - ### Bug Fixes -* bump sdr to 9.8.1 ([b73a6bf](https://github.com/forcedotcom/source-tracking/commit/b73a6bffbb0430be1fef743c1442d338ef1e15e2)) - - +- bump sdr to 9.8.1 ([b73a6bf](https://github.com/forcedotcom/source-tracking/commit/b73a6bffbb0430be1fef743c1442d338ef1e15e2)) ## [4.2.19](https://github.com/forcedotcom/source-tracking/compare/4.2.18...4.2.19) (2023-10-21) - ### Bug Fixes -* **deps:** bump @salesforce/kit from 3.0.13 to 3.0.14 ([7be2683](https://github.com/forcedotcom/source-tracking/commit/7be2683c5c9f613b23d4f796e67c7b46d8c66ba6)) - - +- **deps:** bump @salesforce/kit from 3.0.13 to 3.0.14 ([7be2683](https://github.com/forcedotcom/source-tracking/commit/7be2683c5c9f613b23d4f796e67c7b46d8c66ba6)) ## [4.2.18](https://github.com/forcedotcom/source-tracking/compare/4.2.17...4.2.18) (2023-10-18) - ### Bug Fixes -* undefined handling in remote tracking ([#489](https://github.com/forcedotcom/source-tracking/issues/489)) ([eacfeac](https://github.com/forcedotcom/source-tracking/commit/eacfeac976e32afd720b8aa1dfc945d63d8a5a7a)) - - +- undefined handling in remote tracking ([#489](https://github.com/forcedotcom/source-tracking/issues/489)) ([eacfeac](https://github.com/forcedotcom/source-tracking/commit/eacfeac976e32afd720b8aa1dfc945d63d8a5a7a)) ## [4.2.17](https://github.com/forcedotcom/source-tracking/compare/4.2.16...4.2.17) (2023-10-16) - ### Bug Fixes -* bump to SDR 9.7.25 ([1dc60cc](https://github.com/forcedotcom/source-tracking/commit/1dc60ccb4715989ec81d3ba50a5a42758561cd1b)) - - +- bump to SDR 9.7.25 ([1dc60cc](https://github.com/forcedotcom/source-tracking/commit/1dc60ccb4715989ec81d3ba50a5a42758561cd1b)) ## [4.2.16](https://github.com/forcedotcom/source-tracking/compare/4.2.15...4.2.16) (2023-10-03) - ### Bug Fixes -* stl uses project api version ([268df38](https://github.com/forcedotcom/source-tracking/commit/268df38e30f1638cb213c27d386b03d279796ea9)) - - +- stl uses project api version ([268df38](https://github.com/forcedotcom/source-tracking/commit/268df38e30f1638cb213c27d386b03d279796ea9)) ## [4.2.15](https://github.com/forcedotcom/source-tracking/compare/4.2.14...4.2.15) (2023-09-29) - ### Bug Fixes -* avoid duplicate STL listeners when multiple instances exist ([23044f1](https://github.com/forcedotcom/source-tracking/commit/23044f1101451abbdfc938637d1aea04c21458bf)) - - +- avoid duplicate STL listeners when multiple instances exist ([23044f1](https://github.com/forcedotcom/source-tracking/commit/23044f1101451abbdfc938637d1aea04c21458bf)) ## [4.2.14](https://github.com/forcedotcom/source-tracking/compare/4.2.13...4.2.14) (2023-09-23) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 9.7.13 to 9.7.15 ([4dbabe7](https://github.com/forcedotcom/source-tracking/commit/4dbabe79756b3cc63a53746ad4773a1d4a7d341f)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 9.7.13 to 9.7.15 ([4dbabe7](https://github.com/forcedotcom/source-tracking/commit/4dbabe79756b3cc63a53746ad4773a1d4a7d341f)) ## [4.2.13](https://github.com/forcedotcom/source-tracking/compare/4.2.12...4.2.13) (2023-09-16) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 9.7.8 to 9.7.13 ([0f8f68d](https://github.com/forcedotcom/source-tracking/commit/0f8f68dfc1e93f755e630077ba02783ebd03308a)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 9.7.8 to 9.7.13 ([0f8f68d](https://github.com/forcedotcom/source-tracking/commit/0f8f68dfc1e93f755e630077ba02783ebd03308a)) ## [4.2.12](https://github.com/forcedotcom/source-tracking/compare/4.2.11...4.2.12) (2023-08-29) - ### Bug Fixes -* catch isogit internal error ([032103f](https://github.com/forcedotcom/source-tracking/commit/032103f85c6286b5659082caf0f82185115e26b1)) - - +- catch isogit internal error ([032103f](https://github.com/forcedotcom/source-tracking/commit/032103f85c6286b5659082caf0f82185115e26b1)) ## [4.2.11](https://github.com/forcedotcom/source-tracking/compare/4.2.10...4.2.11) (2023-08-21) - ### Bug Fixes -* bump to lastest SDR and merge main ([3d62d11](https://github.com/forcedotcom/source-tracking/commit/3d62d11ac29ded0b5b915b6fb9487a3dd4f79fb6)) -* prefer const ([c233e2c](https://github.com/forcedotcom/source-tracking/commit/c233e2c88c947fe9b95320211e0af35e7b7b7243)) -* use decodeURIComponent() rather than decodeURI() ([2d42c6f](https://github.com/forcedotcom/source-tracking/commit/2d42c6fd895fda140014696c794f855b1921f7dc)) -* use latest SDR lib and bump cli-plugins-testkit ([5ce7285](https://github.com/forcedotcom/source-tracking/commit/5ce7285b981a5797aa82af131c9c034518a660cd)) - - +- bump to lastest SDR and merge main ([3d62d11](https://github.com/forcedotcom/source-tracking/commit/3d62d11ac29ded0b5b915b6fb9487a3dd4f79fb6)) +- prefer const ([c233e2c](https://github.com/forcedotcom/source-tracking/commit/c233e2c88c947fe9b95320211e0af35e7b7b7243)) +- use decodeURIComponent() rather than decodeURI() ([2d42c6f](https://github.com/forcedotcom/source-tracking/commit/2d42c6fd895fda140014696c794f855b1921f7dc)) +- use latest SDR lib and bump cli-plugins-testkit ([5ce7285](https://github.com/forcedotcom/source-tracking/commit/5ce7285b981a5797aa82af131c9c034518a660cd)) ## [4.2.10](https://github.com/forcedotcom/source-tracking/compare/4.2.9...4.2.10) (2023-08-07) - ### Bug Fixes -* **deps:** core5 ([#456](https://github.com/forcedotcom/source-tracking/issues/456)) ([13420ca](https://github.com/forcedotcom/source-tracking/commit/13420ca5397c1d9262457233efc4f131c7321c3a)) - - +- **deps:** core5 ([#456](https://github.com/forcedotcom/source-tracking/issues/456)) ([13420ca](https://github.com/forcedotcom/source-tracking/commit/13420ca5397c1d9262457233efc4f131c7321c3a)) ## [4.2.9](https://github.com/forcedotcom/source-tracking/compare/4.2.8...4.2.9) (2023-07-25) - ### Bug Fixes -* always ask at least once for sourceMembers ([3dc275c](https://github.com/forcedotcom/source-tracking/commit/3dc275cac57a184fecff7b9ac0971025f7fa725f)) - - +- always ask at least once for sourceMembers ([3dc275c](https://github.com/forcedotcom/source-tracking/commit/3dc275cac57a184fecff7b9ac0971025f7fa725f)) ## [4.2.8](https://github.com/forcedotcom/source-tracking/compare/4.2.7...4.2.8) (2023-07-23) - ### Bug Fixes -* **deps:** bump semver from 5.7.1 to 5.7.2 ([270d617](https://github.com/forcedotcom/source-tracking/commit/270d6174650e2ba180865a9aff4124a2fd09cd33)) - - +- **deps:** bump semver from 5.7.1 to 5.7.2 ([270d617](https://github.com/forcedotcom/source-tracking/commit/270d6174650e2ba180865a9aff4124a2fd09cd33)) ## [4.2.7](https://github.com/forcedotcom/source-tracking/compare/4.2.6...4.2.7) (2023-07-22) - ### Bug Fixes -* **deps:** bump word-wrap from 1.2.3 to 1.2.4 ([1c8fb4a](https://github.com/forcedotcom/source-tracking/commit/1c8fb4a18e0308acd321cb2f2178666a1d9c5d96)) - - +- **deps:** bump word-wrap from 1.2.3 to 1.2.4 ([1c8fb4a](https://github.com/forcedotcom/source-tracking/commit/1c8fb4a18e0308acd321cb2f2178666a1d9c5d96)) ## [4.2.6](https://github.com/forcedotcom/source-tracking/compare/4.2.5...4.2.6) (2023-07-20) - ### Bug Fixes -* reduce sourceMember polling timeouts ([8e03967](https://github.com/forcedotcom/source-tracking/commit/8e03967fa3f09c1e07bccbfe2039f04536bfcc64)) - - +- reduce sourceMember polling timeouts ([8e03967](https://github.com/forcedotcom/source-tracking/commit/8e03967fa3f09c1e07bccbfe2039f04536bfcc64)) ## [4.2.5](https://github.com/forcedotcom/source-tracking/compare/4.2.4...4.2.5) (2023-07-06) - ### Bug Fixes -* bump SDR to 9.3.2 for latest registry ([6f7585d](https://github.com/forcedotcom/source-tracking/commit/6f7585ddd8a76df5583e7ba5c2e0fb7e71c7c1d3)) - - +- bump SDR to 9.3.2 for latest registry ([6f7585d](https://github.com/forcedotcom/source-tracking/commit/6f7585ddd8a76df5583e7ba5c2e0fb7e71c7c1d3)) ## [4.2.4](https://github.com/forcedotcom/source-tracking/compare/4.2.3...4.2.4) (2023-07-01) - ### Bug Fixes -* **deps:** bump @salesforce/core from 4.3.2 to 4.3.5 ([ccf5490](https://github.com/forcedotcom/source-tracking/commit/ccf54907219ac50cbe13ab68234c1b1fe5d952ad)) - - +- **deps:** bump @salesforce/core from 4.3.2 to 4.3.5 ([ccf5490](https://github.com/forcedotcom/source-tracking/commit/ccf54907219ac50cbe13ab68234c1b1fe5d952ad)) ## [4.2.3](https://github.com/forcedotcom/source-tracking/compare/4.2.2...4.2.3) (2023-07-01) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 9.2.6 to 9.3.0 ([1d46710](https://github.com/forcedotcom/source-tracking/commit/1d46710dd0698b9f731c420d658f95883bb489e5)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 9.2.6 to 9.3.0 ([1d46710](https://github.com/forcedotcom/source-tracking/commit/1d46710dd0698b9f731c420d658f95883bb489e5)) ## [4.2.2](https://github.com/forcedotcom/source-tracking/compare/4.2.1...4.2.2) (2023-06-26) - ### Bug Fixes -* decode filepaths when comparing to the RSST for accurate results ([#421](https://github.com/forcedotcom/source-tracking/issues/421)) ([59c2d56](https://github.com/forcedotcom/source-tracking/commit/59c2d56574a7eb6141108478ed626bfa7547cbe8)) - - +- decode filepaths when comparing to the RSST for accurate results ([#421](https://github.com/forcedotcom/source-tracking/issues/421)) ([59c2d56](https://github.com/forcedotcom/source-tracking/commit/59c2d56574a7eb6141108478ed626bfa7547cbe8)) ## [4.2.1](https://github.com/forcedotcom/source-tracking/compare/4.2.0...4.2.1) (2023-06-16) - ### Bug Fixes -* use previous iso-git version ([e5462be](https://github.com/forcedotcom/source-tracking/commit/e5462be1f9080775b18af24467bc533f3fefe931)) - - +- use previous iso-git version ([e5462be](https://github.com/forcedotcom/source-tracking/commit/e5462be1f9080775b18af24467bc533f3fefe931)) # [4.2.0](https://github.com/forcedotcom/source-tracking/compare/4.1.3...4.2.0) (2023-06-14) - ### Features -* compile inlines messages ([4b3dcf7](https://github.com/forcedotcom/source-tracking/commit/4b3dcf724266d98628b47bb3e72fcb614d8aa873)) - - +- compile inlines messages ([4b3dcf7](https://github.com/forcedotcom/source-tracking/commit/4b3dcf724266d98628b47bb3e72fcb614d8aa873)) ## [4.1.3](https://github.com/forcedotcom/source-tracking/compare/4.1.2...4.1.3) (2023-06-08) - ### Bug Fixes -* ignore remote changes using hypothetical paths ([1c61e6e](https://github.com/forcedotcom/source-tracking/commit/1c61e6ec1053bd9dd43db0c886be7bb6064809ae)) - - +- ignore remote changes using hypothetical paths ([1c61e6e](https://github.com/forcedotcom/source-tracking/commit/1c61e6ec1053bd9dd43db0c886be7bb6064809ae)) ## [4.1.2](https://github.com/forcedotcom/source-tracking/compare/4.1.1...4.1.2) (2023-06-07) - ### Bug Fixes -* **deps:** bump isomorphic-git from 1.23.0 to 1.24.0 ([e6e459d](https://github.com/forcedotcom/source-tracking/commit/e6e459d79b230728dba34e99caca5f705f4033bf)) - - +- **deps:** bump isomorphic-git from 1.23.0 to 1.24.0 ([e6e459d](https://github.com/forcedotcom/source-tracking/commit/e6e459d79b230728dba34e99caca5f705f4033bf)) ## [4.1.1](https://github.com/forcedotcom/source-tracking/compare/4.1.0...4.1.1) (2023-06-05) - ### Bug Fixes -* use SF prefixed env vars, add UTs, SDR 9, core 4 ([3e4aba6](https://github.com/forcedotcom/source-tracking/commit/3e4aba615887ab633372177639e43d59fcb90048)) - - +- use SF prefixed env vars, add UTs, SDR 9, core 4 ([3e4aba6](https://github.com/forcedotcom/source-tracking/commit/3e4aba615887ab633372177639e43d59fcb90048)) # [4.1.0](https://github.com/forcedotcom/source-tracking/compare/3.1.5...4.1.0) (2023-05-31) - ### Features -* drop node 14/15 support, core 4, sdr9 ([8a5895f](https://github.com/forcedotcom/source-tracking/commit/8a5895f68a3ff54ef2e5d5bf76cb2bf71df5dd43)) - - +- drop node 14/15 support, core 4, sdr9 ([8a5895f](https://github.com/forcedotcom/source-tracking/commit/8a5895f68a3ff54ef2e5d5bf76cb2bf71df5dd43)) ## [3.1.5](https://github.com/forcedotcom/source-tracking/compare/3.1.4...3.1.5) (2023-05-18) - ### Bug Fixes -* pull all deleted CLs will delete file ([#391](https://github.com/forcedotcom/source-tracking/issues/391)) ([f084fb0](https://github.com/forcedotcom/source-tracking/commit/f084fb0cc9700a03d4caf5bae808f58ffc75736e)), closes [#392](https://github.com/forcedotcom/source-tracking/issues/392) - - +- pull all deleted CLs will delete file ([#391](https://github.com/forcedotcom/source-tracking/issues/391)) ([f084fb0](https://github.com/forcedotcom/source-tracking/commit/f084fb0cc9700a03d4caf5bae808f58ffc75736e)), closes [#392](https://github.com/forcedotcom/source-tracking/issues/392) ## [3.1.4](https://github.com/forcedotcom/source-tracking/compare/3.1.3...3.1.4) (2023-05-17) - ### Bug Fixes -* deletes singular CL when from CLs when specified ([#381](https://github.com/forcedotcom/source-tracking/issues/381)) ([26fbdb0](https://github.com/forcedotcom/source-tracking/commit/26fbdb0cede99b7e327630482eb3588bc0aeecec)), closes [#388](https://github.com/forcedotcom/source-tracking/issues/388) - - +- deletes singular CL when from CLs when specified ([#381](https://github.com/forcedotcom/source-tracking/issues/381)) ([26fbdb0](https://github.com/forcedotcom/source-tracking/commit/26fbdb0cede99b7e327630482eb3588bc0aeecec)), closes [#388](https://github.com/forcedotcom/source-tracking/issues/388) ## [3.1.3](https://github.com/forcedotcom/source-tracking/compare/3.1.2...3.1.3) (2023-05-17) - ### Bug Fixes -* **deps:** bump vm2 from 3.9.16 to 3.9.19 ([0b114b9](https://github.com/forcedotcom/source-tracking/commit/0b114b93cfa156bd2dbcda7285d0575749b03f76)) - - +- **deps:** bump vm2 from 3.9.16 to 3.9.19 ([0b114b9](https://github.com/forcedotcom/source-tracking/commit/0b114b93cfa156bd2dbcda7285d0575749b03f76)) ## [3.1.2](https://github.com/forcedotcom/source-tracking/compare/3.1.1...3.1.2) (2023-05-12) - ### Bug Fixes -* enable tsconfig strict null checks in tests ([#372](https://github.com/forcedotcom/source-tracking/issues/372)) ([e4c7b60](https://github.com/forcedotcom/source-tracking/commit/e4c7b60278d86ef54c095031f1502f0fa34ea7f7)) - - +- enable tsconfig strict null checks in tests ([#372](https://github.com/forcedotcom/source-tracking/issues/372)) ([e4c7b60](https://github.com/forcedotcom/source-tracking/commit/e4c7b60278d86ef54c095031f1502f0fa34ea7f7)) ## [3.1.1](https://github.com/forcedotcom/source-tracking/compare/3.1.0...3.1.1) (2023-04-15) - ### Bug Fixes -* **deps:** bump isomorphic-git from 1.17.0 to 1.23.0 ([5617b6a](https://github.com/forcedotcom/source-tracking/commit/5617b6a6e758410dc28608227e9ff82f3d8860fb)) - - +- **deps:** bump isomorphic-git from 1.17.0 to 1.23.0 ([5617b6a](https://github.com/forcedotcom/source-tracking/commit/5617b6a6e758410dc28608227e9ff82f3d8860fb)) # [3.1.0](https://github.com/forcedotcom/source-tracking/compare/2.2.28...3.1.0) (2023-04-13) - ### Bug Fixes -* no tracking on failed deploys ([380d7f8](https://github.com/forcedotcom/source-tracking/commit/380d7f8ae7ef672a4b4f7bdc19dd9e03c29f7698)) - +- no tracking on failed deploys ([380d7f8](https://github.com/forcedotcom/source-tracking/commit/380d7f8ae7ef672a4b4f7bdc19dd9e03c29f7698)) ### Features -* remove compatibility code ([0a4c773](https://github.com/forcedotcom/source-tracking/commit/0a4c773ecd30bf13ddc01741e9fa7c4319c1a2d4)) - - +- remove compatibility code ([0a4c773](https://github.com/forcedotcom/source-tracking/commit/0a4c773ecd30bf13ddc01741e9fa7c4319c1a2d4)) ## [2.2.28](https://github.com/forcedotcom/source-tracking/compare/2.2.27...2.2.28) (2023-04-12) - ### Bug Fixes -* prevent warnings for picklistValue ([a75425d](https://github.com/forcedotcom/source-tracking/commit/a75425ddfc9d26d0f4858edb51b4f76fc7097897)) - - +- prevent warnings for picklistValue ([a75425d](https://github.com/forcedotcom/source-tracking/commit/a75425ddfc9d26d0f4858edb51b4f76fc7097897)) ## [2.2.27](https://github.com/forcedotcom/source-tracking/compare/2.2.26...2.2.27) (2023-04-11) - ### Bug Fixes -* bump SDR and core libs ([32ba81e](https://github.com/forcedotcom/source-tracking/commit/32ba81e5cd768b35a977299879b24f60d42b9578)) - - +- bump SDR and core libs ([32ba81e](https://github.com/forcedotcom/source-tracking/commit/32ba81e5cd768b35a977299879b24f60d42b9578)) ## [2.2.26](https://github.com/forcedotcom/source-tracking/compare/2.2.25...2.2.26) (2023-03-19) - ### Bug Fixes -* **deps:** bump graceful-fs from 4.2.10 to 4.2.11 ([09eef39](https://github.com/forcedotcom/source-tracking/commit/09eef392e331ebc7e5b8b25aa788686e51fc2c51)) - - +- **deps:** bump graceful-fs from 4.2.10 to 4.2.11 ([09eef39](https://github.com/forcedotcom/source-tracking/commit/09eef392e331ebc7e5b8b25aa788686e51fc2c51)) ## [2.2.25](https://github.com/forcedotcom/source-tracking/compare/2.2.24...2.2.25) (2023-03-18) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 7.11.3 to 7.12.0 ([bfc19df](https://github.com/forcedotcom/source-tracking/commit/bfc19df87f2dfc53be523612fce9c3e2c0739679)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 7.11.3 to 7.12.0 ([bfc19df](https://github.com/forcedotcom/source-tracking/commit/bfc19df87f2dfc53be523612fce9c3e2c0739679)) ## [2.2.24](https://github.com/forcedotcom/source-tracking/compare/2.2.23...2.2.24) (2023-03-11) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 7.10.1 to 7.11.3 ([80983da](https://github.com/forcedotcom/source-tracking/commit/80983da7151f06a967035ab2b33625666de8004a)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 7.10.1 to 7.11.3 ([80983da](https://github.com/forcedotcom/source-tracking/commit/80983da7151f06a967035ab2b33625666de8004a)) ## [2.2.23](https://github.com/forcedotcom/source-tracking/compare/2.2.22...2.2.23) (2023-03-04) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.33.5 to 3.33.6 ([cca0242](https://github.com/forcedotcom/source-tracking/commit/cca0242f81fc5a4c5bd08dad8eabfeb7edb0c691)) - - +- **deps:** bump @salesforce/core from 3.33.5 to 3.33.6 ([cca0242](https://github.com/forcedotcom/source-tracking/commit/cca0242f81fc5a4c5bd08dad8eabfeb7edb0c691)) ## [2.2.22](https://github.com/forcedotcom/source-tracking/compare/2.2.21...2.2.22) (2023-02-17) - ### Bug Fixes -* empty project path when pulling remote deletes ([cee0498](https://github.com/forcedotcom/source-tracking/commit/cee049898ecee4353253d0b29d76e7fd7876d18b)) - - +- empty project path when pulling remote deletes ([cee0498](https://github.com/forcedotcom/source-tracking/commit/cee049898ecee4353253d0b29d76e7fd7876d18b)) ## [2.2.21](https://github.com/forcedotcom/source-tracking/compare/2.2.20...2.2.21) (2023-02-02) - ### Bug Fixes -* bump sdr ([9014c97](https://github.com/forcedotcom/source-tracking/commit/9014c97bf4c4f69cf92082f37edf4d1c1ea6761d)) - - +- bump sdr ([9014c97](https://github.com/forcedotcom/source-tracking/commit/9014c97bf4c4f69cf92082f37edf4d1c1ea6761d)) ## [2.2.20](https://github.com/forcedotcom/source-tracking/compare/2.2.19...2.2.20) (2023-01-28) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.32.13 to 3.33.1 ([a3690db](https://github.com/forcedotcom/source-tracking/commit/a3690dbc1c1f50795447c1ac72c4b06f544cd1a5)) - - +- **deps:** bump @salesforce/core from 3.32.13 to 3.33.1 ([a3690db](https://github.com/forcedotcom/source-tracking/commit/a3690dbc1c1f50795447c1ac72c4b06f544cd1a5)) ## [2.2.19](https://github.com/forcedotcom/source-tracking/compare/2.2.18...2.2.19) (2023-01-21) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 7.7.3 to 7.7.5 ([0745319](https://github.com/forcedotcom/source-tracking/commit/074531952949363e32f1a2e742697bcf9537e378)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 7.7.3 to 7.7.5 ([0745319](https://github.com/forcedotcom/source-tracking/commit/074531952949363e32f1a2e742697bcf9537e378)) ## [2.2.18](https://github.com/forcedotcom/source-tracking/compare/2.2.17...2.2.18) (2023-01-18) - ### Bug Fixes -* auth to devhub for nut ([3103759](https://github.com/forcedotcom/source-tracking/commit/31037595004be27bc361ad8233e153443e3e81eb)) -* filter for null/undefined ([7a66508](https://github.com/forcedotcom/source-tracking/commit/7a6650892aa28ffab507a97697af1ba48f11f236)) -* include deleted files in FileResponses for retrieves ([f9fcee1](https://github.com/forcedotcom/source-tracking/commit/f9fcee123c772f01a14d9f7545fe0a8649eee695)) -* update tests for strictNullChecks ([685b466](https://github.com/forcedotcom/source-tracking/commit/685b466d35134188a7623dedddb0af113ea7591a)) - - +- auth to devhub for nut ([3103759](https://github.com/forcedotcom/source-tracking/commit/31037595004be27bc361ad8233e153443e3e81eb)) +- filter for null/undefined ([7a66508](https://github.com/forcedotcom/source-tracking/commit/7a6650892aa28ffab507a97697af1ba48f11f236)) +- include deleted files in FileResponses for retrieves ([f9fcee1](https://github.com/forcedotcom/source-tracking/commit/f9fcee123c772f01a14d9f7545fe0a8649eee695)) +- update tests for strictNullChecks ([685b466](https://github.com/forcedotcom/source-tracking/commit/685b466d35134188a7623dedddb0af113ea7591a)) ## [2.2.17](https://github.com/forcedotcom/source-tracking/compare/2.2.16...2.2.17) (2023-01-04) - ### Bug Fixes -* **deps:** bump json5 from 1.0.1 to 1.0.2 ([6030467](https://github.com/forcedotcom/source-tracking/commit/60304674980e351f6c279394d626af916688ea5d)) - - +- **deps:** bump json5 from 1.0.1 to 1.0.2 ([6030467](https://github.com/forcedotcom/source-tracking/commit/60304674980e351f6c279394d626af916688ea5d)) ## [2.2.16](https://github.com/forcedotcom/source-tracking/compare/2.2.16-dev.3...2.2.16) (2023-01-03) - - ## [2.2.16-dev.3](https://github.com/forcedotcom/source-tracking/compare/2.2.16-dev.2...2.2.16-dev.3) (2022-12-28) - ### Bug Fixes -* better error message ([8e3d011](https://github.com/forcedotcom/source-tracking/commit/8e3d0110c1994fd9389c6896d1a1eef415d87462)) - - +- better error message ([8e3d011](https://github.com/forcedotcom/source-tracking/commit/8e3d0110c1994fd9389c6896d1a1eef415d87462)) ## [2.2.16-dev.2](https://github.com/forcedotcom/source-tracking/compare/2.2.16-dev.1...2.2.16-dev.2) (2022-12-28) - ### Bug Fixes -* maxFileAdd env var ([060b821](https://github.com/forcedotcom/source-tracking/commit/060b821587ebc10a41919426617e70045ba6db65)) - - +- maxFileAdd env var ([060b821](https://github.com/forcedotcom/source-tracking/commit/060b821587ebc10a41919426617e70045ba6db65)) ## [2.2.16-dev.1](https://github.com/forcedotcom/source-tracking/compare/2.2.15...2.2.16-dev.1) (2022-12-26) - ### Bug Fixes -* testing lowering maxFileAdd ([3032066](https://github.com/forcedotcom/source-tracking/commit/303206643bfa3ef5b6c48f18d4250f3462130da3)) - - +- testing lowering maxFileAdd ([3032066](https://github.com/forcedotcom/source-tracking/commit/303206643bfa3ef5b6c48f18d4250f3462130da3)) ## [2.2.15](https://github.com/forcedotcom/source-tracking/compare/2.2.14...2.2.15) (2022-12-14) - ### Bug Fixes -* bump sdr and core ([#288](https://github.com/forcedotcom/source-tracking/issues/288)) ([621d927](https://github.com/forcedotcom/source-tracking/commit/621d9278d40f67f29bafd0c490f380cbd5cf1ec6)) - - +- bump sdr and core ([#288](https://github.com/forcedotcom/source-tracking/issues/288)) ([621d927](https://github.com/forcedotcom/source-tracking/commit/621d9278d40f67f29bafd0c490f380cbd5cf1ec6)) ## [2.2.14](https://github.com/forcedotcom/source-tracking/compare/2.2.13...2.2.14) (2022-11-22) - ### Bug Fixes -* bump SDR ([039fcf6](https://github.com/forcedotcom/source-tracking/commit/039fcf67995d4b618ba49df4e72f7088f2affec8)) -* dedupe ([be02155](https://github.com/forcedotcom/source-tracking/commit/be02155c29950b902fe4eb6ea517b93a3c8279ae)) -* treat ExperienceBundles and StaticResources like bundles for partial delete ([cdac022](https://github.com/forcedotcom/source-tracking/commit/cdac0228fea5ec50d9261607bc829f375dc831bb)) -* use new SDR registry property supportsPartialDelete ([aaa6c38](https://github.com/forcedotcom/source-tracking/commit/aaa6c38d54f99ee1b1ccb740d757468deb445366)) - - +- bump SDR ([039fcf6](https://github.com/forcedotcom/source-tracking/commit/039fcf67995d4b618ba49df4e72f7088f2affec8)) +- dedupe ([be02155](https://github.com/forcedotcom/source-tracking/commit/be02155c29950b902fe4eb6ea517b93a3c8279ae)) +- treat ExperienceBundles and StaticResources like bundles for partial delete ([cdac022](https://github.com/forcedotcom/source-tracking/commit/cdac0228fea5ec50d9261607bc829f375dc831bb)) +- use new SDR registry property supportsPartialDelete ([aaa6c38](https://github.com/forcedotcom/source-tracking/commit/aaa6c38d54f99ee1b1ccb740d757468deb445366)) ## [2.2.13](https://github.com/forcedotcom/source-tracking/compare/2.2.12...2.2.13) (2022-11-19) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 7.5.8 to 7.5.9 ([80c5d3b](https://github.com/forcedotcom/source-tracking/commit/80c5d3b1919ae4e9c5268365b28a461bfbc3a679)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 7.5.8 to 7.5.9 ([80c5d3b](https://github.com/forcedotcom/source-tracking/commit/80c5d3b1919ae4e9c5268365b28a461bfbc3a679)) ## [2.2.12](https://github.com/forcedotcom/source-tracking/compare/2.2.11...2.2.12) (2022-11-15) - ### Bug Fixes -* digitalExperience to isBundle check ([e6add91](https://github.com/forcedotcom/source-tracking/commit/e6add917370751aee4fd1b7bc4edb959882b8f43)) - - +- digitalExperience to isBundle check ([e6add91](https://github.com/forcedotcom/source-tracking/commit/e6add917370751aee4fd1b7bc4edb959882b8f43)) ## [2.2.11](https://github.com/forcedotcom/source-tracking/compare/2.2.10...2.2.11) (2022-10-23) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.31.10 to 3.31.16 ([5a27a00](https://github.com/forcedotcom/source-tracking/commit/5a27a004adde124784d944fed3c5178dd3d305bf)) - - +- **deps:** bump @salesforce/core from 3.31.10 to 3.31.16 ([5a27a00](https://github.com/forcedotcom/source-tracking/commit/5a27a004adde124784d944fed3c5178dd3d305bf)) ## [2.2.10](https://github.com/forcedotcom/source-tracking/compare/2.2.9...2.2.10) (2022-10-18) - ### Bug Fixes -* **deps:** major bump sdr ([#253](https://github.com/forcedotcom/source-tracking/issues/253)) ([8f7bff3](https://github.com/forcedotcom/source-tracking/commit/8f7bff31f49b678ba57c7759bc7b74f211ba8716)) - - +- **deps:** major bump sdr ([#253](https://github.com/forcedotcom/source-tracking/issues/253)) ([8f7bff3](https://github.com/forcedotcom/source-tracking/commit/8f7bff31f49b678ba57c7759bc7b74f211ba8716)) ## [2.2.9](https://github.com/forcedotcom/source-tracking/compare/2.2.8...2.2.9) (2022-10-08) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 6.8.2 to 6.9.0 ([97ae35e](https://github.com/forcedotcom/source-tracking/commit/97ae35eeb82cf3301eefb0536d578b4e62f6d498)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 6.8.2 to 6.9.0 ([97ae35e](https://github.com/forcedotcom/source-tracking/commit/97ae35eeb82cf3301eefb0536d578b4e62f6d498)) ## [2.2.8](https://github.com/forcedotcom/source-tracking/compare/2.2.7...2.2.8) (2022-10-05) - ### Bug Fixes -* poll for CustomObjectTranslation, but still not CustomObjects ([ce7c79d](https://github.com/forcedotcom/source-tracking/commit/ce7c79df930e5c4c12fda2f93e7f17db67183f43)) - - +- poll for CustomObjectTranslation, but still not CustomObjects ([ce7c79d](https://github.com/forcedotcom/source-tracking/commit/ce7c79df930e5c4c12fda2f93e7f17db67183f43)) ## [2.2.7](https://github.com/forcedotcom/source-tracking/compare/2.2.6...2.2.7) (2022-09-30) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 6.8.1 to 6.8.2 ([8a3efc3](https://github.com/forcedotcom/source-tracking/commit/8a3efc30b33d6ca076e2273c13726a21dd7225e3)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 6.8.1 to 6.8.2 ([8a3efc3](https://github.com/forcedotcom/source-tracking/commit/8a3efc30b33d6ca076e2273c13726a21dd7225e3)) ## [2.2.6](https://github.com/forcedotcom/source-tracking/compare/2.2.5...2.2.6) (2022-09-30) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.30.8 to 3.30.9 ([5619491](https://github.com/forcedotcom/source-tracking/commit/561949136d4bf8a9dd38f3bba7a64c32ffff40d5)) - - +- **deps:** bump @salesforce/core from 3.30.8 to 3.30.9 ([5619491](https://github.com/forcedotcom/source-tracking/commit/561949136d4bf8a9dd38f3bba7a64c32ffff40d5)) ## [2.2.5](https://github.com/forcedotcom/source-tracking/compare/2.2.4...2.2.5) (2022-09-29) - ### Bug Fixes -* **deps:** bump vm2 from 3.9.10 to 3.9.11 ([ff9ddcd](https://github.com/forcedotcom/source-tracking/commit/ff9ddcdfa3ae7c20b2523a2d0f2ef419d953e736)) - - +- **deps:** bump vm2 from 3.9.10 to 3.9.11 ([ff9ddcd](https://github.com/forcedotcom/source-tracking/commit/ff9ddcdfa3ae7c20b2523a2d0f2ef419d953e736)) ## [2.2.4](https://github.com/forcedotcom/source-tracking/compare/v2.2.3...2.2.4) (2022-09-25) - ### Bug Fixes -* **deps:** bump @salesforce/source-deploy-retrieve from 6.8.0 to 6.8.1 ([8c28a5e](https://github.com/forcedotcom/source-tracking/commit/8c28a5e1194321668ca22a439cf4547b9f63a414)) - - +- **deps:** bump @salesforce/source-deploy-retrieve from 6.8.0 to 6.8.1 ([8c28a5e](https://github.com/forcedotcom/source-tracking/commit/8c28a5e1194321668ca22a439cf4547b9f63a414)) ## [2.2.3](https://github.com/forcedotcom/source-tracking/compare/v2.2.2...v2.2.3) (2022-09-13) - ### Bug Fixes -* ignore DEB, DigitalExperience and DEC from source tracking tracking ([#206](https://github.com/forcedotcom/source-tracking/issues/206)) ([3e4b985](https://github.com/forcedotcom/source-tracking/commit/3e4b985f2c805d969a88a60171aab49f1d0032fb)) - - +- ignore DEB, DigitalExperience and DEC from source tracking tracking ([#206](https://github.com/forcedotcom/source-tracking/issues/206)) ([3e4b985](https://github.com/forcedotcom/source-tracking/commit/3e4b985f2c805d969a88a60171aab49f1d0032fb)) ## [2.2.2](https://github.com/forcedotcom/source-tracking/compare/v2.2.1...v2.2.2) (2022-08-10) - ### Bug Fixes -* bump eslint/jsdoc to get automerges flowing again ([afd85ff](https://github.com/forcedotcom/source-tracking/commit/afd85ff420877b7fb969085cf5f59d9c3f80555f)) -* ensure remote changes have a value for ignored (plugin expects it) ([bc1379f](https://github.com/forcedotcom/source-tracking/commit/bc1379f8f020fed5bfca721330f4404662d1b300)) -* force version change ([5483cd3](https://github.com/forcedotcom/source-tracking/commit/5483cd317614aea6aeb50c5544cede92fa9c2cb2)) -* remote changes display ignoredness ([d3533f9](https://github.com/forcedotcom/source-tracking/commit/d3533f9275d2a290b3c34019e204718e16ceaa75)) - +- bump eslint/jsdoc to get automerges flowing again ([afd85ff](https://github.com/forcedotcom/source-tracking/commit/afd85ff420877b7fb969085cf5f59d9c3f80555f)) +- ensure remote changes have a value for ignored (plugin expects it) ([bc1379f](https://github.com/forcedotcom/source-tracking/commit/bc1379f8f020fed5bfca721330f4404662d1b300)) +- force version change ([5483cd3](https://github.com/forcedotcom/source-tracking/commit/5483cd317614aea6aeb50c5544cede92fa9c2cb2)) +- remote changes display ignoredness ([d3533f9](https://github.com/forcedotcom/source-tracking/commit/d3533f9275d2a290b3c34019e204718e16ceaa75)) ### Features -* local CmpSet from changes tracks ignored files like normal CmpSet ([aaa707f](https://github.com/forcedotcom/source-tracking/commit/aaa707fb2e68f5b7199d79d8ea8213068bea09b1)) -* overload to preserve backwards compatibility ([cfc53e3](https://github.com/forcedotcom/source-tracking/commit/cfc53e3ecf0b037cbe7c7ada2588c2e4ead2ab88)) - - +- local CmpSet from changes tracks ignored files like normal CmpSet ([aaa707f](https://github.com/forcedotcom/source-tracking/commit/aaa707fb2e68f5b7199d79d8ea8213068bea09b1)) +- overload to preserve backwards compatibility ([cfc53e3](https://github.com/forcedotcom/source-tracking/commit/cfc53e3ecf0b037cbe7c7ada2588c2e4ead2ab88)) ## [2.2.1](https://github.com/forcedotcom/source-tracking/compare/v2.2.0...v2.2.1) (2022-07-05) - ### Bug Fixes -* bump core ([#180](https://github.com/forcedotcom/source-tracking/issues/180)) ([bf0c1f7](https://github.com/forcedotcom/source-tracking/commit/bf0c1f71f91701dacd2516914ab2abca33b1d00a)) - - +- bump core ([#180](https://github.com/forcedotcom/source-tracking/issues/180)) ([bf0c1f7](https://github.com/forcedotcom/source-tracking/commit/bf0c1f71f91701dacd2516914ab2abca33b1d00a)) # [2.2.0](https://github.com/forcedotcom/source-tracking/compare/v2.1.2...v2.2.0) (2022-06-29) - ### Bug Fixes -* async lifecycle subscribe ([75031f3](https://github.com/forcedotcom/source-tracking/commit/75031f3bbe753001a42f7abcfec1415bfb62547e)) -* custom field was not polling correctly (logic error on del__c) ([1ff2341](https://github.com/forcedotcom/source-tracking/commit/1ff23419d737cb2a22bcf070f5b2790b9ef0536d)) -* logic on local ignored ([9667a6e](https://github.com/forcedotcom/source-tracking/commit/9667a6e8b442a6df0a42fd42dde4dfc289928f90)) -* use fixed jsforce autoFetch, restore ut ([0b32d21](https://github.com/forcedotcom/source-tracking/commit/0b32d217013a346ef8826d3820566b7d70dba3c1)) - +- async lifecycle subscribe ([75031f3](https://github.com/forcedotcom/source-tracking/commit/75031f3bbe753001a42f7abcfec1415bfb62547e)) +- custom field was not polling correctly (logic error on del\_\_c) ([1ff2341](https://github.com/forcedotcom/source-tracking/commit/1ff23419d737cb2a22bcf070f5b2790b9ef0536d)) +- logic on local ignored ([9667a6e](https://github.com/forcedotcom/source-tracking/commit/9667a6e8b442a6df0a42fd42dde4dfc289928f90)) +- use fixed jsforce autoFetch, restore ut ([0b32d21](https://github.com/forcedotcom/source-tracking/commit/0b32d217013a346ef8826d3820566b7d70dba3c1)) ### Features -* event subscription and convenience method for push ([0c2135b](https://github.com/forcedotcom/source-tracking/commit/0c2135ba3076d3d7a3efd1e4d3c41a468e349728)) -* local repo cache breaking for get status, and a generic method ([6645b72](https://github.com/forcedotcom/source-tracking/commit/6645b72c4695a15caca8aa6d3dc158a600fd15de)) -* never track utam ([6e71f03](https://github.com/forcedotcom/source-tracking/commit/6e71f031c27c4e690d8538253b751da13da0b6e3)) -* option to use SDR events ([d86f698](https://github.com/forcedotcom/source-tracking/commit/d86f69896185b68af7e489f6026589957e06f29d)) -* top-level cache config of local cache behavior ([236ac28](https://github.com/forcedotcom/source-tracking/commit/236ac28314b45c42eff83b9ab8003d0c39efbbb0)) -* track based on sdr events ([1238a68](https://github.com/forcedotcom/source-tracking/commit/1238a686f1d2c6091154ac6370c3d3d019c3a7a7)) - +- event subscription and convenience method for push ([0c2135b](https://github.com/forcedotcom/source-tracking/commit/0c2135ba3076d3d7a3efd1e4d3c41a468e349728)) +- local repo cache breaking for get status, and a generic method ([6645b72](https://github.com/forcedotcom/source-tracking/commit/6645b72c4695a15caca8aa6d3dc158a600fd15de)) +- never track utam ([6e71f03](https://github.com/forcedotcom/source-tracking/commit/6e71f031c27c4e690d8538253b751da13da0b6e3)) +- option to use SDR events ([d86f698](https://github.com/forcedotcom/source-tracking/commit/d86f69896185b68af7e489f6026589957e06f29d)) +- top-level cache config of local cache behavior ([236ac28](https://github.com/forcedotcom/source-tracking/commit/236ac28314b45c42eff83b9ab8003d0c39efbbb0)) +- track based on sdr events ([1238a68](https://github.com/forcedotcom/source-tracking/commit/1238a686f1d2c6091154ac6370c3d3d019c3a7a7)) ### Performance Improvements -* some more things not to poll for based on telemetry ([10f6fa3](https://github.com/forcedotcom/source-tracking/commit/10f6fa3e0324ffae0e03101b5bcf452793730d35)) - - +- some more things not to poll for based on telemetry ([10f6fa3](https://github.com/forcedotcom/source-tracking/commit/10f6fa3e0324ffae0e03101b5bcf452793730d35)) ## [2.1.2](https://github.com/forcedotcom/source-tracking/compare/v2.1.1...v2.1.2) (2022-06-23) - ### Bug Fixes -* bump core for autofetch ([3567c69](https://github.com/forcedotcom/source-tracking/commit/3567c69dd49444ef757b9699bb676a0a1a25561c)) - - +- bump core for autofetch ([3567c69](https://github.com/forcedotcom/source-tracking/commit/3567c69dd49444ef757b9699bb676a0a1a25561c)) ## [2.1.1](https://github.com/forcedotcom/source-tracking/compare/v2.1.0...v2.1.1) (2022-06-22) - ### Bug Fixes -* core for jsforce autofetch ([406c519](https://github.com/forcedotcom/source-tracking/commit/406c519827571fc8f9be2e8008b1cdd8b7827634)) - - +- core for jsforce autofetch ([406c519](https://github.com/forcedotcom/source-tracking/commit/406c519827571fc8f9be2e8008b1cdd8b7827634)) # [2.1.0](https://github.com/forcedotcom/source-tracking/compare/v2.0.0...v2.1.0) (2022-06-22) - ### Bug Fixes -* use await ([ce650bd](https://github.com/forcedotcom/source-tracking/commit/ce650bdc9d18a96adb1b0959c44c4e42eb972e2b)) -* use fixed jsforce autoFetch, restore ut ([f52afd0](https://github.com/forcedotcom/source-tracking/commit/f52afd055d05c6c577e864b1d78edf2acebaab46)) -* wait for query to finish ([4e4ac4b](https://github.com/forcedotcom/source-tracking/commit/4e4ac4b9e3a6a480e8ddb9419cecde7304db76c3)) - +- use await ([ce650bd](https://github.com/forcedotcom/source-tracking/commit/ce650bdc9d18a96adb1b0959c44c4e42eb972e2b)) +- use fixed jsforce autoFetch, restore ut ([f52afd0](https://github.com/forcedotcom/source-tracking/commit/f52afd055d05c6c577e864b1d78edf2acebaab46)) +- wait for query to finish ([4e4ac4b](https://github.com/forcedotcom/source-tracking/commit/4e4ac4b9e3a6a480e8ddb9419cecde7304db76c3)) ### Features -* use StateAggregator ([8a29ac6](https://github.com/forcedotcom/source-tracking/commit/8a29ac6cc7d4009cac32bd86ce55e82104991d95)) - - +- use StateAggregator ([8a29ac6](https://github.com/forcedotcom/source-tracking/commit/8a29ac6cc7d4009cac32bd86ce55e82104991d95)) # [2.0.0](https://github.com/forcedotcom/source-tracking/compare/v1.5.0...v2.0.0) (2022-05-23) - ### Features -* corev3, jsforce2 ([0c0b1cf](https://github.com/forcedotcom/source-tracking/commit/0c0b1cf377245e61d83397fcf39baf7de6c06e76)) -* support both .sfdx/.sf ([3d52e66](https://github.com/forcedotcom/source-tracking/commit/3d52e66b2228c7c6721e97d780d8b56a30cb0496)) -* use new org feature to determine tracking ([0299bfb](https://github.com/forcedotcom/source-tracking/commit/0299bfb9b49122c5e2ff9748038e10a129b26829)) -* use v3 error/messages ([41676ff](https://github.com/forcedotcom/source-tracking/commit/41676ff2d23c6bba91e807d8be152558ad849e30)) -* use v3 error/messages ([488fbfa](https://github.com/forcedotcom/source-tracking/commit/488fbfabbeedb113566b9c67201da4245338b2b6)) - - +- corev3, jsforce2 ([0c0b1cf](https://github.com/forcedotcom/source-tracking/commit/0c0b1cf377245e61d83397fcf39baf7de6c06e76)) +- support both .sfdx/.sf ([3d52e66](https://github.com/forcedotcom/source-tracking/commit/3d52e66b2228c7c6721e97d780d8b56a30cb0496)) +- use new org feature to determine tracking ([0299bfb](https://github.com/forcedotcom/source-tracking/commit/0299bfb9b49122c5e2ff9748038e10a129b26829)) +- use v3 error/messages ([41676ff](https://github.com/forcedotcom/source-tracking/commit/41676ff2d23c6bba91e807d8be152558ad849e30)) +- use v3 error/messages ([488fbfa](https://github.com/forcedotcom/source-tracking/commit/488fbfabbeedb113566b9c67201da4245338b2b6)) # [1.5.0](https://github.com/forcedotcom/source-tracking/compare/v1.4.2...v1.5.0) (2022-05-04) - ### Bug Fixes -* 2 more types ([c5554f1](https://github.com/forcedotcom/source-tracking/commit/c5554f18c21283c85589ab0ea1c9e632be1bbeaf)) - +- 2 more types ([c5554f1](https://github.com/forcedotcom/source-tracking/commit/c5554f18c21283c85589ab0ea1c9e632be1bbeaf)) ### Features -* polling optimizations ([e39afd4](https://github.com/forcedotcom/source-tracking/commit/e39afd409ffa321ac7cf91aab3f850dea5dcb45e)) - - +- polling optimizations ([e39afd4](https://github.com/forcedotcom/source-tracking/commit/e39afd409ffa321ac7cf91aab3f850dea5dcb45e)) ## [1.4.2](https://github.com/forcedotcom/source-tracking/compare/v1.4.1...v1.4.2) (2022-04-29) - ### Bug Fixes -* use absolute paths in ComponentSet for matching local source ([#153](https://github.com/forcedotcom/source-tracking/issues/153)) ([b5690a5](https://github.com/forcedotcom/source-tracking/commit/b5690a5c4f3a3fe02f733fa1578467e2278e62bf)) - - +- use absolute paths in ComponentSet for matching local source ([#153](https://github.com/forcedotcom/source-tracking/issues/153)) ([b5690a5](https://github.com/forcedotcom/source-tracking/commit/b5690a5c4f3a3fe02f733fa1578467e2278e62bf)) ## [1.4.1](https://github.com/forcedotcom/source-tracking/compare/v1.4.0...v1.4.1) (2022-04-28) - - # [1.4.0](https://github.com/forcedotcom/source-tracking/compare/v1.3.1...v1.4.0) (2022-04-27) - ### Features -* comp set for pulls ([4b361a4](https://github.com/forcedotcom/source-tracking/commit/4b361a4f31ac4f810762ee8d6f8447f7eef1be31)) - - +- comp set for pulls ([4b361a4](https://github.com/forcedotcom/source-tracking/commit/4b361a4f31ac4f810762ee8d6f8447f7eef1be31)) ## [1.3.1](https://github.com/forcedotcom/source-tracking/compare/v1.3.0...v1.3.1) (2022-03-25) - ### Bug Fixes -* tracking really large repos in chunks, lower limit for windows ([0cb2ce5](https://github.com/forcedotcom/source-tracking/commit/0cb2ce5f3b65b8be9f4e4210aba010e919f692a3)) - - +- tracking really large repos in chunks, lower limit for windows ([0cb2ce5](https://github.com/forcedotcom/source-tracking/commit/0cb2ce5f3b65b8be9f4e4210aba010e919f692a3)) # [1.3.0](https://github.com/forcedotcom/source-tracking/compare/v1.2.0...v1.3.0) (2022-03-25) - ### Features -* gracful-fs for EMFILE: too many open files ([1573828](https://github.com/forcedotcom/source-tracking/commit/1573828f5b3cf5f4f8b2023ff31b5764214d4b06)) - - +- gracful-fs for EMFILE: too many open files ([1573828](https://github.com/forcedotcom/source-tracking/commit/1573828f5b3cf5f4f8b2023ff31b5764214d4b06)) # [1.2.0](https://github.com/forcedotcom/source-tracking/compare/v1.1.7...v1.2.0) (2022-03-23) - ### Bug Fixes -* ga tracking commands compatibility ([3a31a0d](https://github.com/forcedotcom/source-tracking/commit/3a31a0de448993c643ea4661a7a37772e46e8f51)) -* support pkgDir with ./foo ([3b46454](https://github.com/forcedotcom/source-tracking/commit/3b46454b3e57f653cbe80c66fbfee1cac121c2a8)) - +- ga tracking commands compatibility ([3a31a0d](https://github.com/forcedotcom/source-tracking/commit/3a31a0de448993c643ea4661a7a37772e46e8f51)) +- support pkgDir with ./foo ([3b46454](https://github.com/forcedotcom/source-tracking/commit/3b46454b3e57f653cbe80c66fbfee1cac121c2a8)) ### Features -* let isogit deal with ignore files ([#135](https://github.com/forcedotcom/source-tracking/issues/135)) ([1ddb2cd](https://github.com/forcedotcom/source-tracking/commit/1ddb2cdb8f23688f7bb4876a893097a85581f4c1)) - - +- let isogit deal with ignore files ([#135](https://github.com/forcedotcom/source-tracking/issues/135)) ([1ddb2cd](https://github.com/forcedotcom/source-tracking/commit/1ddb2cdb8f23688f7bb4876a893097a85581f4c1)) ## [1.1.7](https://github.com/forcedotcom/source-tracking/compare/v1.1.6...v1.1.7) (2022-03-16) - ### Bug Fixes -* use isogit multiple add ([0845df8](https://github.com/forcedotcom/source-tracking/commit/0845df81845f07bd2bece444118497b2ef72e7aa)) - +- use isogit multiple add ([0845df8](https://github.com/forcedotcom/source-tracking/commit/0845df81845f07bd2bece444118497b2ef72e7aa)) ### Performance Improvements -* use improved iso-git multiple-add API ([65bd3d4](https://github.com/forcedotcom/source-tracking/commit/65bd3d4770a16cecc528e5d205cdba7e83032741)) - - +- use improved iso-git multiple-add API ([65bd3d4](https://github.com/forcedotcom/source-tracking/commit/65bd3d4770a16cecc528e5d205cdba7e83032741)) ## [1.1.6](https://github.com/forcedotcom/source-tracking/compare/v1.1.5...v1.1.6) (2022-03-14) - ### Performance Improvements -* deduplicate files as they are commited to shadow repo ([#133](https://github.com/forcedotcom/source-tracking/issues/133)) ([fbc6d33](https://github.com/forcedotcom/source-tracking/commit/fbc6d33fb363b514ddeee21bea539df465a5a3fc)) - - +- deduplicate files as they are commited to shadow repo ([#133](https://github.com/forcedotcom/source-tracking/issues/133)) ([fbc6d33](https://github.com/forcedotcom/source-tracking/commit/fbc6d33fb363b514ddeee21bea539df465a5a3fc)) ## [1.1.5](https://github.com/forcedotcom/source-tracking/compare/v1.1.4...v1.1.5) (2022-03-11) - - ## [1.1.4](https://github.com/forcedotcom/source-tracking/compare/v1.1.3...v1.1.4) (2022-03-07) - ### Bug Fixes -* clearer messaging and legacy accommodation ([9f14e0f](https://github.com/forcedotcom/source-tracking/commit/9f14e0f02c9df69018b396148b8b4c49c161bf4d)) - - +- clearer messaging and legacy accommodation ([9f14e0f](https://github.com/forcedotcom/source-tracking/commit/9f14e0f02c9df69018b396148b8b4c49c161bf4d)) ## [1.1.3](https://github.com/forcedotcom/source-tracking/compare/v1.1.2...v1.1.3) (2022-03-07) - ### Bug Fixes -* revert beta/legacy mapping ([4d3380c](https://github.com/forcedotcom/source-tracking/commit/4d3380c74a72572a8c1e464c739c4d5b8af69442)) - - +- revert beta/legacy mapping ([4d3380c](https://github.com/forcedotcom/source-tracking/commit/4d3380c74a72572a8c1e464c739c4d5b8af69442)) ## [1.1.2](https://github.com/forcedotcom/source-tracking/compare/v1.1.1...v1.1.2) (2022-03-02) - ### Bug Fixes -* more metadata polling exclusions based on telemetry ([ae5adf3](https://github.com/forcedotcom/source-tracking/commit/ae5adf34600676f54c0e5efa2f5e7c96e2fd10f6)) - - +- more metadata polling exclusions based on telemetry ([ae5adf3](https://github.com/forcedotcom/source-tracking/commit/ae5adf34600676f54c0e5efa2f5e7c96e2fd10f6)) ## [1.1.1](https://github.com/forcedotcom/source-tracking/compare/v1.1.0...v1.1.1) (2022-02-23) - ### Bug Fixes -* message formatting for GA ([194ba4b](https://github.com/forcedotcom/source-tracking/commit/194ba4b4bd08a26e7f7c5c6ef28dc1fb20acc1de)) - - +- message formatting for GA ([194ba4b](https://github.com/forcedotcom/source-tracking/commit/194ba4b4bd08a26e7f7c5c6ef28dc1fb20acc1de)) # [1.1.0](https://github.com/forcedotcom/source-tracking/compare/v1.0.2...v1.1.0) (2022-02-16) - ### Bug Fixes -* handle lwc in a pkgDir of the same name ([621d8cf](https://github.com/forcedotcom/source-tracking/commit/621d8cfc00f2eb4ded160802b2076e140d0a2d06)) -* increase max-fetch default ([9854ed8](https://github.com/forcedotcom/source-tracking/commit/9854ed8677c13d0b2d818355660ab71c144e6a3e)) -* lastIndexOf handles foo/lwc/foo ([8632ee6](https://github.com/forcedotcom/source-tracking/commit/8632ee61f88faf32024e99f1c5590f6b134a3b08)) -* smarter polling and excluded files ([6df02a7](https://github.com/forcedotcom/source-tracking/commit/6df02a716e238e38b699b98f638ef42ed8cedeca)) - +- handle lwc in a pkgDir of the same name ([621d8cf](https://github.com/forcedotcom/source-tracking/commit/621d8cfc00f2eb4ded160802b2076e140d0a2d06)) +- increase max-fetch default ([9854ed8](https://github.com/forcedotcom/source-tracking/commit/9854ed8677c13d0b2d818355660ab71c144e6a3e)) +- lastIndexOf handles foo/lwc/foo ([8632ee6](https://github.com/forcedotcom/source-tracking/commit/8632ee61f88faf32024e99f1c5590f6b134a3b08)) +- smarter polling and excluded files ([6df02a7](https://github.com/forcedotcom/source-tracking/commit/6df02a716e238e38b699b98f638ef42ed8cedeca)) ### Features -* smarter polling ([3d5bb05](https://github.com/forcedotcom/source-tracking/commit/3d5bb05ccf05127304037ec6085660be5da8fe24)) - - +- smarter polling ([3d5bb05](https://github.com/forcedotcom/source-tracking/commit/3d5bb05ccf05127304037ec6085660be5da8fe24)) ## [1.0.2](https://github.com/forcedotcom/source-tracking/compare/v1.0.1...v1.0.2) (2022-01-25) - ### Bug Fixes -* handle gitignore outside pkgDirs ([23a65c8](https://github.com/forcedotcom/source-tracking/commit/23a65c89c8b55525b5d8efe88195d734d337d82a)) - - +- handle gitignore outside pkgDirs ([23a65c8](https://github.com/forcedotcom/source-tracking/commit/23a65c89c8b55525b5d8efe88195d734d337d82a)) ## [1.0.1](https://github.com/forcedotcom/source-tracking/compare/v1.0.0...v1.0.1) (2022-01-25) - ### Bug Fixes -* emailTempalteFolder via aliased types ([f4c88f9](https://github.com/forcedotcom/source-tracking/commit/f4c88f9b59ad6d061933bfd3f6827e44a59b0e80)) - - +- emailTempalteFolder via aliased types ([f4c88f9](https://github.com/forcedotcom/source-tracking/commit/f4c88f9b59ad6d061933bfd3f6827e44a59b0e80)) # [1.0.0](https://github.com/forcedotcom/source-tracking/compare/v0.5.2...v1.0.0) (2022-01-20) - ### Bug Fixes -* handle element count errors ([8817329](https://github.com/forcedotcom/source-tracking/commit/8817329f8198ce701aba22c7a4476ef31a4d73a4)) -* lightning EmailTemplateFolder ([554c766](https://github.com/forcedotcom/source-tracking/commit/554c76676a85c7a4b673879116912cde51dd1498)) -* remove emailtf attempt ([262839d](https://github.com/forcedotcom/source-tracking/commit/262839dc025c7094d8868d3ae9d769dd39ad5324)) -* sourceMember excepton for nondecomposed children ([05db59e](https://github.com/forcedotcom/source-tracking/commit/05db59e7a6e070224a45f5fbf08013565c9f2131)) - - +- handle element count errors ([8817329](https://github.com/forcedotcom/source-tracking/commit/8817329f8198ce701aba22c7a4476ef31a4d73a4)) +- lightning EmailTemplateFolder ([554c766](https://github.com/forcedotcom/source-tracking/commit/554c76676a85c7a4b673879116912cde51dd1498)) +- remove emailtf attempt ([262839d](https://github.com/forcedotcom/source-tracking/commit/262839dc025c7094d8868d3ae9d769dd39ad5324)) +- sourceMember excepton for nondecomposed children ([05db59e](https://github.com/forcedotcom/source-tracking/commit/05db59e7a6e070224a45f5fbf08013565c9f2131)) ## [0.5.2](https://github.com/forcedotcom/source-tracking/compare/v0.5.1...v0.5.2) (2022-01-05) - ### Bug Fixes -* distributed .gitignore and loose pkgDir matching ([a148a36](https://github.com/forcedotcom/source-tracking/commit/a148a366739b6941f3f479b375147897103316bb)) -* remove singleton behavior for localShadowRepo ([887bb68](https://github.com/forcedotcom/source-tracking/commit/887bb684528df8df07fe9b4edf1bd2f4165fe3e2)) - +- distributed .gitignore and loose pkgDir matching ([a148a36](https://github.com/forcedotcom/source-tracking/commit/a148a366739b6941f3f479b375147897103316bb)) +- remove singleton behavior for localShadowRepo ([887bb68](https://github.com/forcedotcom/source-tracking/commit/887bb684528df8df07fe9b4edf1bd2f4165fe3e2)) ### Features -* path-scoped singleton ([de46db4](https://github.com/forcedotcom/source-tracking/commit/de46db4b08a3fe087a2931936655c75b3b7cc32c)) - - +- path-scoped singleton ([de46db4](https://github.com/forcedotcom/source-tracking/commit/de46db4b08a3fe087a2931936655c75b3b7cc32c)) ## [0.5.1](https://github.com/forcedotcom/source-tracking/compare/v0.5.0...v0.5.1) (2021-12-03) - ### Bug Fixes -* support addressable child types ([8251095](https://github.com/forcedotcom/source-tracking/commit/82510955ba8ffe4a2e7e5411973795da3671d01e)) - - +- support addressable child types ([8251095](https://github.com/forcedotcom/source-tracking/commit/82510955ba8ffe4a2e7e5411973795da3671d01e)) # [0.5.0](https://github.com/forcedotcom/source-tracking/compare/v0.4.4...v0.5.0) (2021-12-02) - ### Bug Fixes -* deploy by pkgDir groupings, not all ([7f1262e](https://github.com/forcedotcom/source-tracking/commit/7f1262e1d05a57d3094849d052376b13dd7a5ec7)) -* windows paths when pkgDir path has separators in it ([b0ab346](https://github.com/forcedotcom/source-tracking/commit/b0ab3468d9c54722f832fb7d27a84525d593d4f7)) - +- deploy by pkgDir groupings, not all ([7f1262e](https://github.com/forcedotcom/source-tracking/commit/7f1262e1d05a57d3094849d052376b13dd7a5ec7)) +- windows paths when pkgDir path has separators in it ([b0ab346](https://github.com/forcedotcom/source-tracking/commit/b0ab3468d9c54722f832fb7d27a84525d593d4f7)) ### Features -* delete bundle member but not the bundle ([fbb81f2](https://github.com/forcedotcom/source-tracking/commit/fbb81f25af4cb9e81e3bbee93a08b072318eca10)) -* delete bundle members instead of bundle ([0aedbd5](https://github.com/forcedotcom/source-tracking/commit/0aedbd56b3bf34ce9e344ec03bb258c9db2098aa)) -* trackingFiles handle deleted bundle members ([137cd39](https://github.com/forcedotcom/source-tracking/commit/137cd391f0ea8ae60b3351d7b3361ae97b890d45)) - +- delete bundle member but not the bundle ([fbb81f2](https://github.com/forcedotcom/source-tracking/commit/fbb81f25af4cb9e81e3bbee93a08b072318eca10)) +- delete bundle members instead of bundle ([0aedbd5](https://github.com/forcedotcom/source-tracking/commit/0aedbd56b3bf34ce9e344ec03bb258c9db2098aa)) +- trackingFiles handle deleted bundle members ([137cd39](https://github.com/forcedotcom/source-tracking/commit/137cd391f0ea8ae60b3351d7b3361ae97b890d45)) ### Performance Improvements -* use os.type once ([1a17be6](https://github.com/forcedotcom/source-tracking/commit/1a17be6d8289659f0b925b3ea2db2293c61a3d47)) - - +- use os.type once ([1a17be6](https://github.com/forcedotcom/source-tracking/commit/1a17be6d8289659f0b925b3ea2db2293c61a3d47)) ## [0.4.4](https://github.com/forcedotcom/source-tracking/compare/v0.4.3...v0.4.4) (2021-12-01) - ### Features -* update version of core and sdr ([977ab56](https://github.com/forcedotcom/source-tracking/commit/977ab56deb9fa610cb21b26bfef6d30a1f9f8f58)) - - +- update version of core and sdr ([977ab56](https://github.com/forcedotcom/source-tracking/commit/977ab56deb9fa610cb21b26bfef6d30a1f9f8f58)) ## [0.4.3](https://github.com/forcedotcom/source-tracking/compare/v0.4.2...v0.4.3) (2021-11-11) - ### Bug Fixes -* don't pull remote changes where type isn't in SDR registry ([46250ee](https://github.com/forcedotcom/source-tracking/commit/46250eef09e29dfa0d06af984bbfcc3e88765968)) -* don't pull things not in the registry ([38136bb](https://github.com/forcedotcom/source-tracking/commit/38136bbbf1e44c8e58bc06621957819913273b4e)) - +- don't pull remote changes where type isn't in SDR registry ([46250ee](https://github.com/forcedotcom/source-tracking/commit/46250eef09e29dfa0d06af984bbfcc3e88765968)) +- don't pull things not in the registry ([38136bb](https://github.com/forcedotcom/source-tracking/commit/38136bbbf1e44c8e58bc06621957819913273b4e)) ### Features -* emit warnings for types not pulled ([fdeabbf](https://github.com/forcedotcom/source-tracking/commit/fdeabbfb11bb4ba1fd17931adedc49f9cb5ae658)) - - +- emit warnings for types not pulled ([fdeabbf](https://github.com/forcedotcom/source-tracking/commit/fdeabbfb11bb4ba1fd17931adedc49f9cb5ae658)) ## [0.4.2](https://github.com/forcedotcom/source-tracking/compare/v0.4.1...v0.4.2) (2021-10-28) - - ## [0.4.1](https://github.com/forcedotcom/source-tracking/compare/v0.4.0...v0.4.1) (2021-10-28) - ### Bug Fixes -* better conflict handling (can match filenames or type/name) ([4441a0a](https://github.com/forcedotcom/source-tracking/commit/4441a0abd70c7f8f315e1c638b4cef7fcf3e2e68)) -* gitignore stashing location ([5145545](https://github.com/forcedotcom/source-tracking/commit/5145545eeee6c800986014327479d20e943143e5)) -* polling exclusion logic for aura meta.xml was wrong ([2d40b2e](https://github.com/forcedotcom/source-tracking/commit/2d40b2ef65ef9a3145d0c75cd4943e4325d5745c)) - - +- better conflict handling (can match filenames or type/name) ([4441a0a](https://github.com/forcedotcom/source-tracking/commit/4441a0abd70c7f8f315e1c638b4cef7fcf3e2e68)) +- gitignore stashing location ([5145545](https://github.com/forcedotcom/source-tracking/commit/5145545eeee6c800986014327479d20e943143e5)) +- polling exclusion logic for aura meta.xml was wrong ([2d40b2e](https://github.com/forcedotcom/source-tracking/commit/2d40b2ef65ef9a3145d0c75cd4943e4325d5745c)) # [0.4.0](https://github.com/forcedotcom/source-tracking/compare/43e7fa4a44dbcb9da37d21618678687f4edda644...v0.4.0) (2021-10-22) - ### Bug Fixes -* again with the promises ([ad9dec5](https://github.com/forcedotcom/source-tracking/commit/ad9dec50336c61996456d48ee489426393c62329)) -* another attempt at node12 support ([c8736d0](https://github.com/forcedotcom/source-tracking/commit/c8736d0bbe53756d1b5572e00402e55af94003c1)) -* case of empty orgId dir ([1cb6333](https://github.com/forcedotcom/source-tracking/commit/1cb6333d14cfcee02b27711b6db273d5db31fc8e)) -* case on formatter filename ([02adf22](https://github.com/forcedotcom/source-tracking/commit/02adf22419d2bf81fb070d7d7d90f7d996bd1ada)) -* casing on imports ([d4425d9](https://github.com/forcedotcom/source-tracking/commit/d4425d9ee2ad77c4e28d32333025e59a3c7e3af9)) -* correct statusCommand description ([b834a2f](https://github.com/forcedotcom/source-tracking/commit/b834a2fa0213fbc72dbc6dc3a563cd92f413d222)) -* don't commit empty changelists ([67b9772](https://github.com/forcedotcom/source-tracking/commit/67b9772eccd6d2d4850322eb80f5a6113aac18e6)) -* export compatibility ([c6e5f7c](https://github.com/forcedotcom/source-tracking/commit/c6e5f7cba68ed6a7739b237adb027fda2442e8c4)) -* fix vscode image in readme ([441c15f](https://github.com/forcedotcom/source-tracking/commit/441c15f79dbaf4a97c84d9d6ddc923eae59bca34)) -* handle org:create's single tracking file ([008793d](https://github.com/forcedotcom/source-tracking/commit/008793d0fa15210ffb263cc5d179a0be8dcb05ff)) -* handle stash failures ([09dacc9](https://github.com/forcedotcom/source-tracking/commit/09dacc9484e48f3cba4813f3d733c66d2a30cd6b)) -* leif .yml merge [skip-validate-pr] ([ff10f84](https://github.com/forcedotcom/source-tracking/commit/ff10f84ec15757df55657ba73cc6976c5892595c)) -* local ST uses graceful via core2 ([3ba883f](https://github.com/forcedotcom/source-tracking/commit/3ba883ff2b02e27b0eb01a709f6c1e03ef91bb73)) -* match server subfiles with forward slash ([c2489a6](https://github.com/forcedotcom/source-tracking/commit/c2489a62c244a64fe0938e0eecdc087f4529b5ad)) -* normalize windows paths on commit, too ([4339e46](https://github.com/forcedotcom/source-tracking/commit/4339e46a1cb9cbeb4cc652572e340b60e3b5bc68)) -* one more fs/promises fixed for node12 ([71bafcf](https://github.com/forcedotcom/source-tracking/commit/71bafcf7738e60d8b86150199ef8d0687167a010)) -* path normalizing for metadata keys ([6190590](https://github.com/forcedotcom/source-tracking/commit/6190590df2c2e7cc9a25eab0fa8891e3b8df9057)) -* path normalizing from iso-git ([b8cddaf](https://github.com/forcedotcom/source-tracking/commit/b8cddaf40930bedd18f3edec578a030220454627)) -* status output on windows uses backslash ([78ac398](https://github.com/forcedotcom/source-tracking/commit/78ac3988d3d04e956f17f35c67de4d1144062fcb)) -* support windows path on commits with \\ ([5712af4](https://github.com/forcedotcom/source-tracking/commit/5712af4447ee03e30d7a5a769fc5ba58f6913552)) -* there could be nested LWC templates ([d833981](https://github.com/forcedotcom/source-tracking/commit/d8339810bf76c0ab75824faee7aef59ff9a2d89e)) -* turns bundle parts of SourceMembers into real MDtypes ([5646042](https://github.com/forcedotcom/source-tracking/commit/564604269be7d56499963699b51920b81227297f)) -* use correct var name ([0708312](https://github.com/forcedotcom/source-tracking/commit/0708312c5b4f11cb94539416d0a10b5432850310)) - +- again with the promises ([ad9dec5](https://github.com/forcedotcom/source-tracking/commit/ad9dec50336c61996456d48ee489426393c62329)) +- another attempt at node12 support ([c8736d0](https://github.com/forcedotcom/source-tracking/commit/c8736d0bbe53756d1b5572e00402e55af94003c1)) +- case of empty orgId dir ([1cb6333](https://github.com/forcedotcom/source-tracking/commit/1cb6333d14cfcee02b27711b6db273d5db31fc8e)) +- case on formatter filename ([02adf22](https://github.com/forcedotcom/source-tracking/commit/02adf22419d2bf81fb070d7d7d90f7d996bd1ada)) +- casing on imports ([d4425d9](https://github.com/forcedotcom/source-tracking/commit/d4425d9ee2ad77c4e28d32333025e59a3c7e3af9)) +- correct statusCommand description ([b834a2f](https://github.com/forcedotcom/source-tracking/commit/b834a2fa0213fbc72dbc6dc3a563cd92f413d222)) +- don't commit empty changelists ([67b9772](https://github.com/forcedotcom/source-tracking/commit/67b9772eccd6d2d4850322eb80f5a6113aac18e6)) +- export compatibility ([c6e5f7c](https://github.com/forcedotcom/source-tracking/commit/c6e5f7cba68ed6a7739b237adb027fda2442e8c4)) +- fix vscode image in readme ([441c15f](https://github.com/forcedotcom/source-tracking/commit/441c15f79dbaf4a97c84d9d6ddc923eae59bca34)) +- handle org:create's single tracking file ([008793d](https://github.com/forcedotcom/source-tracking/commit/008793d0fa15210ffb263cc5d179a0be8dcb05ff)) +- handle stash failures ([09dacc9](https://github.com/forcedotcom/source-tracking/commit/09dacc9484e48f3cba4813f3d733c66d2a30cd6b)) +- leif .yml merge [skip-validate-pr] ([ff10f84](https://github.com/forcedotcom/source-tracking/commit/ff10f84ec15757df55657ba73cc6976c5892595c)) +- local ST uses graceful via core2 ([3ba883f](https://github.com/forcedotcom/source-tracking/commit/3ba883ff2b02e27b0eb01a709f6c1e03ef91bb73)) +- match server subfiles with forward slash ([c2489a6](https://github.com/forcedotcom/source-tracking/commit/c2489a62c244a64fe0938e0eecdc087f4529b5ad)) +- normalize windows paths on commit, too ([4339e46](https://github.com/forcedotcom/source-tracking/commit/4339e46a1cb9cbeb4cc652572e340b60e3b5bc68)) +- one more fs/promises fixed for node12 ([71bafcf](https://github.com/forcedotcom/source-tracking/commit/71bafcf7738e60d8b86150199ef8d0687167a010)) +- path normalizing for metadata keys ([6190590](https://github.com/forcedotcom/source-tracking/commit/6190590df2c2e7cc9a25eab0fa8891e3b8df9057)) +- path normalizing from iso-git ([b8cddaf](https://github.com/forcedotcom/source-tracking/commit/b8cddaf40930bedd18f3edec578a030220454627)) +- status output on windows uses backslash ([78ac398](https://github.com/forcedotcom/source-tracking/commit/78ac3988d3d04e956f17f35c67de4d1144062fcb)) +- support windows path on commits with \\ ([5712af4](https://github.com/forcedotcom/source-tracking/commit/5712af4447ee03e30d7a5a769fc5ba58f6913552)) +- there could be nested LWC templates ([d833981](https://github.com/forcedotcom/source-tracking/commit/d8339810bf76c0ab75824faee7aef59ff9a2d89e)) +- turns bundle parts of SourceMembers into real MDtypes ([5646042](https://github.com/forcedotcom/source-tracking/commit/564604269be7d56499963699b51920b81227297f)) +- use correct var name ([0708312](https://github.com/forcedotcom/source-tracking/commit/0708312c5b4f11cb94539416d0a10b5432850310)) ### Features -* add commitlint and sample circleci config ([43e7fa4](https://github.com/forcedotcom/source-tracking/commit/43e7fa4a44dbcb9da37d21618678687f4edda644)) -* add new tests and upadte readme ([6a7ad54](https://github.com/forcedotcom/source-tracking/commit/6a7ad542f42ce75275ebacc78d50ee4dc0ab6f32)) -* add option to get remoteChanges with filePaths, use for Conflicts ([350a0d6](https://github.com/forcedotcom/source-tracking/commit/350a0d60599cfce2c432c223f4523c25a4f53c81)) -* basic using isogit ([f39e6c5](https://github.com/forcedotcom/source-tracking/commit/f39e6c5e305fcb2fdb6a27b343d9dc20800202c9)) -* conflict detection ([3e22774](https://github.com/forcedotcom/source-tracking/commit/3e22774d8949a1aa4302e62d8580b69c4b35aab5)) -* consolidate conflict handling, return data in error ([45178c7](https://github.com/forcedotcom/source-tracking/commit/45178c7b13ed61e657f9a07ea5b40f49f73f651a)) -* delete handling public for pull ([eb87eb7](https://github.com/forcedotcom/source-tracking/commit/eb87eb7dfa81ba5256735af7f2b8bc29dfb1e16b)) -* finish status, add clear/reset ([c71e66f](https://github.com/forcedotcom/source-tracking/commit/c71e66f7f7a3dc20d2c965349b5e01e15edabf36)) -* handle status ignore marking from STL ([2ec6fad](https://github.com/forcedotcom/source-tracking/commit/2ec6fad4b4f4f2e124da7e4f53cf8e534354d342)) -* ignorewarnings flag for push ([b13fd05](https://github.com/forcedotcom/source-tracking/commit/b13fd0534930fb063075c39e6f75ea46ab9d3be8)) -* migrate messages/descriptions ([8fea6e5](https://github.com/forcedotcom/source-tracking/commit/8fea6e5242c50865dd635412d7592164ab57fec4)) -* most of sourceStatus logic, code cleanup ([f100cb8](https://github.com/forcedotcom/source-tracking/commit/f100cb83f220b3724284ae69301712a08b14376d)) -* non-delete push works ([487a20e](https://github.com/forcedotcom/source-tracking/commit/487a20e48c428a02ef315b58db24b714d2de0416)) -* push supporting bundle types ([639d459](https://github.com/forcedotcom/source-tracking/commit/639d459101cd4990fa217f657b99d64517611383)) -* remote and conflicts ([f98ecf1](https://github.com/forcedotcom/source-tracking/commit/f98ecf17fc6cbe386d8edae6994500388b7e0ed6)) -* remote tracknig with UT ([cb805e5](https://github.com/forcedotcom/source-tracking/commit/cb805e5745020be9a266a261f584979713e4b351)) -* source tracking from toolbelt ([6c2ebb4](https://github.com/forcedotcom/source-tracking/commit/6c2ebb444ce5518eaa81402b685fe00f1090e437)) -* sourcemember polling like toolbelt ([abdd7b3](https://github.com/forcedotcom/source-tracking/commit/abdd7b3ad275ea4739673a6e1b1a99853f1de2da)) -* spinners while waiting on pull ([dfe5aea](https://github.com/forcedotcom/source-tracking/commit/dfe5aeae0a5f9a30eddfe96852e0dab025972e1e)) -* status result sorting ([b7b109c](https://github.com/forcedotcom/source-tracking/commit/b7b109cf3e7bcad60507618099873c717ff31f61)) -* sync customObj when their fields sync ([3ded96d](https://github.com/forcedotcom/source-tracking/commit/3ded96dbd7a7ea45cb8f97719b98bae294905c05)) -* throws if "old" source files are present ([4b868d8](https://github.com/forcedotcom/source-tracking/commit/4b868d8232769eec5e227052bf823a35baedd288)) -* typed push ([6e76812](https://github.com/forcedotcom/source-tracking/commit/6e7681263b81d3b692d002a3ce5deb8ef00bbd13)) -* virtualTree for deletes ([b425d77](https://github.com/forcedotcom/source-tracking/commit/b425d77b4fca5c6fbab2faab7490e3516bf3f547)) - +- add commitlint and sample circleci config ([43e7fa4](https://github.com/forcedotcom/source-tracking/commit/43e7fa4a44dbcb9da37d21618678687f4edda644)) +- add new tests and upadte readme ([6a7ad54](https://github.com/forcedotcom/source-tracking/commit/6a7ad542f42ce75275ebacc78d50ee4dc0ab6f32)) +- add option to get remoteChanges with filePaths, use for Conflicts ([350a0d6](https://github.com/forcedotcom/source-tracking/commit/350a0d60599cfce2c432c223f4523c25a4f53c81)) +- basic using isogit ([f39e6c5](https://github.com/forcedotcom/source-tracking/commit/f39e6c5e305fcb2fdb6a27b343d9dc20800202c9)) +- conflict detection ([3e22774](https://github.com/forcedotcom/source-tracking/commit/3e22774d8949a1aa4302e62d8580b69c4b35aab5)) +- consolidate conflict handling, return data in error ([45178c7](https://github.com/forcedotcom/source-tracking/commit/45178c7b13ed61e657f9a07ea5b40f49f73f651a)) +- delete handling public for pull ([eb87eb7](https://github.com/forcedotcom/source-tracking/commit/eb87eb7dfa81ba5256735af7f2b8bc29dfb1e16b)) +- finish status, add clear/reset ([c71e66f](https://github.com/forcedotcom/source-tracking/commit/c71e66f7f7a3dc20d2c965349b5e01e15edabf36)) +- handle status ignore marking from STL ([2ec6fad](https://github.com/forcedotcom/source-tracking/commit/2ec6fad4b4f4f2e124da7e4f53cf8e534354d342)) +- ignorewarnings flag for push ([b13fd05](https://github.com/forcedotcom/source-tracking/commit/b13fd0534930fb063075c39e6f75ea46ab9d3be8)) +- migrate messages/descriptions ([8fea6e5](https://github.com/forcedotcom/source-tracking/commit/8fea6e5242c50865dd635412d7592164ab57fec4)) +- most of sourceStatus logic, code cleanup ([f100cb8](https://github.com/forcedotcom/source-tracking/commit/f100cb83f220b3724284ae69301712a08b14376d)) +- non-delete push works ([487a20e](https://github.com/forcedotcom/source-tracking/commit/487a20e48c428a02ef315b58db24b714d2de0416)) +- push supporting bundle types ([639d459](https://github.com/forcedotcom/source-tracking/commit/639d459101cd4990fa217f657b99d64517611383)) +- remote and conflicts ([f98ecf1](https://github.com/forcedotcom/source-tracking/commit/f98ecf17fc6cbe386d8edae6994500388b7e0ed6)) +- remote tracknig with UT ([cb805e5](https://github.com/forcedotcom/source-tracking/commit/cb805e5745020be9a266a261f584979713e4b351)) +- source tracking from toolbelt ([6c2ebb4](https://github.com/forcedotcom/source-tracking/commit/6c2ebb444ce5518eaa81402b685fe00f1090e437)) +- sourcemember polling like toolbelt ([abdd7b3](https://github.com/forcedotcom/source-tracking/commit/abdd7b3ad275ea4739673a6e1b1a99853f1de2da)) +- spinners while waiting on pull ([dfe5aea](https://github.com/forcedotcom/source-tracking/commit/dfe5aeae0a5f9a30eddfe96852e0dab025972e1e)) +- status result sorting ([b7b109c](https://github.com/forcedotcom/source-tracking/commit/b7b109cf3e7bcad60507618099873c717ff31f61)) +- sync customObj when their fields sync ([3ded96d](https://github.com/forcedotcom/source-tracking/commit/3ded96dbd7a7ea45cb8f97719b98bae294905c05)) +- throws if "old" source files are present ([4b868d8](https://github.com/forcedotcom/source-tracking/commit/4b868d8232769eec5e227052bf823a35baedd288)) +- typed push ([6e76812](https://github.com/forcedotcom/source-tracking/commit/6e7681263b81d3b692d002a3ce5deb8ef00bbd13)) +- virtualTree for deletes ([b425d77](https://github.com/forcedotcom/source-tracking/commit/b425d77b4fca5c6fbab2faab7490e3516bf3f547)) ### Performance Improvements -* use flatmap ([8ef5883](https://github.com/forcedotcom/source-tracking/commit/8ef5883ea94e811d4ef2ab37a4999b80df813aa4)) - +- use flatmap ([8ef5883](https://github.com/forcedotcom/source-tracking/commit/8ef5883ea94e811d4ef2ab37a4999b80df813aa4)) ### Reverts -* Revert "refactor: move Org from class/init to the only method that needs it (JIT)" ([367bb56](https://github.com/forcedotcom/source-tracking/commit/367bb5617fb00b85bcf9bdcba6cb4a86e95b7395)) - - - +- Revert "refactor: move Org from class/init to the only method that needs it (JIT)" ([367bb56](https://github.com/forcedotcom/source-tracking/commit/367bb5617fb00b85bcf9bdcba6cb4a86e95b7395)) diff --git a/package.json b/package.json index 55dc3aee..4c9827d0 100644 --- a/package.json +++ b/package.json @@ -51,8 +51,8 @@ "dependencies": { "@oclif/core": "^3.26.6", "@salesforce/core": "^7.3.9", - "@salesforce/kit": "^3.1.1", - "@salesforce/source-deploy-retrieve": "^11.6.2", + "@salesforce/kit": "^3.1.2", + "@salesforce/source-deploy-retrieve": "^11.6.3", "@salesforce/ts-types": "^2.0.9", "fast-xml-parser": "^4.3.6", "graceful-fs": "^4.2.11", diff --git a/src/shared/local/functions.ts b/src/shared/local/functions.ts new file mode 100644 index 00000000..0a039c54 --- /dev/null +++ b/src/shared/local/functions.ts @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2023, salesforce.com, inc. + * All rights reserved. + * Licensed under the BSD 3-Clause license. + * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ +import path from 'node:path'; +import { WORKDIR, HEAD } from './localShadowRepo'; +import { FILE } from './localShadowRepo'; + +import { StatusRow } from './types'; + +// filenames were normalized when read from isogit + +export const toFilenames = (rows: StatusRow[]): string[] => rows.map((row) => row[FILE]); +export const isDeleted = (status: StatusRow): boolean => status[WORKDIR] === 0; +export const isAdded = (status: StatusRow): boolean => status[HEAD] === 0 && status[WORKDIR] === 2; +export const ensureWindows = (filepath: string): string => path.win32.normalize(filepath); diff --git a/src/shared/localShadowRepo.ts b/src/shared/local/localShadowRepo.ts similarity index 52% rename from src/shared/localShadowRepo.ts rename to src/shared/local/localShadowRepo.ts index 0ed52ed7..41f6efdb 100644 --- a/src/shared/localShadowRepo.ts +++ b/src/shared/local/localShadowRepo.ts @@ -11,24 +11,18 @@ import * as fs from 'graceful-fs'; import { NamedPackageDir, Lifecycle, Logger, SfError } from '@salesforce/core'; import { env } from '@salesforce/kit'; // @ts-expect-error isogit has both ESM and CJS exports but node16 module/resolution identifies it as ESM -import git, { Walker } from 'isomorphic-git'; +import git from 'isomorphic-git'; import { Performance } from '@oclif/core'; -import { - RegistryAccess, - MetadataResolver, - VirtualTreeContainer, - SourceComponent, -} from '@salesforce/source-deploy-retrieve'; -import { chunkArray, excludeLwcLocalOnlyTest, folderContainsPath } from './functions'; -import { sourceComponentGuard } from './guards'; +import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; +import { chunkArray, excludeLwcLocalOnlyTest, folderContainsPath } from '../functions'; +import { filenameMatchesToMap, getMatches } from './moveDetection'; +import { StatusRow } from './types'; +import { isDeleted, isAdded, toFilenames } from './functions'; /** returns the full path to where we store the shadow repo */ const getGitDir = (orgId: string, projectPath: string): string => path.join(projectPath, '.sf', 'orgs', orgId, 'localSourceTracking'); -// filenames were normalized when read from isogit -const toFilenames = (rows: StatusRow[]): string[] => rows.map((row) => row[FILE]); - // catch isogit's `InternalError` to avoid people report CLI issues in isogit repo. // See: https://github.com/forcedotcom/cli/issues/2416 const redirectToCliRepoError = (e: unknown): never => { @@ -42,10 +36,6 @@ const redirectToCliRepoError = (e: unknown): never => { throw e; }; -type FileInfo = { filename: string; hash: string; basename: string }; -type StringMap = Map; -type AddAndDeleteMaps = { addedMap: StringMap; deletedMap: StringMap }; - type ShadowRepoOptions = { orgId: string; projectPath: string; @@ -53,13 +43,10 @@ type ShadowRepoOptions = { registry: RegistryAccess; }; -// https://isomorphic-git.org/docs/en/statusMatrix#docsNav -type StatusRow = [file: string, head: number, workdir: number, stage: number]; - // array members for status results -const FILE = 0; -const HEAD = 1; -const WORKDIR = 2; +export const FILE = 0; +export const HEAD = 1; +export const WORKDIR = 2; // We don't use STAGE (StatusRow[3]). Changes are added and committed in one step type CommitRequest = { @@ -69,32 +56,37 @@ type CommitRequest = { needsUpdatedStatus?: boolean; }; +const IS_WINDOWS = os.type() === 'Windows_NT'; + +/** do not try to add more than this many files at a time through isogit. You'll hit EMFILE: too many open files even with graceful-fs */ + +const MAX_FILE_ADD = env.getNumber( + 'SF_SOURCE_TRACKING_BATCH_SIZE', + env.getNumber('SFDX_SOURCE_TRACKING_BATCH_SIZE', IS_WINDOWS ? 8000 : 15_000) +); + export class ShadowRepo { private static instanceMap = new Map(); public gitDir: string; public projectPath: string; - private packageDirs!: NamedPackageDir[]; + /** + * packageDirs converted to project-relative posix style paths + * iso-git uses relative, posix paths + * but packageDirs has already resolved / normalized them + * so we need to make them project-relative again and convert if windows + */ + private packageDirs: string[]; private status!: StatusRow[]; private logger!: Logger; - private readonly isWindows: boolean; private readonly registry: RegistryAccess; - /** do not try to add more than this many files at a time through isogit. You'll hit EMFILE: too many open files even with graceful-fs */ - private readonly maxFileAdd: number; - private constructor(options: ShadowRepoOptions) { this.gitDir = getGitDir(options.orgId, options.projectPath); this.projectPath = options.projectPath; - this.packageDirs = options.packageDirs; - this.isWindows = os.type() === 'Windows_NT'; + this.packageDirs = options.packageDirs.map(packageDirToRelativePosixPath(options.projectPath)); this.registry = options.registry; - - this.maxFileAdd = env.getNumber( - 'SF_SOURCE_TRACKING_BATCH_SIZE', - env.getNumber('SFDX_SOURCE_TRACKING_BATCH_SIZE', this.isWindows ? 8000 : 15_000) - ); } // think of singleton behavior but unique to the projectPath @@ -157,10 +149,6 @@ export class ShadowRepo { if (!this.status || noCache) { const marker = Performance.mark('@salesforce/source-tracking', 'localShadowRepo.getStatus#withoutCache'); - // iso-git uses relative, posix paths - // but packageDirs has already resolved / normalized them - // so we need to make them project-relative again and convert if windows - const pkgDirs = this.packageDirs.map(packageDirToRelativePosixPath(this.isWindows)(this.projectPath)); try { // status hasn't been initialized yet @@ -168,17 +156,9 @@ export class ShadowRepo { fs, dir: this.projectPath, gitdir: this.gitDir, - filepaths: pkgDirs, + filepaths: this.packageDirs, ignored: true, - filter: (f) => - // no hidden files - !f.includes(`${path.sep}.`) && - // no lwc tests - excludeLwcLocalOnlyTest(f) && - // no gitignore files - !f.endsWith('.gitignore') && - // isogit uses `startsWith` for filepaths so it's possible to get a false positive - pkgDirs.some(folderContainsPath(f)), + filter: fileFilter(this.packageDirs), }); // Check for moved files and update local git status accordingly @@ -194,7 +174,7 @@ export class ShadowRepo { redirectToCliRepoError(e); } // isomorphic-git stores things in unix-style tree. Convert to windows-style if necessary - if (this.isWindows) { + if (IS_WINDOWS) { this.status = this.status.map((row) => [path.normalize(row[FILE]), row[HEAD], row[WORKDIR], row[3]]); } marker?.stop(); @@ -286,8 +266,8 @@ export class ShadowRepo { if (deployedFiles.length) { const chunks = chunkArray( // these are stored in posix/style/path format. We have to convert inbound stuff from windows - [...new Set(this.isWindows ? deployedFiles.map(normalize).map(ensurePosix) : deployedFiles)], - this.maxFileAdd + [...new Set(IS_WINDOWS ? deployedFiles.map(normalize).map(ensurePosix) : deployedFiles)], + MAX_FILE_ADD ); for (const chunk of chunks) { try { @@ -310,7 +290,7 @@ export class ShadowRepo { data: e.errors.map((err) => err.message), cause: e, actions: [ - `One potential reason you're getting this error is that the number of files that source tracking is batching exceeds your user-specific file limits. Increase your hard file limit in the same session by executing 'ulimit -Hn ${this.maxFileAdd}'. Or set the 'SFDX_SOURCE_TRACKING_BATCH_SIZE' environment variable to a value lower than the output of 'ulimit -Hn'.\nNote: Don't set this environment variable too close to the upper limit or your system will still hit it. If you continue to get the error, lower the value of the environment variable even more.`, + `One potential reason you're getting this error is that the number of files that source tracking is batching exceeds your user-specific file limits. Increase your hard file limit in the same session by executing 'ulimit -Hn ${MAX_FILE_ADD}'. Or set the 'SFDX_SOURCE_TRACKING_BATCH_SIZE' environment variable to a value lower than the output of 'ulimit -Hn'.\nNote: Don't set this environment variable too close to the upper limit or your system will still hit it. If you continue to get the error, lower the value of the environment variable even more.`, ], }); } @@ -325,9 +305,7 @@ export class ShadowRepo { const deleteMarker = Performance.mark('@salesforce/source-tracking', 'localShadowRepo.commitChanges#delete', { deletedFiles: deletedFiles.length, }); - for (const filepath of [ - ...new Set(this.isWindows ? deletedFiles.map(normalize).map(ensurePosix) : deletedFiles), - ]) { + for (const filepath of [...new Set(IS_WINDOWS ? deletedFiles.map(normalize).map(ensurePosix) : deletedFiles)]) { try { // these need to be done sequentially because isogit manages file locking. Isogit remove does not support multiple files at once // eslint-disable-next-line no-await-in-loop @@ -364,53 +342,13 @@ export class ShadowRepo { } private async detectMovedFiles(): Promise { - const { addedFilenamesWithMatches, deletedFilenamesWithMatches } = getMatches(await this.getStatus()) ?? {}; - if (!addedFilenamesWithMatches || !deletedFilenamesWithMatches) return; + const matchingFiles = getMatches(await this.getStatus()); + if (!matchingFiles.added.size || !matchingFiles.deleted.size) return; const movedFilesMarker = Performance.mark('@salesforce/source-tracking', 'localShadowRepo.detectMovedFiles'); + const matches = await filenameMatchesToMap(IS_WINDOWS)(this.registry)(this.projectPath)(this.gitDir)(matchingFiles); - // Track how long it takes to gather the oid information from the git trees - const getInfoMarker = Performance.mark('@salesforce/source-tracking', 'localShadowRepo.detectMovedFiles#getInfo', { - addedFiles: addedFilenamesWithMatches.length, - deletedFiles: deletedFilenamesWithMatches.length, - }); - - const getInfo = async (targetTree: Walker, filenameSet: Set): Promise => - // Unable to properly type the return value of git.walk without using "as", ignoring linter - // eslint-disable-next-line @typescript-eslint/no-unsafe-return - git.walk({ - fs, - dir: this.projectPath, - gitdir: this.gitDir, - trees: [targetTree], - map: async (filename, [tree]) => - filenameSet.has(filename) && (await tree?.type()) === 'blob' - ? { - filename, - hash: await tree?.oid(), - basename: path.basename(filename), - } - : undefined, - }); - - // We found file adds and deletes with the same basename - // The have likely been moved, confirm by comparing their hashes (oids) - const [addedInfo, deletedInfo] = await Promise.all([ - getInfo(git.WORKDIR(), new Set(addedFilenamesWithMatches)), - getInfo(git.TREE({ ref: 'HEAD' }), new Set(deletedFilenamesWithMatches)), - ]); - - getInfoMarker?.stop(); - - const matchingNameAndHashes = compareHashes(await buildMaps(addedInfo, deletedInfo)); - if (matchingNameAndHashes.size === 0) { - return movedFilesMarker?.stop(); - } - const matches = removeNonMatches(matchingNameAndHashes, this.registry, this.isWindows); - - if (matches.size === 0) { - return movedFilesMarker?.stop(); - } + if (matches.size === 0) return movedFilesMarker?.stop(); this.logger.debug( [ @@ -433,136 +371,23 @@ export class ShadowRepo { } const packageDirToRelativePosixPath = - (isWindows: boolean) => (projectPath: string) => (packageDir: NamedPackageDir): string => - isWindows + IS_WINDOWS ? ensurePosix(path.relative(projectPath, packageDir.fullPath)) : path.relative(projectPath, packageDir.fullPath); const normalize = (filepath: string): string => path.normalize(filepath); -const ensureWindows = (filepath: string): string => path.win32.normalize(filepath); const ensurePosix = (filepath: string): string => filepath.split(path.sep).join(path.posix.sep); -const buildMap = (info: FileInfo[]): StringMap[] => { - const map: StringMap = new Map(); - const ignore: StringMap = new Map(); - info.forEach((i) => { - const key = `${i.hash}#${i.basename}`; - // If we find a duplicate key, we need to remove it and ignore it in the future. - // Finding duplicate hash#basename means that we cannot accurately determine where it was moved to or from - if (map.has(key) || ignore.has(key)) { - map.delete(key); - ignore.set(key, i.filename); - } else { - map.set(key, i.filename); - } - }); - return [map, ignore]; -}; - -/** compare delete and adds from git.status, matching basenames of the files. returns early when there's nothing to match */ -const getMatches = ( - status: StatusRow[] -): { deletedFilenamesWithMatches: string[]; addedFilenamesWithMatches: string[] } | undefined => { - // We check for moved files in incremental steps and exit as early as we can to avoid any performance degradation - // Deleted files will be more rare than added files, so we'll check them first and exit early if there are none - const deletedFiles = status.filter(isDeleted); - if (!deletedFiles.length) return; - - const addedFiles = status.filter(isAdded); - if (!addedFiles.length) return; - - // Both arrays have contents, look for matching basenames - const addedFilenames = toFilenames(addedFiles); - const deletedFilenames = toFilenames(deletedFiles); - - // Build Sets of basenames for added and deleted files for quick lookups - const addedBasenames = new Set(addedFilenames.map((filename) => path.basename(filename))); - const deletedBasenames = new Set(deletedFilenames.map((filename) => path.basename(filename))); - - // Again, we filter over the deleted files first and exit early if there are no filename matches - const deletedFilenamesWithMatches = deletedFilenames.filter((f) => addedBasenames.has(path.basename(f))); - if (!deletedFilenamesWithMatches.length) return; - - const addedFilenamesWithMatches = addedFilenames.filter((f) => deletedBasenames.has(path.basename(f))); - if (!addedFilenamesWithMatches.length) return; - - return { addedFilenamesWithMatches, deletedFilenamesWithMatches }; -}; - -const isDeleted = (status: StatusRow): boolean => status[WORKDIR] === 0; -const isAdded = (status: StatusRow): boolean => status[HEAD] === 0 && status[WORKDIR] === 2; - -/** build maps of the add/deletes with filenames, returning the matches Logs if non-matches */ -const buildMaps = async (addedInfo: FileInfo[], deletedInfo: FileInfo[]): Promise => { - const [addedMap, addedIgnoredMap] = buildMap(addedInfo); - const [deletedMap, deletedIgnoredMap] = buildMap(deletedInfo); - - // If we detected any files that have the same basename and hash, emit a warning and send telemetry - // These files will still show up as expected in the `sf project deploy preview` output - // We could add more logic to determine and display filepaths that we ignored... - // but this is likely rare enough to not warrant the added complexity - // Telemetry will help us determine how often this occurs - if (addedIgnoredMap.size || deletedIgnoredMap.size) { - const message = 'Files were found that have the same basename and hash. Skipping the commit of these files'; - const logger = Logger.childFromRoot('ShadowRepo.compareHashes'); - logger.warn(message); - const lifecycle = Lifecycle.getInstance(); - await Promise.all([ - lifecycle.emitWarning(message), - lifecycle.emitTelemetry({ eventName: 'moveFileHashBasenameCollisionsDetected' }), - ]); - } - return { addedMap, deletedMap }; -}; - -/** builds a map of the values from both maps */ -const compareHashes = ({ addedMap, deletedMap }: AddAndDeleteMaps): StringMap => { - const matches: StringMap = new Map(); - - for (const [addedKey, addedValue] of addedMap) { - const deletedValue = deletedMap.get(addedKey); - if (deletedValue) { - matches.set(addedValue, deletedValue); - } - } - - return matches; -}; - -const resolveType = (resolver: MetadataResolver, filenames: string[]): SourceComponent[] => - filenames - .flatMap((filename) => { - try { - return resolver.getComponentsFromPath(filename); - } catch (e) { - const logger = Logger.childFromRoot('ShadowRepo.compareTypes'); - logger.warn(`unable to resolve ${filename}`); - return undefined; - } - }) - .filter(sourceComponentGuard); - -const removeNonMatches = (matches: StringMap, registry: RegistryAccess, isWindows: boolean): StringMap => { - const addedFiles = isWindows ? [...matches.keys()].map(ensureWindows) : [...matches.keys()]; - const deletedFiles = isWindows ? [...matches.values()].map(ensureWindows) : [...matches.values()]; - const resolverAdded = new MetadataResolver(registry, VirtualTreeContainer.fromFilePaths(addedFiles)); - const resolverDeleted = new MetadataResolver(registry, VirtualTreeContainer.fromFilePaths(deletedFiles)); - - return new Map( - [...matches.entries()].filter(([addedFile, deletedFile]) => { - // we're only ever using the first element of the arrays - const [resolvedAdded] = resolveType(resolverAdded, isWindows ? [ensureWindows(addedFile)] : [addedFile]); - const [resolvedDeleted] = resolveType(resolverDeleted, isWindows ? [ensureWindows(deletedFile)] : [deletedFile]); - return ( - // they could match, or could both be undefined (because unresolved by SDR) - resolvedAdded?.type.name === resolvedDeleted?.type.name && - // parent names match, if resolved and there are parents - resolvedAdded?.parent?.name === resolvedDeleted?.parent?.name && - // parent types match, if resolved and there are parents - resolvedAdded?.parent?.type.name === resolvedDeleted?.parent?.type.name - ); - }) - ); -}; +const fileFilter = + (packageDirs: string[]) => + (f: string): boolean => + // no hidden files + !f.includes(`${path.sep}.`) && + // no lwc tests + excludeLwcLocalOnlyTest(f) && + // no gitignore files + !f.endsWith('.gitignore') && + // isogit uses `startsWith` for filepaths so it's possible to get a false positive + packageDirs.some(folderContainsPath(f)); diff --git a/src/shared/local/moveDetection.ts b/src/shared/local/moveDetection.ts new file mode 100644 index 00000000..a2a58d15 --- /dev/null +++ b/src/shared/local/moveDetection.ts @@ -0,0 +1,220 @@ +/* + * Copyright (c) 2023, salesforce.com, inc. + * All rights reserved. + * Licensed under the BSD 3-Clause license. + * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ +import path from 'node:path'; +import { Logger, Lifecycle } from '@salesforce/core'; +import { + MetadataResolver, + SourceComponent, + RegistryAccess, + VirtualTreeContainer, +} from '@salesforce/source-deploy-retrieve'; +// @ts-expect-error isogit has both ESM and CJS exports but node16 module/resolution identifies it as ESM +import git from 'isomorphic-git'; +import * as fs from 'graceful-fs'; +import { Performance } from '@oclif/core'; +import { sourceComponentGuard } from '../guards'; +import { isDeleted, isAdded, ensureWindows, toFilenames } from './functions'; +import { AddAndDeleteMaps, FilenameBasenameHash, StatusRow, StringMap } from './types'; + +type AddAndDeleteFileInfos = { addedInfo: FilenameBasenameHash[]; deletedInfo: FilenameBasenameHash[] }; +type AddedAndDeletedFilenames = { added: Set; deleted: Set }; + +/** composed functions to simplified use by the shadowRepo class */ +export const filenameMatchesToMap = + (isWindows: boolean) => + (registry: RegistryAccess) => + (projectPath: string) => + (gitDir: string) => + async ({ added, deleted }: AddedAndDeletedFilenames): Promise => + removeNonMatches(isWindows)(registry)( + compareHashes( + await buildMaps( + await toFileInfo({ + projectPath, + gitDir, + added, + deleted, + }) + ) + ) + ); + +/** compare delete and adds from git.status, matching basenames of the files. returns early when there's nothing to match */ +export const getMatches = (status: StatusRow[]): AddedAndDeletedFilenames => { + // We check for moved files in incremental steps and exit as early as we can to avoid any performance degradation + // Deleted files will be more rare than added files, so we'll check them first and exit early if there are none + const emptyResult = { added: new Set(), deleted: new Set() }; + const deletedFiles = status.filter(isDeleted); + if (!deletedFiles.length) return emptyResult; + + const addedFiles = status.filter(isAdded); + if (!addedFiles.length) return emptyResult; + + // Both arrays have contents, look for matching basenames + const addedFilenames = toFilenames(addedFiles); + const deletedFilenames = toFilenames(deletedFiles); + + // Build Sets of basenames for added and deleted files for quick lookups + const addedBasenames = new Set(addedFilenames.map((filename) => path.basename(filename))); + const deletedBasenames = new Set(deletedFilenames.map((filename) => path.basename(filename))); + + // TODO: when node 22 is everywhere, we can use Set.prototype.intersection + // Again, we filter over the deleted files first and exit early if there are no filename matches + const deletedFilenamesWithMatches = new Set(deletedFilenames.filter((f) => addedBasenames.has(path.basename(f)))); + if (!deletedFilenamesWithMatches.size) return emptyResult; + + const addedFilenamesWithMatches = new Set(addedFilenames.filter((f) => deletedBasenames.has(path.basename(f)))); + if (!addedFilenamesWithMatches.size) return emptyResult; + + return { added: addedFilenamesWithMatches, deleted: deletedFilenamesWithMatches }; +}; + +/** build maps of the add/deletes with filenames, returning the matches Logs if non-matches */ +const buildMaps = async ({ addedInfo, deletedInfo }: AddAndDeleteFileInfos): Promise => { + const [addedMap, addedIgnoredMap] = buildMap(addedInfo); + const [deletedMap, deletedIgnoredMap] = buildMap(deletedInfo); + + // If we detected any files that have the same basename and hash, emit a warning and send telemetry + // These files will still show up as expected in the `sf project deploy preview` output + // We could add more logic to determine and display filepaths that we ignored... + // but this is likely rare enough to not warrant the added complexity + // Telemetry will help us determine how often this occurs + if (addedIgnoredMap.size || deletedIgnoredMap.size) { + const message = 'Files were found that have the same basename and hash. Skipping the commit of these files'; + const logger = Logger.childFromRoot('ShadowRepo.compareHashes'); + logger.warn(message); + const lifecycle = Lifecycle.getInstance(); + await Promise.all([ + lifecycle.emitWarning(message), + lifecycle.emitTelemetry({ eventName: 'moveFileHashBasenameCollisionsDetected' }), + ]); + } + return { addedMap, deletedMap }; +}; + +/** builds a map of the values from both maps */ +const compareHashes = ({ addedMap, deletedMap }: AddAndDeleteMaps): StringMap => { + const matches: StringMap = new Map(); + + for (const [addedKey, addedValue] of addedMap) { + const deletedValue = deletedMap.get(addedKey); + if (deletedValue) { + matches.set(addedValue, deletedValue); + } + } + + return matches; +}; + +/** given a StringMap, resolve the metadata types and return things that having matching type/parent */ +const removeNonMatches = + (isWindows: boolean) => + (registry: RegistryAccess) => + (matches: StringMap): StringMap => { + if (!matches.size) return matches; + const addedFiles = isWindows ? [...matches.keys()].map(ensureWindows) : [...matches.keys()]; + const deletedFiles = isWindows ? [...matches.values()].map(ensureWindows) : [...matches.values()]; + const resolverAdded = new MetadataResolver(registry, VirtualTreeContainer.fromFilePaths(addedFiles)); + const resolverDeleted = new MetadataResolver(registry, VirtualTreeContainer.fromFilePaths(deletedFiles)); + + return new Map( + [...matches.entries()].filter(([addedFile, deletedFile]) => { + // we're only ever using the first element of the arrays + const [resolvedAdded] = resolveType(resolverAdded, isWindows ? [ensureWindows(addedFile)] : [addedFile]); + const [resolvedDeleted] = resolveType( + resolverDeleted, + isWindows ? [ensureWindows(deletedFile)] : [deletedFile] + ); + return ( + // they could match, or could both be undefined (because unresolved by SDR) + resolvedAdded?.type.name === resolvedDeleted?.type.name && + // parent names match, if resolved and there are parents + resolvedAdded?.parent?.name === resolvedDeleted?.parent?.name && + // parent types match, if resolved and there are parents + resolvedAdded?.parent?.type.name === resolvedDeleted?.parent?.type.name + ); + }) + ); + }; + +/** enrich the filenames with basename and oid (hash) */ +const toFileInfo = async ({ + projectPath, + gitDir, + added, + deleted, +}: { + projectPath: string; + gitDir: string; + added: Set; + deleted: Set; +}): Promise => { + // Track how long it takes to gather the oid information from the git trees + const getInfoMarker = Performance.mark('@salesforce/source-tracking', 'localShadowRepo.detectMovedFiles#toFileInfo', { + addedFiles: added.size, + deletedFiles: deleted.size, + }); + + const headRef = await git.resolveRef({ fs, dir: projectPath, gitdir: gitDir, ref: 'HEAD' }); + const [addedInfo, deletedInfo] = await Promise.all([ + await Promise.all(Array.from(added).map(getHashForAddedFile(projectPath))), + await Promise.all(Array.from(deleted).map(getHashFromActualFileContents(gitDir)(projectPath)(headRef))), + ]); + + getInfoMarker?.stop(); + + return { addedInfo, deletedInfo }; +}; + +const buildMap = (info: FilenameBasenameHash[]): StringMap[] => { + const map: StringMap = new Map(); + const ignore: StringMap = new Map(); + info.map((i) => { + const key = `${i.hash}#${i.basename}`; + // If we find a duplicate key, we need to remove it and ignore it in the future. + // Finding duplicate hash#basename means that we cannot accurately determine where it was moved to or from + if (map.has(key) || ignore.has(key)) { + map.delete(key); + ignore.set(key, i.filename); + } else { + map.set(key, i.filename); + } + }); + return [map, ignore]; +}; + +const getHashForAddedFile = + (projectPath: string) => + async (filepath: string): Promise => ({ + filename: filepath, + basename: path.basename(filepath), + hash: (await git.hashBlob({ object: await fs.promises.readFile(path.join(projectPath, filepath)) })).oid, + }); + +const resolveType = (resolver: MetadataResolver, filenames: string[]): SourceComponent[] => + filenames + .flatMap((filename) => { + try { + return resolver.getComponentsFromPath(filename); + } catch (e) { + const logger = Logger.childFromRoot('ShadowRepo.compareTypes'); + logger.warn(`unable to resolve ${filename}`); + return undefined; + } + }) + .filter(sourceComponentGuard); + +/** where we don't have git objects to use, read the file contents to generate the hash */ +const getHashFromActualFileContents = + (gitdir: string) => + (projectPath: string) => + (oid: string) => + async (filepath: string): Promise => ({ + filename: filepath, + basename: path.basename(filepath), + hash: (await git.readBlob({ fs, dir: projectPath, gitdir, filepath, oid })).oid, + }); diff --git a/src/shared/local/types.ts b/src/shared/local/types.ts new file mode 100644 index 00000000..b7d7ed1f --- /dev/null +++ b/src/shared/local/types.ts @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2023, salesforce.com, inc. + * All rights reserved. + * Licensed under the BSD 3-Clause license. + * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ +export type FilenameBasenameHash = { filename: string; hash: string; basename: string }; +export type StringMap = Map; +export type AddAndDeleteMaps = { addedMap: StringMap; deletedMap: StringMap }; // https://isomorphic-git.org/docs/en/statusMatrix#docsNav + +export type StatusRow = [file: string, head: number, workdir: number, stage: number]; diff --git a/src/sourceTracking.ts b/src/sourceTracking.ts index 9198001f..30484a05 100644 --- a/src/sourceTracking.ts +++ b/src/sourceTracking.ts @@ -30,7 +30,7 @@ import { import { filePathsFromMetadataComponent } from '@salesforce/source-deploy-retrieve/lib/src/utils/filePathGenerator'; import { Performance } from '@oclif/core'; import { RemoteSourceTrackingService, remoteChangeElementToChangeResult } from './shared/remoteSourceTrackingService'; -import { ShadowRepo } from './shared/localShadowRepo'; +import { ShadowRepo } from './shared/local/localShadowRepo'; import { throwIfConflicts, findConflictsInComponentSet, getDedupedConflictsFromChanges } from './shared/conflicts'; import { RemoteSyncInput, diff --git a/test/nuts/local/commitPerf.nut.ts b/test/nuts/local/commitPerf.nut.ts index 337fa14b..4dcd32ef 100644 --- a/test/nuts/local/commitPerf.nut.ts +++ b/test/nuts/local/commitPerf.nut.ts @@ -8,7 +8,7 @@ import path from 'node:path'; import { TestSession } from '@salesforce/cli-plugins-testkit'; import { expect } from 'chai'; import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../../src/shared/local/localShadowRepo'; describe('perf testing for big commits', () => { let session: TestSession; diff --git a/test/nuts/local/localTrackingFileMovesDecomposedChild.nut.ts b/test/nuts/local/localTrackingFileMovesDecomposedChild.nut.ts index c9aad857..7f118dc9 100644 --- a/test/nuts/local/localTrackingFileMovesDecomposedChild.nut.ts +++ b/test/nuts/local/localTrackingFileMovesDecomposedChild.nut.ts @@ -10,14 +10,15 @@ import { TestSession } from '@salesforce/cli-plugins-testkit'; import { expect } from 'chai'; import * as fs from 'graceful-fs'; import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../../src/shared/local/localShadowRepo'; /* eslint-disable no-unused-expressions */ describe('ignores moved files that are children of a decomposed metadata type', () => { + const FIELD = path.join('fields', 'Account__c.field-meta.xml'); let session: TestSession; let repo: ShadowRepo; - let filesToSync: string[]; + let objectsDir: string; before(async () => { session = await TestSession.create({ @@ -26,12 +27,17 @@ describe('ignores moved files that are children of a decomposed metadata type', }, devhubAuthStrategy: 'NONE', }); + objectsDir = path.join(session.project.dir, 'force-app', 'main', 'default', 'objects'); }); after(async () => { await session?.clean(); }); + afterEach(() => { + delete process.env.SF_BETA_TRACK_FILE_MOVES; + }); + it('initialize the local tracking', async () => { repo = await ShadowRepo.getInstance({ orgId: 'fakeOrgId', @@ -44,32 +50,12 @@ describe('ignores moved files that are children of a decomposed metadata type', it('should ignore moved child metadata', async () => { expect(process.env.SF_BETA_TRACK_FILE_MOVES).to.be.undefined; process.env.SF_BETA_TRACK_FILE_MOVES = 'true'; - // Commit the existing class files - filesToSync = await repo.getChangedFilenames(); + // Commit the existing files + const filesToSync = await repo.getChangedFilenames(); await repo.commitChanges({ deployedFiles: filesToSync }); - - // move all the classes to the new folder - const objectFieldOld = path.join( - session.project.dir, - 'force-app', - 'main', - 'default', - 'objects', - 'Order__c', - 'fields', - 'Account__c.field-meta.xml' - ); - const objectFieldNew = path.join( - session.project.dir, - 'force-app', - 'main', - 'default', - 'objects', - 'Product__c', - 'fields', - 'Account__c.field-meta.xml' - ); - // fs.mkdirSync(path.join(session.project.dir, 'force-app', 'main', 'foo'), { recursive: true }); + // move the field from one object to another + const objectFieldOld = path.join(objectsDir, 'Order__c', FIELD); + const objectFieldNew = path.join(objectsDir, 'Product__c', FIELD); fs.renameSync(objectFieldOld, objectFieldNew); await repo.getStatus(true); @@ -78,6 +64,27 @@ describe('ignores moved files that are children of a decomposed metadata type', .to.be.an('array') .with.lengthOf(2); - delete process.env.SF_BETA_TRACK_FILE_MOVES; + // put it back how it was and verify the tracking + fs.renameSync(objectFieldNew, objectFieldOld); + await repo.getStatus(true); + + expect(await repo.getChangedFilenames()) + .to.be.an('array') + .with.lengthOf(0); + }); + + it('should clear tracking when the field is moved to another dir', async () => { + const newDir = path.join(session.project.dir, 'force-app', 'other', 'objects', 'Order__c', 'fields'); + await fs.promises.mkdir(newDir, { + recursive: true, + }); + const objectFieldOld = path.join(objectsDir, 'Order__c', FIELD); + const objectFieldNew = path.join(objectsDir, 'Order__c', FIELD); + fs.renameSync(objectFieldOld, objectFieldNew); + await repo.getStatus(true); + + expect(await repo.getChangedFilenames()) + .to.be.an('array') + .with.lengthOf(0); }); }); diff --git a/test/nuts/local/localTrackingFileMovesImage.nut.ts b/test/nuts/local/localTrackingFileMovesImage.nut.ts index fa18edf0..5b38fdb4 100644 --- a/test/nuts/local/localTrackingFileMovesImage.nut.ts +++ b/test/nuts/local/localTrackingFileMovesImage.nut.ts @@ -10,7 +10,7 @@ import { TestSession } from '@salesforce/cli-plugins-testkit'; import { expect } from 'chai'; import * as fs from 'graceful-fs'; import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../../src/shared/local/localShadowRepo'; /* eslint-disable no-unused-expressions */ @@ -19,6 +19,7 @@ describe('it detects image file moves ', () => { let session: TestSession; let repo: ShadowRepo; let filesToSync: string[]; + let staticDir: string; before(async () => { session = await TestSession.create({ @@ -27,6 +28,7 @@ describe('it detects image file moves ', () => { }, devhubAuthStrategy: 'NONE', }); + staticDir = path.join(session.project.dir, 'force-app', 'main', 'default', 'staticresources'); }); after(async () => { @@ -50,28 +52,12 @@ describe('it detects image file moves ', () => { await repo.commitChanges({ deployedFiles: filesToSync }); // move all the classes to the new folder - fs.mkdirSync(path.join(session.project.dir, 'force-app', 'main', 'default', 'staticresources', 'bike_assets_new'), { + fs.mkdirSync(path.join(staticDir, 'bike_assets_new'), { recursive: true, }); fs.renameSync( - path.join( - session.project.dir, - 'force-app', - 'main', - 'default', - 'staticresources', - 'bike_assets', - 'CyclingGrass.jpg' - ), - path.join( - session.project.dir, - 'force-app', - 'main', - 'default', - 'staticresources', - 'bike_assets_new', - 'CyclingGrass.jpg' - ) + path.join(staticDir, 'bike_assets', 'CyclingGrass.jpg'), + path.join(staticDir, 'bike_assets_new', 'CyclingGrass.jpg') ); await repo.getStatus(true); diff --git a/test/nuts/local/localTrackingFileMovesScale.nut.ts b/test/nuts/local/localTrackingFileMovesScale.nut.ts index f8e34f53..5a5f1458 100644 --- a/test/nuts/local/localTrackingFileMovesScale.nut.ts +++ b/test/nuts/local/localTrackingFileMovesScale.nut.ts @@ -10,7 +10,7 @@ import { TestSession } from '@salesforce/cli-plugins-testkit'; import { expect } from 'chai'; import * as fs from 'graceful-fs'; import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../../src/shared/local/localShadowRepo'; /* eslint-disable no-unused-expressions */ @@ -18,6 +18,8 @@ const dirCount = 20; const classesPerDir = 50; const classCount = dirCount * classesPerDir; +const nonProjDirFiles = 100_000; + describe(`handles local files moves of ${classCount.toLocaleString()} classes (${( classCount * 2 ).toLocaleString()} files across ${dirCount.toLocaleString()} folders)`, () => { @@ -32,6 +34,11 @@ describe(`handles local files moves of ${classCount.toLocaleString()} classes ($ }, devhubAuthStrategy: 'NONE', }); + const notProjectDir = path.join(session.project.dir, 'not-project-dir'); + await fs.promises.mkdir(notProjectDir); + for (let i = 0; i < nonProjDirFiles; i++) { + fs.writeFileSync(path.join(notProjectDir, `file${i}.txt`), 'hello'); + } // create some number of files const classdir = path.join(session.project.dir, 'force-app', 'main', 'default', 'classes'); for (let d = 0; d < dirCount; d++) { diff --git a/test/nuts/local/localTrackingScale.nut.ts b/test/nuts/local/localTrackingScale.nut.ts index 13f6861a..9bcd5582 100644 --- a/test/nuts/local/localTrackingScale.nut.ts +++ b/test/nuts/local/localTrackingScale.nut.ts @@ -10,7 +10,7 @@ import { TestSession } from '@salesforce/cli-plugins-testkit'; import { expect } from 'chai'; import * as fs from 'graceful-fs'; import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../../src/shared/local/localShadowRepo'; const dirCount = 200; const classesPerDir = 500; diff --git a/test/nuts/local/localTrackingScenario.nut.ts b/test/nuts/local/localTrackingScenario.nut.ts index fbae6d03..e30fb187 100644 --- a/test/nuts/local/localTrackingScenario.nut.ts +++ b/test/nuts/local/localTrackingScenario.nut.ts @@ -11,7 +11,7 @@ import { TestSession } from '@salesforce/cli-plugins-testkit'; import { expect } from 'chai'; import { shouldThrow } from '@salesforce/core/testSetup'; import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../../src/shared/local/localShadowRepo'; describe('end-to-end-test for local tracking', () => { let session: TestSession; diff --git a/test/nuts/local/nonTopLevelIgnore.nut.ts b/test/nuts/local/nonTopLevelIgnore.nut.ts index 20402b2d..e18220d5 100644 --- a/test/nuts/local/nonTopLevelIgnore.nut.ts +++ b/test/nuts/local/nonTopLevelIgnore.nut.ts @@ -9,7 +9,7 @@ import { TestSession } from '@salesforce/cli-plugins-testkit'; import { expect } from 'chai'; import * as fs from 'graceful-fs'; import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../../src/shared/local/localShadowRepo'; const registry = new RegistryAccess(); diff --git a/test/nuts/local/pkgDirMatching.nut.ts b/test/nuts/local/pkgDirMatching.nut.ts index 8a05886e..d7993a48 100644 --- a/test/nuts/local/pkgDirMatching.nut.ts +++ b/test/nuts/local/pkgDirMatching.nut.ts @@ -9,7 +9,7 @@ import { TestSession } from '@salesforce/cli-plugins-testkit'; import * as fs from 'graceful-fs'; import { expect } from 'chai'; import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../../src/shared/local/localShadowRepo'; describe('verifies exact match of pkgDirs', () => { const registry = new RegistryAccess(); diff --git a/test/nuts/local/relativePkgDirs.nut.ts b/test/nuts/local/relativePkgDirs.nut.ts index fca53426..bd05df11 100644 --- a/test/nuts/local/relativePkgDirs.nut.ts +++ b/test/nuts/local/relativePkgDirs.nut.ts @@ -9,7 +9,7 @@ import { TestSession } from '@salesforce/cli-plugins-testkit'; import * as fs from 'graceful-fs'; import { expect } from 'chai'; import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../../src/shared/local/localShadowRepo'; describe('verifies behavior of relative pkgDirs', () => { let session: TestSession; diff --git a/test/unit/localDetectMovedFiles.test.ts b/test/unit/localDetectMovedFiles.test.ts index 0275e691..20098813 100644 --- a/test/unit/localDetectMovedFiles.test.ts +++ b/test/unit/localDetectMovedFiles.test.ts @@ -12,7 +12,7 @@ import git from 'isomorphic-git'; import { expect } from 'chai'; import sinon = require('sinon'); import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../src/shared/local/localShadowRepo'; /* eslint-disable no-unused-expressions */ diff --git a/test/unit/localShadowRepo.test.ts b/test/unit/localShadowRepo.test.ts index 5b1be6fc..36c22c48 100644 --- a/test/unit/localShadowRepo.test.ts +++ b/test/unit/localShadowRepo.test.ts @@ -12,7 +12,7 @@ import git from 'isomorphic-git'; import { expect } from 'chai'; import sinon = require('sinon'); import { RegistryAccess } from '@salesforce/source-deploy-retrieve'; -import { ShadowRepo } from '../../src/shared/localShadowRepo'; +import { ShadowRepo } from '../../src/shared/local/localShadowRepo'; /* eslint-disable no-unused-expressions */ @@ -54,78 +54,4 @@ describe('localShadowRepo', () => { if (projectDir) await fs.promises.rm(projectDir, { recursive: true }); } }); - it('respects SFDX_SOURCE_TRACKING_BATCH_SIZE env var', async () => { - expect(process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined; - process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE = '1'; - const projectDir = fs.mkdtempSync(path.join(os.tmpdir(), 'localShadowRepoTest')); - - const shadowRepo: ShadowRepo = await ShadowRepo.getInstance({ - orgId: '00D456789012345', - registry, - projectPath: projectDir, - packageDirs: [ - { - name: 'dummy', - fullPath: 'dummy', - path: path.join(projectDir, 'force-app'), - }, - ], - }); - // private property maxFileAdd - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - expect(shadowRepo.maxFileAdd).to.equal(1); - delete process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE; - expect(process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined; - }); - - it('respects SF_SOURCE_TRACKING_BATCH_SIZE env var', async () => { - expect(process.env.SF_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined; - process.env.SF_SOURCE_TRACKING_BATCH_SIZE = '1'; - const projectDir = fs.mkdtempSync(path.join(os.tmpdir(), 'localShadowRepoTest')); - - const shadowRepo: ShadowRepo = await ShadowRepo.getInstance({ - orgId: '00D456789012345', - registry, - projectPath: projectDir, - packageDirs: [ - { - name: 'dummy', - fullPath: 'dummy', - path: path.join(projectDir, 'force-app'), - }, - ], - }); - // private property maxFileAdd - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - expect(shadowRepo.maxFileAdd).to.equal(1); - delete process.env.SF_SOURCE_TRACKING_BATCH_SIZE; - expect(process.env.SF_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined; - }); - - it('respects undefined SF_SOURCE_TRACKING_BATCH_SIZE env var and uses default', async () => { - expect(process.env.SF_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined; - expect(process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined; - const projectDir = fs.mkdtempSync(path.join(os.tmpdir(), 'localShadowRepoTest')); - - const shadowRepo: ShadowRepo = await ShadowRepo.getInstance({ - orgId: '00D456789012345', - registry, - projectPath: projectDir, - packageDirs: [ - { - name: 'dummy', - fullPath: 'dummy', - path: path.join(projectDir, 'force-app'), - }, - ], - }); - // private property maxFileAdd - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - expect(shadowRepo.maxFileAdd).to.equal(os.type() === 'Windows_NT' ? 8000 : 15_000); - expect(process.env.SF_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined; - expect(process.env.SFDX_SOURCE_TRACKING_BATCH_SIZE).to.be.undefined; - }); }); diff --git a/yarn.lock b/yarn.lock index 78e07093..7a2b0839 100644 --- a/yarn.lock +++ b/yarn.lock @@ -658,10 +658,10 @@ typescript "^5.4.3" wireit "^0.14.4" -"@salesforce/kit@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-3.1.1.tgz#d2147a50887214763cdf1c456d306b6da554d928" - integrity sha512-Cjkh+USp5PtdZmD30r1Y7d+USpIhQz9B48w76esBtYpgqzhyj806LHkVgEfmorLNq2Qe8EO5rtUYd+XZ3rnV9w== +"@salesforce/kit@^3.1.1", "@salesforce/kit@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-3.1.2.tgz#270741c54c70969df19ef17f8979b4ef1fa664b2" + integrity sha512-si+ddvZDgx9q5czxAANuK5xhz3pv+KGspQy1wyia/7HDPKadA0QZkLTzUnO1Ju4Mux32CNHEb2y9lw9jj+eVTA== dependencies: "@salesforce/ts-types" "^2.0.9" tslib "^2.6.2" @@ -676,12 +676,12 @@ resolved "https://registry.yarnpkg.com/@salesforce/schemas/-/schemas-1.9.0.tgz#ba477a112653a20b4edcf989c61c57bdff9aa3ca" integrity sha512-LiN37zG5ODT6z70sL1fxF7BQwtCX9JOWofSU8iliSNIM+WDEeinnoFtVqPInRSNt8I0RiJxIKCrqstsmQRBNvA== -"@salesforce/source-deploy-retrieve@^11.6.2": - version "11.6.2" - resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-11.6.2.tgz#2d4faf3c00cc38dad0245f07a9b978131b845a5e" - integrity sha512-GEDTo4JCgisQt2hVyRY4Tu/ivEt2u9hJRzNn7A6ZDu668/0Ufq04YhdZfmSJePXAAtrtd9OqYfj8aJO5AOk1+g== +"@salesforce/source-deploy-retrieve@^11.6.3": + version "11.6.3" + resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-11.6.3.tgz#24ff55a17f8d7862b1467e40968707fedaa3e624" + integrity sha512-6h/KJV8cRfzLZ3aE6PP76oP1bz28zRxL9wtCx6yD+jz4GRdIxHNjNQhiKJJI9m2Z+npWl/sjth8aHB7rrSgSrg== dependencies: - "@salesforce/core" "^7.3.5" + "@salesforce/core" "^7.3.9" "@salesforce/kit" "^3.1.1" "@salesforce/ts-types" "^2.0.9" fast-levenshtein "^3.0.0" @@ -5178,16 +5178,7 @@ srcset@^5.0.0: resolved "https://registry.yarnpkg.com/srcset/-/srcset-5.0.0.tgz#9df6c3961b5b44a02532ce6ae4544832609e2e3f" integrity sha512-SqEZaAEhe0A6ETEa9O1IhSPC7MdvehZtCnTR0AftXk3QhY2UNgb+NApFOUPZILXk/YTDfFxMTNJOBpzrJsEdIA== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -5246,14 +5237,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -5770,7 +5754,7 @@ workerpool@6.2.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -5788,15 +5772,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"