From 062f580af2ba1d7c28c38125278fa7e0df775d1a Mon Sep 17 00:00:00 2001 From: Martin Varga Date: Wed, 30 Sep 2020 15:53:18 +0200 Subject: [PATCH] disable upload of renamed files, push removed and added ones instead (closes #27) --- Pipfile.lock | 210 ++++++++++++++++++++----------------- mergin/cli.py | 8 +- mergin/merginproject.py | 39 ++----- mergin/test/test_client.py | 9 +- 4 files changed, 124 insertions(+), 142 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 4c20a47a..61f7cf98 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "6ff8acc3012e034fb7b8653e05954a465b170b0452cb031f674a618b3b818c89" + "sha256": "1269f0336c1ef0c35882f7e2d69794e41742ca6fabc135352d77a37dce195759" }, "pipfile-spec": 6, "requires": { @@ -18,19 +18,20 @@ "default": { "pygeodiff": { "hashes": [ - "sha256:16c5158eb52de0316a58a4934991319bd543841611249b9701c00b88864b78cf", - "sha256:2d6aa3112acf792b9e886593d3f4f6b01fb6a29eafdc232358847c5ab42ecfe5", - "sha256:2f92eece9bfe723f64d932981a85fe932db0da630c54f15b201993aaf87643dd", - "sha256:3e6868d23783583d6277ed7d0602b9c8c1dc88207fe18d99ea5db628f1b2f18a", - "sha256:49bcc45f7a518e0f3751f4f43de63236aab777d6d517ae753eed5ddcb784c40e", - "sha256:7b2711952da762feb7d05f0442f9975101e333d3f78f89d957b6199de362af86", - "sha256:7c118598f9129c377c1abe7d092ebb839ff10ba611ada5c6aa555db27ffcc4b9", - "sha256:cc94a5b76735790f75f02c6f81cdf6b4bb7265be0e08539843cf847fa528057c", - "sha256:d68cc6732c326befc9d7b07caae8bd6d3a2ddc67bec28ef30b2302f2185a859c", - "sha256:e9401ecd980f43b02c773d0bd5d2b4c9b40b9960d5781f72636dc5818adfbc48" + "sha256:0687b5e0494cb385d431d71a8047dd5411b7082c0a09e660634abd589abca6f8", + "sha256:2062370bd9462ea8a8c2d371e96781bc284e7da72bc2ec8016394f9e9a522396", + "sha256:254ad9bac03169faebcbb669645ad6dd0377197bed682aa4c59ce7909c6d7038", + "sha256:29c7d7ef999fa33b998a8752cae5773ce6df2f1582e3a71efa484093ed233e85", + "sha256:2bd142569415a1ff9b87e086d35ed2d46f972bc226bf0cf9a2303b5e5366468c", + "sha256:2d8dfaa43597998adb1ab9005765957e9986b179b99572296723af139f6d288e", + "sha256:35c009befe9b6d6f30d31ed344d7a1335613cc32dd5aef707a679808e87cfc4f", + "sha256:3ba537539b64a49a4064c09c8b16d1cff3c4056b4e268c2a66059170118879b4", + "sha256:6ba13caebbd59d72a1bfbb10fe64a0dd7a4041524f1b685a1801d9136f0ab5b4", + "sha256:acab89a793ab70c9f91ff8b818bbc30276668c424124dd726c0ce01845d8a994", + "sha256:fb92f1e16cb541c9e3ddc92cf99b5daba9ca1f9d8437d12e15a10616497b532a" ], "index": "pypi", - "version": "==0.7.4" + "version": "==0.8.5" }, "python-dateutil": { "hashes": [ @@ -41,80 +42,90 @@ "index": "pypi", "version": "==2.6.0" }, + "pytz": { + "hashes": [ + "sha256:1c557d7d0e871de1f5ccd5833f60fb2550652da6be2693c1e02300743d21500d", + "sha256:b02c06db6cf09c12dd25137e563b31700d3b80fcc4ad23abb7a315f2789819be" + ], + "index": "pypi", + "version": "==2019.3" + }, "six": { "hashes": [ - "sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd", - "sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66" + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], - "version": "==1.13.0" + "version": "==1.15.0" } }, "develop": { "astroid": { "hashes": [ - "sha256:71ea07f44df9568a75d0f354c49143a4575d90645e9fead6dfb52c26a85ed13a", - "sha256:840947ebfa8b58f318d42301cf8c0a20fd794a33b61cc4638e28e9e61ba32f42" + "sha256:2f4078c2a41bf377eea06d71c9d2ba4eb8f6b1af2135bec27bbbb7d8f12bb703", + "sha256:bc58d83eb610252fd8de6363e39d4f1d0619c894b0ed24603b881c02e64c7386" ], - "version": "==2.3.3" + "version": "==2.4.2" }, "atomicwrites": { "hashes": [ - "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4", - "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6" + "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197", + "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a" ], - "version": "==1.3.0" + "version": "==1.4.0" }, "attrs": { "hashes": [ - "sha256:08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", - "sha256:f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72" + "sha256:26b54ddbbb9ee1d34d5d3668dd37d6cf74990ab23c828c2888dccdceee395594", + "sha256:fce7fc47dfc976152e82d53ff92fa0407700c21acd20886a13777a0d20e655dc" ], - "version": "==19.3.0" + "version": "==20.2.0" }, "coverage": { "hashes": [ - "sha256:08907593569fe59baca0bf152c43f3863201efb6113ecb38ce7e97ce339805a6", - "sha256:0be0f1ed45fc0c185cfd4ecc19a1d6532d72f86a2bac9de7e24541febad72650", - "sha256:141f08ed3c4b1847015e2cd62ec06d35e67a3ac185c26f7635f4406b90afa9c5", - "sha256:19e4df788a0581238e9390c85a7a09af39c7b539b29f25c89209e6c3e371270d", - "sha256:23cc09ed395b03424d1ae30dcc292615c1372bfba7141eb85e11e50efaa6b351", - "sha256:245388cda02af78276b479f299bbf3783ef0a6a6273037d7c60dc73b8d8d7755", - "sha256:331cb5115673a20fb131dadd22f5bcaf7677ef758741312bee4937d71a14b2ef", - "sha256:386e2e4090f0bc5df274e720105c342263423e77ee8826002dcffe0c9533dbca", - "sha256:3a794ce50daee01c74a494919d5ebdc23d58873747fa0e288318728533a3e1ca", - "sha256:60851187677b24c6085248f0a0b9b98d49cba7ecc7ec60ba6b9d2e5574ac1ee9", - "sha256:63a9a5fc43b58735f65ed63d2cf43508f462dc49857da70b8980ad78d41d52fc", - "sha256:6b62544bb68106e3f00b21c8930e83e584fdca005d4fffd29bb39fb3ffa03cb5", - "sha256:6ba744056423ef8d450cf627289166da65903885272055fb4b5e113137cfa14f", - "sha256:7494b0b0274c5072bddbfd5b4a6c6f18fbbe1ab1d22a41e99cd2d00c8f96ecfe", - "sha256:826f32b9547c8091679ff292a82aca9c7b9650f9fda3e2ca6bf2ac905b7ce888", - "sha256:93715dffbcd0678057f947f496484e906bf9509f5c1c38fc9ba3922893cda5f5", - "sha256:9a334d6c83dfeadae576b4d633a71620d40d1c379129d587faa42ee3e2a85cce", - "sha256:af7ed8a8aa6957aac47b4268631fa1df984643f07ef00acd374e456364b373f5", - "sha256:bf0a7aed7f5521c7ca67febd57db473af4762b9622254291fbcbb8cd0ba5e33e", - "sha256:bf1ef9eb901113a9805287e090452c05547578eaab1b62e4ad456fcc049a9b7e", - "sha256:c0afd27bc0e307a1ffc04ca5ec010a290e49e3afbe841c5cafc5c5a80ecd81c9", - "sha256:dd579709a87092c6dbee09d1b7cfa81831040705ffa12a1b248935274aee0437", - "sha256:df6712284b2e44a065097846488f66840445eb987eb81b3cc6e4149e7b6982e1", - "sha256:e07d9f1a23e9e93ab5c62902833bf3e4b1f65502927379148b6622686223125c", - "sha256:e2ede7c1d45e65e209d6093b762e98e8318ddeff95317d07a27a2140b80cfd24", - "sha256:e4ef9c164eb55123c62411f5936b5c2e521b12356037b6e1c2617cef45523d47", - "sha256:eca2b7343524e7ba246cab8ff00cab47a2d6d54ada3b02772e908a45675722e2", - "sha256:eee64c616adeff7db37cc37da4180a3a5b6177f5c46b187894e633f088fb5b28", - "sha256:ef824cad1f980d27f26166f86856efe11eff9912c4fed97d3804820d43fa550c", - "sha256:efc89291bd5a08855829a3c522df16d856455297cf35ae827a37edac45f466a7", - "sha256:fa964bae817babece5aa2e8c1af841bebb6d0b9add8e637548809d040443fee0", - "sha256:ff37757e068ae606659c28c3bd0d923f9d29a85de79bf25b2b34b148473b5025" - ], - "version": "==4.5.4" + "sha256:0203acd33d2298e19b57451ebb0bed0ab0c602e5cf5a818591b4918b1f97d516", + "sha256:0f313707cdecd5cd3e217fc68c78a960b616604b559e9ea60cc16795c4304259", + "sha256:1c6703094c81fa55b816f5ae542c6ffc625fec769f22b053adb42ad712d086c9", + "sha256:1d44bb3a652fed01f1f2c10d5477956116e9b391320c94d36c6bf13b088a1097", + "sha256:280baa8ec489c4f542f8940f9c4c2181f0306a8ee1a54eceba071a449fb870a0", + "sha256:29a6272fec10623fcbe158fdf9abc7a5fa032048ac1d8631f14b50fbfc10d17f", + "sha256:2b31f46bf7b31e6aa690d4c7a3d51bb262438c6dcb0d528adde446531d0d3bb7", + "sha256:2d43af2be93ffbad25dd959899b5b809618a496926146ce98ee0b23683f8c51c", + "sha256:381ead10b9b9af5f64646cd27107fb27b614ee7040bb1226f9c07ba96625cbb5", + "sha256:47a11bdbd8ada9b7ee628596f9d97fbd3851bd9999d398e9436bd67376dbece7", + "sha256:4d6a42744139a7fa5b46a264874a781e8694bb32f1d76d8137b68138686f1729", + "sha256:50691e744714856f03a86df3e2bff847c2acede4c191f9a1da38f088df342978", + "sha256:530cc8aaf11cc2ac7430f3614b04645662ef20c348dce4167c22d99bec3480e9", + "sha256:582ddfbe712025448206a5bc45855d16c2e491c2dd102ee9a2841418ac1c629f", + "sha256:63808c30b41f3bbf65e29f7280bf793c79f54fb807057de7e5238ffc7cc4d7b9", + "sha256:71b69bd716698fa62cd97137d6f2fdf49f534decb23a2c6fc80813e8b7be6822", + "sha256:7858847f2d84bf6e64c7f66498e851c54de8ea06a6f96a32a1d192d846734418", + "sha256:78e93cc3571fd928a39c0b26767c986188a4118edc67bc0695bc7a284da22e82", + "sha256:7f43286f13d91a34fadf61ae252a51a130223c52bfefb50310d5b2deb062cf0f", + "sha256:86e9f8cd4b0cdd57b4ae71a9c186717daa4c5a99f3238a8723f416256e0b064d", + "sha256:8f264ba2701b8c9f815b272ad568d555ef98dfe1576802ab3149c3629a9f2221", + "sha256:9342dd70a1e151684727c9c91ea003b2fb33523bf19385d4554f7897ca0141d4", + "sha256:9361de40701666b034c59ad9e317bae95c973b9ff92513dd0eced11c6adf2e21", + "sha256:9669179786254a2e7e57f0ecf224e978471491d660aaca833f845b72a2df3709", + "sha256:aac1ba0a253e17889550ddb1b60a2063f7474155465577caa2a3b131224cfd54", + "sha256:aef72eae10b5e3116bac6957de1df4d75909fc76d1499a53fb6387434b6bcd8d", + "sha256:bd3166bb3b111e76a4f8e2980fa1addf2920a4ca9b2b8ca36a3bc3dedc618270", + "sha256:c1b78fb9700fc961f53386ad2fd86d87091e06ede5d118b8a50dea285a071c24", + "sha256:c3888a051226e676e383de03bf49eb633cd39fc829516e5334e69b8d81aae751", + "sha256:c5f17ad25d2c1286436761b462e22b5020d83316f8e8fcb5deb2b3151f8f1d3a", + "sha256:c851b35fc078389bc16b915a0a7c1d5923e12e2c5aeec58c52f4aa8085ac8237", + "sha256:cb7df71de0af56000115eafd000b867d1261f786b5eebd88a0ca6360cccfaca7", + "sha256:cedb2f9e1f990918ea061f28a0f0077a07702e3819602d3507e2ff98c8d20636", + "sha256:e8caf961e1b1a945db76f1b5fa9c91498d15f545ac0ababbe575cfab185d3bd8" + ], + "version": "==5.3" }, "importlib-metadata": { "hashes": [ - "sha256:aa18d7378b00b40847790e7c27e11673d7fed219354109d0e7b9e5b25dc3ad26", - "sha256:d5f18a79777f3aa179c145737780282e27b508fc8fd688cb17c7a813e8bd39af" + "sha256:77a540690e24b0305878c37ffd421785a6f7e53c8b5720d211b211de8d0e95da", + "sha256:cefa1a2f919b866c5beb7c9f7b0ebb4061f30a8a9bf16d609b000e2dfaceb9c3" ], "markers": "python_version < '3.8'", - "version": "==0.23" + "version": "==2.0.0" }, "isort": { "hashes": [ @@ -158,24 +169,24 @@ }, "more-itertools": { "hashes": [ - "sha256:409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832", - "sha256:92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4" + "sha256:6f83822ae94818eae2612063a5101a7311e68ae8002005b5e05f03fd74a86a20", + "sha256:9b30f12df9393f0d28af9210ff8efe48d10c94f73e5daf886f10c4b0b0b4f03c" ], - "version": "==7.2.0" + "version": "==8.5.0" }, "pluggy": { "hashes": [ - "sha256:0db4b7601aae1d35b4a033282da476845aa19185c1e6964b25cf324b5e4ec3e6", - "sha256:fa5fa1622fa6dd5c030e9cad086fa19ef6a0cf6d7a2d12318e10cb49d6d68f34" + "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", + "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d" ], - "version": "==0.13.0" + "version": "==0.13.1" }, "py": { "hashes": [ - "sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa", - "sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53" + "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2", + "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342" ], - "version": "==1.8.0" + "version": "==1.9.0" }, "pylint": { "hashes": [ @@ -203,49 +214,50 @@ }, "six": { "hashes": [ - "sha256:1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd", - "sha256:30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66" + "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", + "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" ], - "version": "==1.13.0" + "version": "==1.15.0" }, "typed-ast": { "hashes": [ - "sha256:1170afa46a3799e18b4c977777ce137bb53c7485379d9706af8a59f2ea1aa161", - "sha256:18511a0b3e7922276346bcb47e2ef9f38fb90fd31cb9223eed42c85d1312344e", - "sha256:262c247a82d005e43b5b7f69aff746370538e176131c32dda9cb0f324d27141e", - "sha256:2b907eb046d049bcd9892e3076c7a6456c93a25bebfe554e931620c90e6a25b0", - "sha256:354c16e5babd09f5cb0ee000d54cfa38401d8b8891eefa878ac772f827181a3c", - "sha256:48e5b1e71f25cfdef98b013263a88d7145879fbb2d5185f2a0c79fa7ebbeae47", - "sha256:4e0b70c6fc4d010f8107726af5fd37921b666f5b31d9331f0bd24ad9a088e631", - "sha256:630968c5cdee51a11c05a30453f8cd65e0cc1d2ad0d9192819df9978984529f4", - "sha256:66480f95b8167c9c5c5c87f32cf437d585937970f3fc24386f313a4c97b44e34", - "sha256:71211d26ffd12d63a83e079ff258ac9d56a1376a25bc80b1cdcdf601b855b90b", - "sha256:7954560051331d003b4e2b3eb822d9dd2e376fa4f6d98fee32f452f52dd6ebb2", - "sha256:838997f4310012cf2e1ad3803bce2f3402e9ffb71ded61b5ee22617b3a7f6b6e", - "sha256:95bd11af7eafc16e829af2d3df510cecfd4387f6453355188342c3e79a2ec87a", - "sha256:bc6c7d3fa1325a0c6613512a093bc2a2a15aeec350451cbdf9e1d4bffe3e3233", - "sha256:cc34a6f5b426748a507dd5d1de4c1978f2eb5626d51326e43280941206c209e1", - "sha256:d755f03c1e4a51e9b24d899561fec4ccaf51f210d52abdf8c07ee2849b212a36", - "sha256:d7c45933b1bdfaf9f36c579671fec15d25b06c8398f113dab64c18ed1adda01d", - "sha256:d896919306dd0aa22d0132f62a1b78d11aaf4c9fc5b3410d3c666b818191630a", - "sha256:fdc1c9bbf79510b76408840e009ed65958feba92a88833cdceecff93ae8fff66", - "sha256:ffde2fbfad571af120fcbfbbc61c72469e72f550d676c3342492a9dfdefb8f12" + "sha256:0666aa36131496aed8f7be0410ff974562ab7eeac11ef351def9ea6fa28f6355", + "sha256:0c2c07682d61a629b68433afb159376e24e5b2fd4641d35424e462169c0a7919", + "sha256:249862707802d40f7f29f6e1aad8d84b5aa9e44552d2cc17384b209f091276aa", + "sha256:24995c843eb0ad11a4527b026b4dde3da70e1f2d8806c99b7b4a7cf491612652", + "sha256:269151951236b0f9a6f04015a9004084a5ab0d5f19b57de779f908621e7d8b75", + "sha256:4083861b0aa07990b619bd7ddc365eb7fa4b817e99cf5f8d9cf21a42780f6e01", + "sha256:498b0f36cc7054c1fead3d7fc59d2150f4d5c6c56ba7fb150c013fbc683a8d2d", + "sha256:4e3e5da80ccbebfff202a67bf900d081906c358ccc3d5e3c8aea42fdfdfd51c1", + "sha256:6daac9731f172c2a22ade6ed0c00197ee7cc1221aa84cfdf9c31defeb059a907", + "sha256:715ff2f2df46121071622063fc7543d9b1fd19ebfc4f5c8895af64a77a8c852c", + "sha256:73d785a950fc82dd2a25897d525d003f6378d1cb23ab305578394694202a58c3", + "sha256:8c8aaad94455178e3187ab22c8b01a3837f8ee50e09cf31f1ba129eb293ec30b", + "sha256:8ce678dbaf790dbdb3eba24056d5364fb45944f33553dd5869b7580cdbb83614", + "sha256:aaee9905aee35ba5905cfb3c62f3e83b3bec7b39413f0a7f19be4e547ea01ebb", + "sha256:bcd3b13b56ea479b3650b82cabd6b5343a625b0ced5429e4ccad28a8973f301b", + "sha256:c9e348e02e4d2b4a8b2eedb48210430658df6951fa484e59de33ff773fbd4b41", + "sha256:d205b1b46085271b4e15f670058ce182bd1199e56b317bf2ec004b6a44f911f6", + "sha256:d43943ef777f9a1c42bf4e552ba23ac77a6351de620aa9acf64ad54933ad4d34", + "sha256:d5d33e9e7af3b34a40dc05f498939f0ebf187f07c385fd58d591c533ad8562fe", + "sha256:fc0fea399acb12edbf8a628ba8d2312f583bdbdb3335635db062fa98cf71fca4", + "sha256:fe460b922ec15dd205595c9b5b99e2f056fd98ae8f9f56b888e7a17dc2b757e7" ], "markers": "implementation_name == 'cpython' and python_version < '3.8'", - "version": "==1.4.0" + "version": "==1.4.1" }, "wrapt": { "hashes": [ - "sha256:565a021fd19419476b9362b05eeaa094178de64f8361e44468f9e9d7843901e1" + "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7" ], - "version": "==1.11.2" + "version": "==1.12.1" }, "zipp": { "hashes": [ - "sha256:3718b1cbcd963c7d4c5511a8240812904164b7f381b647143a89d3b98f9bcd8e", - "sha256:f06903e9f1f43b12d371004b4ac7b06ab39a44adc747266928ae6debfa7b3335" + "sha256:43f4fa8d8bb313e65d8323a3952ef8756bf40f9a5c3ea7334be23ee4ec8278b6", + "sha256:b52f22895f4cfce194bc8172f3819ee8de7540aa6d873535a8668b730b8b411f" ], - "version": "==0.6.0" + "version": "==3.2.0" } } } diff --git a/mergin/cli.py b/mergin/cli.py index adedbaf6..347c802e 100755 --- a/mergin/cli.py +++ b/mergin/cli.py @@ -26,7 +26,7 @@ def get_changes_count(diff): - attrs = ["added", "removed", "updated", "renamed"] + attrs = ["added", "removed", "updated"] return sum([len(diff[attr]) for attr in attrs]) @@ -34,12 +34,6 @@ def pretty_diff(diff): added = diff["added"] removed = diff["removed"] updated = diff["updated"] - renamed = diff["renamed"] - - if renamed: - click.secho("\n>>> Renamed:", fg="cyan") - for f in renamed: - click.echo(" ".join([f["path"], "->", f["new_path"]])) if removed: click.secho("\n>>> Removed:", fg="cyan") diff --git a/mergin/merginproject.py b/mergin/merginproject.py index c4a3ff37..f7000aed 100644 --- a/mergin/merginproject.py +++ b/mergin/merginproject.py @@ -202,26 +202,7 @@ def compare_file_sets(self, origin, current): origin_map = {f["path"]: f for f in origin} current_map = {f["path"]: f for f in current} removed = [f for f in origin if f["path"] not in current_map] - - added = [] - for f in current: - if f["path"] in origin_map: - continue - added.append(f) - - moved = [] - for rf in removed: - match = find( - current, - lambda f: f["checksum"] == rf["checksum"] and f["size"] == rf["size"] and all( - f["path"] != mf["path"] for mf in moved) - ) - if match: - moved.append({**rf, "new_path": match["path"]}) - - added = [f for f in added if all(f["path"] != mf["new_path"] for mf in moved)] - removed = [f for f in removed if all(f["path"] != mf["path"] for mf in moved)] - + added = [f for f in current if f["path"] not in origin_map] updated = [] for f in current: path = f["path"] @@ -234,7 +215,7 @@ def compare_file_sets(self, origin, current): updated.append(f) return { - "renamed": moved, + "renamed": [], "added": added, "removed": removed, "updated": updated @@ -389,8 +370,6 @@ def apply_pull_changes(self, changes, temp_dir): modified = {} for f in local_changes["added"] + local_changes["updated"]: modified.update({f['path']: f}) - for f in local_changes["renamed"]: - modified.update({f['new_path']: f}) local_files_map = {} for f in self.inspect_files(): @@ -398,8 +377,8 @@ def apply_pull_changes(self, changes, temp_dir): for k, v in changes.items(): for item in v: - path = item['path'] if k != 'renamed' else item['new_path'] - src = self.fpath(path, temp_dir) if k != 'renamed' else self.fpath(item["path"]) + path = item['path'] + src = self.fpath(path, temp_dir) dest = self.fpath(path) basefile = self.fpath_meta(path) @@ -483,10 +462,6 @@ def apply_pull_changes(self, changes, temp_dir): os.remove(dest) if self.is_versioned_file(path): os.remove(basefile) - elif k == 'renamed': - move_file(src, dest) - if self.is_versioned_file(path): - move_file(self.fpath_meta(item["path"]), basefile) else: shutil.copy(src, dest) if self.is_versioned_file(path): @@ -505,14 +480,12 @@ def apply_push_changes(self, changes): return for k, v in changes.items(): for item in v: - path = item['path'] if k != 'renamed' else item['new_path'] + path = item['path'] if not self.is_versioned_file(path): continue basefile = self.fpath_meta(path) - if k == 'renamed': - move_file(self.fpath_meta(item["path"]), basefile) - elif k == 'removed': + if k == 'removed': os.remove(basefile) elif k == 'added': shutil.copy(self.fpath(path), basefile) diff --git a/mergin/test/test_client.py b/mergin/test/test_client.py index 90cacf27..d1a47ac1 100644 --- a/mergin/test/test_client.py +++ b/mergin/test/test_client.py @@ -142,7 +142,10 @@ def test_push_pull_changes(mc): assert next((f for f in push_changes['added'] if f['path'] == f_added), None) assert next((f for f in push_changes['removed'] if f['path'] == f_removed), None) assert next((f for f in push_changes['updated'] if f['path'] == f_updated), None) - assert next((f for f in push_changes['renamed'] if f['path'] == f_renamed), None) + # renamed file will result in removed + added file + assert next((f for f in push_changes['removed'] if f['path'] == f_renamed), None) + assert next((f for f in push_changes['added'] if f['path'] == 'renamed.txt'), None) + assert not pull_changes['renamed'] # not supported mc.push_project(project_dir) project_info = mc.project_info(project) @@ -174,8 +177,8 @@ def test_push_pull_changes(mc): assert next((f for f in pull_changes['added'] if f['path'] == f_added), None) assert next((f for f in pull_changes['removed'] if f['path'] == f_removed), None) assert next((f for f in pull_changes['updated'] if f['path'] == f_updated), None) - assert next((f for f in pull_changes['renamed'] if f['path'] == f_renamed), None) - assert next((f for f in push_changes['updated'] if f['path'] == f_updated), None) + assert next((f for f in pull_changes['removed'] if f['path'] == f_renamed), None) + assert next((f for f in pull_changes['added'] if f['path'] == 'renamed.txt'), None) mc.pull_project(project_dir_2) assert os.path.exists(os.path.join(project_dir_2, f_added))