Modifying and saving files should keep the line order and other things as much as possible
<!-- --------Before Creating a New Issue----------- * Search the issue tracker to verify the issue has not already been reported. * Keep report contents limited to the necessary information required to fix the issue. ---------Add your issue details below----------- --> # Description <!-- What is the current behavior and what is the expected behavior? --> <!-- If the issue is visual/graphical, please attach screenshots of the problem. --> I think it's a well known problem that KiCad want's to be VCS friendly but really isn't as much as it could be. Today I noticed this: ![image](/uploads/5594ed55852ce94df7e469a4f638a0d1/image.png) This is a diff between the latest commit and the working tree changes. What I did was mostly moving component value texts in the Fab layer. I certainly didn't change any footprint graphics. For some reason KiCad changed the order of all "fp-line" text lines. It seems to have reversed the order. Now the file is full of unnecessary changes which I didn't make. ![image](/uploads/e40e16dcb1f2eb14d64852b166931ca2/image.png) Would it finally be possible to have a consistent file reading/writing system and/or internal data structure which doesn't make any unnecessary changes (including line order, line breaks and whitespace)? I would accept changes when reading a file in because it may have been produced by other means, and of course accepting changes made by scripts or changes made when saving after a script has modified the data, but if the file is written, modified and saved by KiCad's built-in functionality, those kind of changes shouldn't happen. # KiCad Version I'm not sure about the exact versions with which I handled the file, but they are from 5.1 series. ``` Application: KiCad Version: (5.1.5-103-gddedf2e04)-1, release build Libraries: wxWidgets 3.0.4 libcurl/7.66.0 OpenSSL/1.1.1d (Schannel) zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.1.1) nghttp2/1.39.2 Platform: Windows 7 (build 7601, Service Pack 1), 64-bit edition, 64 bit, Little endian, wxMSW Build Info: wxWidgets: 3.0.4 (wchar_t,wx containers,compatible with 2.8) Boost: 1.71.0 OpenCASCADE Community Edition: 6.9.1 Curl: 7.66.0 Compiler: GCC 9.2.0 with C++ ABI 1013 Build settings: USE_WX_GRAPHICS_CONTEXT=OFF USE_WX_OVERLAY=OFF KICAD_SCRIPTING=ON KICAD_SCRIPTING_MODULES=ON KICAD_SCRIPTING_PYTHON3=OFF KICAD_SCRIPTING_WXPYTHON=ON KICAD_SCRIPTING_WXPYTHON_PHOENIX=OFF KICAD_SCRIPTING_ACTION_MENU=ON BUILD_GITHUB_PLUGIN=ON KICAD_USE_OCE=ON KICAD_USE_OCC=OFF KICAD_SPICE=ON ```
issue