{"push_id":920041496,"size":60,"distinct_size":19,"ref":"refs/heads/utumno-200-refreshDataSizeCrc","head":"4142d009b9091a338282bef37724b9ee858f0a0f","before":"102a64e38a09290ff58788eb8bea8f8b1c33d4ec","commits":[{"sha":"d5cc63e452055830c096e443997933c1ec1dad0e","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Follow up from parent - installers ShowPanel:\n\n- more @conversation: Installer_Uninstall, Installers_Refresh and\nmaximizing the frame (triggers RefreshData callback). WIP !\n- ShowPanel: not sure why refreshing was not set to True once or why\nRefreshUIMods() was needed - I am sure it's not actually and certainly\nshould not. Install and uninstall operations (that may affect mods and\ninis tabs) call it anyway, and deletions refresh the UI of their tabs.","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/d5cc63e452055830c096e443997933c1ec1dad0e"},{"sha":"3993971214c4c4e19ee552d6c736bb2ff4f0bfcd","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Fix for overflow in getting modification time - #262:\n\nThis was in modInfos.getFreeTime() but the surrounding code needed\ncleanup too. For instance getFreeTime is used in conjunction with\nfileInfos.copy() (renamed to copy_info - better name as it is not a mere\ncopy) which as seen confused in its use even its creators:\n\n-            if mtime == True: # warn: simplify bool comparison\n-                mtime = srcPath.mtime\n\nwhich is unneeded, done by Path.copyTo. Deeper issue here is the Path\nAPI, obviously, including backup policy - currently backups are thrown\nin at semi random and quarter doc'ed.\n\nMopy/bash/basher/saves_links.py: table info would not be copied\ncorrectly. If copying it would be popped from current profile table (bug)\ncopy_info should take care of the table, not the links code (see next\ncommit).\n\nIn getFreeTime I dropped unused (and unneeded) 'reverse' param - TODO:\nmeld with modInfos.timestamp - admittedly a bad name.\n\nMopy/bash/basher/mod_links.py: would result in mtime collision, changed\nto use getFreeTime(fileInfo.mtime) (more random mtime policy).\n\nCloses #262.\n\nSigned-off-by: MrD <the.ubik@gmail.com>","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/3993971214c4c4e19ee552d6c736bb2ff4f0bfcd"},{"sha":"24edf00e665ea8a5151ff3cb6e6ab35c6e9382ee","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"copy_info API: fixups, dropping unneeded refreshes - notes:\n\nFixup (was in files_links.File_Duplicate, moved to copy_info):\n\n@@ -3871,2 +3872,3 @@ def copy_info(self, fileName, destDir, destName=None, set_mtime=None):\n         if not destName: destName = fileName\n+        destName = GPath(destName)\n         srcPath = self[fileName].getPath()\n\ntable was updated with __string__ path as key - so delete_Refresh would\nblow:\n\nTraceback (most recent call last):\n  ...\n  File \"bash\\bosh\\__init__.py\", line 4671, in delete_Refresh\n  File \"bash\\bosh\\__init__.py\", line 2882, in removeMods\n  File \"bash\\bosh\\__init__.py\", line 2872, in saveLoadAndActive\n  File \"bash\\bosh\\__init__.py\", line 2825, in _plugins_cache_wrapper\n  File \"bash\\bosh\\__init__.py\", line 2869, in saveLoadOrder\n  File \"bash\\load_order.py\", line 244, in SaveLoadOrder\n  File \"bash\\load_order.py\", line 257, in _reset_mtimes_cache\n  File \"bash\\bolt.py\", line 1222, in __getitem__\nKeyError: u'Unofficial Oblivion Patch Copy.esp'\n\ncause the (unicode) key was in mtimes (a table view) while not of course\nmodInfos.\n\nIntroduced Modinfos.copy_info() override: taken from\nfiles_links.File_Duplicate. Not sure why updating the table and on the\n`if fileInfos.table.getItem(fileName,'mtime')` condition. Related to\nlockLO ? I dropped the condition and made sure we update the table\nusing a bolt.Path key.\nNote that set_mtime is never None currently and should not be when\nmoving inside the Data/ dir - enforced.\n\nTable deletion is taken care of in FileInfos.delete so below not needed:\n\n-            if self.mtimes.has_key(name): del self.mtimes[name]\n\nas mtimes is just a view of modInfos.table, updated in refresh() (if the\nkeys were right):\n\n            for d in set(self.table.keys()) &  set(_deleted):\n                del self.table[d]\n\nRelated to the eternal delete issue #172.\n\nLast note: the bug was triggered if duplicating more than 1 mods - cause\none mod case asks for filename and converts to Path. Just so you know.\n\n\nMopy/bash/basher/files_links.py:\nChange: saves/bsas times used to be increased on duplicating - dropped.\n\n\nMopy/bash/basher/mod_links.py:\n- espm times now are counted from master file esm and up - see modtimes\nnotes\n- below should be taken care of in copy_info - setType also resets it by\ncalling setmtime:\n\n\t-            newInfo.setmtime(newTime)\n\ntable handling moved inside copy_info()\n\nStill copy_info/move should maybe not call refresh at all - just update\ninternal structures - they are FileInfos methods...\nAlso we need a policy for modtimes in modInfos. Currently BAIN and liblo\nincrease at one minute intervals while internal operations by the\nsecond (the somewhat ugly '+1') but this is documented here basically\nand I have not visited all cases. Should be in load_order.py, set\non import.\n\n\nRefreshes:\n\nMopy/bash/basher/saves_links.py:\n- copy path would refresh on each save copied (should not need to\nrefresh at all)\n- RefreshData() was not needed - under #205\n- refresh was not needed at all when copying to other profile\nHad to introduce copy_info doRefresh parameter (as in move - should be\nrenamed).\n\nThe errors in table update and next commit make me think the code is\nripe now for introducing assert statements.","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/24edf00e665ea8a5151ff3cb6e6ab35c6e9382ee"},{"sha":"77b504aca5d71e06606db95babab01d194ba44f8","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Fixup in FileInfos.refresh():\n\nOn a corrupted save it would try to access oldInfo which was None:\n\nTraceback (most recent call last):\n  ...\n  File \"bash\\basher\\__init__.py\", line 3946, in RefreshData\n    if not self.booting and bosh.saveInfos.refresh():\n  File \"bash\\bosh\\__init__.py\", line 4834, in refresh\n    return FileInfos.refresh(self)\n  File \"bash\\bosh\\__init__.py\", line 3749, in refresh\n    isUpdated = not isAdded and not fileInfo.sameAs(oldInfo)\n  File \"bash\\bosh\\__init__.py\", line 2982, in sameAs\n    return ((self.size == fileInfo.size) and\nAttributeError: 'NoneType' object has no attribute 'size'\n\nMods were accidentally immune as they catch AttributeError for the\nisGhost stuff (duh). Still they would always mark the corrupted as\nupdated (sameAs returns False on AttributeError) so they would always\ngetHeaderError()- I made saves also recheck.","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/77b504aca5d71e06606db95babab01d194ba44f8"},{"sha":"e00dadddc80388ccd66644ffa9a4ed6ff6d2eba2","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"SSS dropping another RefreshData - warn_corrupted WIP","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/e00dadddc80388ccd66644ffa9a4ed6ff6d2eba2"},{"sha":"d47fd3111417658c0b6f400eb73cb017506dc4b5","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"FFF @balt.conversation","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/d47fd3111417658c0b6f400eb73cb017506dc4b5"},{"sha":"4b76cbedb225ae566188ae1217734cdb95dc7bd1","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"SelectItemsNoCallback and NNN:\n\nMopy/bash/basher/mods_links.py:\njust refactoring, still more ad hoc mod time policy\nMopy/bash/bosh/__init__.py: shadowing of type\nMopy/bash/balt.py: UIList.SelectItemsNoCallback(), used in\nmod_links.Mod_CopyToEsmp and double click in InstallersList (where I\nkept previous behavior, showing details for last item) but now much faster.\n\n# Conflicts:\n#\tMopy/bash/basher/mod_links.py","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/4b76cbedb225ae566188ae1217734cdb95dc7bd1"},{"sha":"4f510c82348e82945ac7c67d5770657ebffee73f","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Small stuff triggered by previous commits:\n\nDeleted _updateBain() (used once) and added comments\nin miscTrackedFiles - I can't use relative paths unfortunately as paths\nare relative to Data/Ini Tweaks in inis and to Data/ in mods (and the\nrest that miscTrackedFiles tracks, like xmls etc)\n\nmodInfos.timestamp -> modInfos.mod_timestamp to stand out (should be\nsomehow absorbed in getFreeTime)\n\nFileInfo.setmtime(self,mtime) returns mtime to avoid a bit of duplicate\nlogic in ModInfos override - every little bit helps here.","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/4f510c82348e82945ac7c67d5770657ebffee73f"},{"sha":"3a888bd0107049b7240cf8e8a246e0232add5b35","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"move -> move_info","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/3a888bd0107049b7240cf8e8a246e0232add5b35"},{"sha":"b64aecac5d6c677be9cd42f2aaf70ef3bbe82756","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Memory leak in Installers tab monkey patch REVIEW: EEE:\n\n\nChops off 80 mbytes in my setup - apparently left in the _gpaths cache\nREVIEW: what about the getNorm (decode and os.normpath) calls in Path.join ?\nIt seems not to harm that they are ommited but hey","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/b64aecac5d6c677be9cd42f2aaf70ef3bbe82756"},{"sha":"a293f3181f559d980c703fe2f023b4371b780d26","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"XXX does not make (but a couple mbytes) difference","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/a293f3181f559d980c703fe2f023b4371b780d26"},{"sha":"18538cd1100ef5cb070c4f8e06555e2ed684b3f1","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"XXX ASSERT","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/18538cd1100ef5cb070c4f8e06555e2ed684b3f1"},{"sha":"32f8578b83a489acd29bcb65de4063900584a063","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Nitpick from future merges:\n\n- Changing CBash messages to at least print the error code.\n- Installer.files is an awful name - num_of_files is much better and\nsearchable\n- clean_data_dir slight performance improvements, pruning data and using\na tuple with startswith() instead of explicitly looping\n- Other small stuff","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/32f8578b83a489acd29bcb65de4063900584a063"},{"sha":"41adb969b3fb2fe151dc11d1fc514310df372755","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Catch error creating log file - maybe bin log file ?","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/41adb969b3fb2fe151dc11d1fc514310df372755"},{"sha":"c52dd99e09bcd472c5638b62156579923a8aaf90","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Reworking BAIN refresh, dropping grotesque bosh modinfos use - WIP:\n\nUnder 205, 163, delete, 219\n\nTODO: we must avoid the ini and mod tabs refresh if not needed (the\n##: invert or) !\n\nMake refreshUI param obligatoire","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/c52dd99e09bcd472c5638b62156579923a8aaf90"},{"sha":"a0ed1241c973389713139efcf343d45dddf4aa7e","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"clean_data_dir(self, refresh_ui) - WIP EEE\n\nrework logic so we exclude early ?","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/a0ed1241c973389713139efcf343d45dddf4aa7e"},{"sha":"60fab2cc789d6a9f915facf594bfbf9f67aa8bc3","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Fixup in PickleDict.load() + improving bolt.timestamp():\n\nFile was locked + I don't know why I used join.\nKept the timestamp format from settings backup (one of my first WB\ncommits: 9efec2a82f3e15d5df36ab100fc9950ae55cc03c).\nTook the opportunity to correct couple warns in barb.","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/60fab2cc789d6a9f915facf594bfbf9f67aa8bc3"},{"sha":"3f9fc6c2ae9bba726d3a147d0832b55761278950","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"Short circuit InstallerMarker.refreshBasic()","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/3f9fc6c2ae9bba726d3a147d0832b55761278950"},{"sha":"a1dbd8301f81cb36ac7128b948dd7e6322f1e158","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"comments on omods, refreshData etc XXX","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/a1dbd8301f81cb36ac7128b948dd7e6322f1e158"},{"sha":"25b5d4298cfd0dd3d5a2197e61870011f53f62c1","author":{"email":"4940bdc6f784780ad32bf9f03596977cf7f253eb@gmail.com","name":"MrD"},"message":"XXX print in backup settings","distinct":false,"url":"https://api.github.com/repos/wrye-bash/wrye-bash/commits/25b5d4298cfd0dd3d5a2197e61870011f53f62c1"}]}