{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":7357595,"defaultBranch":"master","name":"ZODB","ownerLogin":"zopefoundation","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2012-12-28T17:47:39.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1163184?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1711798831.0","currentOid":""},"activityList":{"items":[{"before":"42898a79e3615274cac764ae2193a234e4fcfa01","after":"d698507bb89eeb38c6e655199bc9f54c909dbf4d","ref":"refs/heads/master","pushedAt":"2024-03-30T11:42:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"},"commit":{"message":"- vb [ci skip]","shortMessageHtmlLink":"- vb [ci skip]"}},{"before":"d37ae29ced7124dcac81d2cef3b0da22ea91760a","after":"42898a79e3615274cac764ae2193a234e4fcfa01","ref":"refs/heads/master","pushedAt":"2024-03-30T11:15:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"},"commit":{"message":"- prepare release 6.0","shortMessageHtmlLink":"- prepare release 6.0"}},{"before":"c912ebdb6d0c0847ab4ff4a50dbfa9f3ae52ba34","after":null,"ref":"refs/heads/config-with-pure-python-template-1404d28b","pushedAt":"2024-03-30T11:13:02.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"}},{"before":"8160568b246b55d7633ecab9ec743699c06e24d0","after":"d37ae29ced7124dcac81d2cef3b0da22ea91760a","ref":"refs/heads/master","pushedAt":"2024-03-30T11:13:01.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"},"commit":{"message":"Merge pull request #398 from zopefoundation/config-with-pure-python-template-1404d28b\n\nUpdate to the latest meta/config template","shortMessageHtmlLink":"Merge pull request #398 from zopefoundation/config-with-pure-python-t…"}},{"before":null,"after":"c912ebdb6d0c0847ab4ff4a50dbfa9f3ae52ba34","ref":"refs/heads/config-with-pure-python-template-1404d28b","pushedAt":"2024-03-30T11:05:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"},"commit":{"message":"- update to the latest meta/config template","shortMessageHtmlLink":"- update to the latest meta/config template"}},{"before":"d7f9eae966d30554982c737efd72aeb4f3231cda","after":"8160568b246b55d7633ecab9ec743699c06e24d0","ref":"refs/heads/master","pushedAt":"2024-03-04T12:38:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"perrinjerome","name":"Jérome Perrin","path":"/perrinjerome","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/521510?s=80&v=4"},"commit":{"message":"FileStorage: fix rare data corruption when using restore after multiple undos (#395)\n\n* FileStorage: fix data corruption when using restore after multiple undos\r\n\r\nThe case of a history like this:\r\n - T0 initialize an object in state 0\r\n - T1 modifies object to state 1\r\n - T2 modifies object to state 2\r\n - T3 undo T2 and T1, bringing back to state 0\r\n - T4 modified object to state 3\r\n - T5 undo T4, bringing back object to state 0\r\n\r\nwas not correct after `restore`: the state is 1 instead of the expected 0.\r\n\r\nThis is because T3 contains two data records:\r\n - an undo of T2, with a backpointer to the data of state 1\r\n - an undo of T1, with a backpointer to the data of state 0\r\nWhen restoring T5 (the undo of T4), the transaction is made of one data\r\nrecord, with a backpointer that is copied from the backpointer from T3,\r\nbut this uses backpointer from the first record for this object, which\r\nis incorrect, in such a case where there is more than one backpointer\r\nfor the same oid, we need to iterate in all data record to find the\r\noldest version.\r\n\r\nCo-authored-by: Kirill Smelkov ","shortMessageHtmlLink":"FileStorage: fix rare data corruption when using restore after multip…"}},{"before":"ee1b0b9283b4f0efb11805d480388f93e56e6013","after":"4592bd8f3b09f51cbf1fc03a415f9125f0f41285","ref":"refs/heads/perrinjerome/fix/restore_wrong_prev_txn","pushedAt":"2024-02-14T15:11:40.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"perrinjerome","name":"Jérome Perrin","path":"/perrinjerome","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/521510?s=80&v=4"},"commit":{"message":"Merge branch 'master' into perrinjerome/fix/restore_wrong_prev_txn","shortMessageHtmlLink":"Merge branch 'master' into perrinjerome/fix/restore_wrong_prev_txn"}},{"before":null,"after":"ee1b0b9283b4f0efb11805d480388f93e56e6013","ref":"refs/heads/perrinjerome/fix/restore_wrong_prev_txn","pushedAt":"2024-02-14T15:09:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"perrinjerome","name":"Jérome Perrin","path":"/perrinjerome","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/521510?s=80&v=4"},"commit":{"message":"FileStorage: fix a potential error when restore is called with wrong txn_prev\n\nif restore is called with an existing txn_prev that does not contain\nthe oid, the \"8-byte redundant transaction length -8\" and the beginning\nof the next transaction was read as a data record.\n\nThe condition to stop was incorrect as discussed in [1], in practice\nthis error would only happens when restore is passed a bad txn_prev so\nthis should not be a problem in normal conditions because we are\nsupposed to find the data record for that oid.\n\n[1] https://github.com/zopefoundation/ZODB/pull/395#discussion_r1474127300","shortMessageHtmlLink":"FileStorage: fix a potential error when restore is called with wrong …"}},{"before":"41131449a2454d8848f54fc86eadb4e3ac5a1b59","after":null,"ref":"refs/heads/repozo-verify-exit-code","pushedAt":"2024-02-06T04:08:58.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"perrinjerome","name":"Jérome Perrin","path":"/perrinjerome","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/521510?s=80&v=4"}},{"before":"891a8a6e056e58eedb010f8971a492a4b083f2e4","after":"d7f9eae966d30554982c737efd72aeb4f3231cda","ref":"refs/heads/master","pushedAt":"2024-02-06T04:08:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"perrinjerome","name":"Jérome Perrin","path":"/perrinjerome","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/521510?s=80&v=4"},"commit":{"message":"repozo: exit with non-zero code in case of verification failure (#396)\n\nWhen verification failed, repozo prints a message on standard error,\r\nbut the program always exits with a return code indicating a success.\r\nIn case of error it's more natural to exit with an error return code.","shortMessageHtmlLink":"repozo: exit with non-zero code in case of verification failure (#396)"}},{"before":"c599b55a1f15b90dc9e5e42e2c0938fe9dda7e5c","after":null,"ref":"refs/heads/config-with-pure-python-template-b21fbbf2","pushedAt":"2024-02-02T07:29:56.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"icemac","name":"Michael Howitz","path":"/icemac","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/386619?s=80&v=4"}},{"before":"802fd5f5e04daf922a02350452606dfeb465bab9","after":"41131449a2454d8848f54fc86eadb4e3ac5a1b59","ref":"refs/heads/repozo-verify-exit-code","pushedAt":"2024-02-01T15:25:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"perrinjerome","name":"Jérome Perrin","path":"/perrinjerome","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/521510?s=80&v=4"},"commit":{"message":"Newline in changelog","shortMessageHtmlLink":"Newline in changelog"}},{"before":"ff6c320512096704d5950a46515a1f80e662e010","after":"802fd5f5e04daf922a02350452606dfeb465bab9","ref":"refs/heads/repozo-verify-exit-code","pushedAt":"2024-02-01T14:06:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"perrinjerome","name":"Jérome Perrin","path":"/perrinjerome","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/521510?s=80&v=4"},"commit":{"message":"repozo: exit with non-zero code in case of verification failure\n\nWhen verification failed, repozo prints a message on standard error,\nbut the program always exits with a return code indicating a success.\nIn case of error it's more natural to exit with an error return code.","shortMessageHtmlLink":"repozo: exit with non-zero code in case of verification failure"}},{"before":"583cc34e43407814a2a1d2c4294a61c96acafb9f","after":"ff6c320512096704d5950a46515a1f80e662e010","ref":"refs/heads/repozo-verify-exit-code","pushedAt":"2024-02-01T13:56:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"perrinjerome","name":"Jérome Perrin","path":"/perrinjerome","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/521510?s=80&v=4"},"commit":{"message":"repozo: exit with non-zero code in case of verification failure\n\nWhen verification failed, repozo prints a message on standard error,\nbut the program always exits with a return code indicating a success.\nIn case of error it's more natural to exit with an error return code.","shortMessageHtmlLink":"repozo: exit with non-zero code in case of verification failure"}},{"before":null,"after":"583cc34e43407814a2a1d2c4294a61c96acafb9f","ref":"refs/heads/repozo-verify-exit-code","pushedAt":"2024-02-01T13:55:56.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"perrinjerome","name":"Jérome Perrin","path":"/perrinjerome","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/521510?s=80&v=4"},"commit":{"message":"repozo: exit with non-zero code in case of verification failure\n\nWhen verification failed, repozo prints a message on standard error,\nbut the program always exits with a return code indicating a success.\nIn case of error it's more natural to exit with an error return code.","shortMessageHtmlLink":"repozo: exit with non-zero code in case of verification failure"}},{"before":"2c8d2abaa685a93db62087daa88cf7b2a16cb4ab","after":null,"ref":"refs/heads/config-with-pure-python-template-babc889c","pushedAt":"2024-02-01T07:49:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"icemac","name":"Michael Howitz","path":"/icemac","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/386619?s=80&v=4"}},{"before":"507068ae8076376b59d5c56823d9443082580e11","after":"2c8d2abaa685a93db62087daa88cf7b2a16cb4ab","ref":"refs/heads/config-with-pure-python-template-babc889c","pushedAt":"2024-02-01T07:48:38.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"icemac","name":"Michael Howitz","path":"/icemac","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/386619?s=80&v=4"},"commit":{"message":"Merge branch 'master' into config-with-pure-python-template-babc889c","shortMessageHtmlLink":"Merge branch 'master' into config-with-pure-python-template-babc889c"}},{"before":"f14239318398282512eea17afe07213297fdcbf9","after":"891a8a6e056e58eedb010f8971a492a4b083f2e4","ref":"refs/heads/master","pushedAt":"2023-11-21T08:57:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"icemac","name":"Michael Howitz","path":"/icemac","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/386619?s=80&v=4"},"commit":{"message":"Fix supported python versions.","shortMessageHtmlLink":"Fix supported python versions."}},{"before":"17be4a7c099862fa14f8166a000b696334124c77","after":"f14239318398282512eea17afe07213297fdcbf9","ref":"refs/heads/master","pushedAt":"2023-10-10T06:43:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"icemac","name":"Michael Howitz","path":"/icemac","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/386619?s=80&v=4"},"commit":{"message":"scripts/space.py: fix sorting dict items (#392)\n\nCo-authored-by: Jens Vagelpohl \r\nCo-authored-by: Michael Howitz ","shortMessageHtmlLink":"scripts/space.py: fix sorting dict items (#392)"}},{"before":"0d9521a13be3120ac7e165390b3e2e86cb4010a3","after":"17be4a7c099862fa14f8166a000b696334124c77","ref":"refs/heads/master","pushedAt":"2023-10-09T05:44:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"},"commit":{"message":"- declare support for Python 3.12","shortMessageHtmlLink":"- declare support for Python 3.12"}},{"before":null,"after":"507068ae8076376b59d5c56823d9443082580e11","ref":"refs/heads/config-with-pure-python-template-babc889c","pushedAt":"2023-10-06T06:32:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"icemac","name":"Michael Howitz","path":"/icemac","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/386619?s=80&v=4"},"commit":{"message":"Finalize support for Python 3.12.","shortMessageHtmlLink":"Finalize support for Python 3.12."}},{"before":"b04705d62d4733d6755d022b5ce43130b46b5d06","after":"0d9521a13be3120ac7e165390b3e2e86cb4010a3","ref":"refs/heads/master","pushedAt":"2023-10-03T16:41:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"},"commit":{"message":"- make RTD work again","shortMessageHtmlLink":"- make RTD work again"}},{"before":"9014e1923225052f06f0229c963ca7b0be0aa008","after":"b04705d62d4733d6755d022b5ce43130b46b5d06","ref":"refs/heads/master","pushedAt":"2023-10-03T16:32:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"},"commit":{"message":"- downgrade Sphinx to make the docs test work","shortMessageHtmlLink":"- downgrade Sphinx to make the docs test work"}},{"before":"01ebb22d430e94e2f0659e1895d99d6f5af8ec8d","after":"9014e1923225052f06f0229c963ca7b0be0aa008","ref":"refs/heads/master","pushedAt":"2023-10-03T16:25:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"},"commit":{"message":"- try fixing docs test by downgrading sphinxcontrib-zopeext","shortMessageHtmlLink":"- try fixing docs test by downgrading sphinxcontrib-zopeext"}},{"before":"84b8e416857537bce6b93a138cbdfc62080c5596","after":"01ebb22d430e94e2f0659e1895d99d6f5af8ec8d","ref":"refs/heads/master","pushedAt":"2023-10-03T16:17:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"},"commit":{"message":"- fix linting issue","shortMessageHtmlLink":"- fix linting issue"}},{"before":"46f600f41de7953dbc52b8642bae201b7ad054d0","after":"c599b55a1f15b90dc9e5e42e2c0938fe9dda7e5c","ref":"refs/heads/config-with-pure-python-template-b21fbbf2","pushedAt":"2023-09-22T09:37:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"dhavlik","name":"nilo","path":"/dhavlik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1135405?s=80&v=4"},"commit":{"message":"Integrate .readthedocs.yaml.","shortMessageHtmlLink":"Integrate .readthedocs.yaml."}},{"before":null,"after":"46f600f41de7953dbc52b8642bae201b7ad054d0","ref":"refs/heads/config-with-pure-python-template-b21fbbf2","pushedAt":"2023-09-22T09:33:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dhavlik","name":"nilo","path":"/dhavlik","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1135405?s=80&v=4"},"commit":{"message":"Integrate .readthedocs.yaml.","shortMessageHtmlLink":"Integrate .readthedocs.yaml."}},{"before":"0632974df76e90a3f00b45b995bdff0209dd2def","after":"84b8e416857537bce6b93a138cbdfc62080c5596","ref":"refs/heads/master","pushedAt":"2023-09-10T18:21:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jimfulton","name":"Jim Fulton","path":"/jimfulton","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/772727?s=80&v=4"},"commit":{"message":"Create .readthedocs.yaml","shortMessageHtmlLink":"Create .readthedocs.yaml"}},{"before":"d9c889f7e353933578a1b7f8444aa4ed400a6fd0","after":null,"ref":"refs/heads/config-with-pure-python-template-6f887812","pushedAt":"2023-08-01T17:16:25.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"}},{"before":"6f8878124fa8bf1cc1932a8f67da8d15b653897c","after":"0632974df76e90a3f00b45b995bdff0209dd2def","ref":"refs/heads/master","pushedAt":"2023-08-01T17:16:24.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"dataflake","name":"Jens Vagelpohl","path":"/dataflake","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1215784?s=80&v=4"},"commit":{"message":"Merge pull request #388 from zopefoundation/config-with-pure-python-template-6f887812","shortMessageHtmlLink":"Merge pull request #388 from zopefoundation/config-with-pure-python-t…"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEI0f30gA","startCursor":null,"endCursor":null}},"title":"Activity · zopefoundation/ZODB"}