{"push_id":1062133719,"size":15,"distinct_size":1,"ref":"refs/heads/sync","head":"1aaba02191eb96c010d4bc64d59669110ae7f692","before":"398a170168383829ad8fc315b407d32d86a3feb0","commits":[{"sha":"e9427e51e12e1cbb45135a0f53810478e0bbfb00","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Remove TaskKeyword rows when a Keyword is removed\n\nDefine relationship between Keyword and TaskKeyword the other way around so\nthat we can use cascade=\"all\" to make sure deleting a Keyword row deletes\nthe matching TaskKeyword rows","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/e9427e51e12e1cbb45135a0f53810478e0bbfb00"},{"sha":"9f492f5f7dfc8de2cfe1d177a927826c3f6d90a5","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Remove some dead code","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/9f492f5f7dfc8de2cfe1d177a927826c3f6d90a5"},{"sha":"931644c07f2591d38f1f44d01ddf9f48fb7b1c8f","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Clean the db from invalid TaskKeyword rows at startup\n\nAlso adds an update8to9 script even if we are still at database version 8\nso that the cleanup can be removed from Yokadi startup when we switch to\ndatabase version 9.","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/931644c07f2591d38f1f44d01ddf9f48fb7b1c8f"},{"sha":"9fd10225c7e87deb2986f1759a08c4e11bda9742","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Unbreak task lock\n\nDeleting stale locks would break because after self.session.delete(lock),\nthe lock is still in the session as long as it has not been committed.\nInstead of committing, and risking a concurrency issue, reuse the lock by\nupdating its pid and updateDate fields.\n\nMade the code a bit easier to test by adding named parameters for pid\nand date, added a unit test.","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/9fd10225c7e87deb2986f1759a08c4e11bda9742"},{"sha":"43a60bf7a7397ffe7e3c286ca65b7ba6c2f3f220","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Merge branch 'fix-stale-lock' into integration","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/43a60bf7a7397ffe7e3c286ca65b7ba6c2f3f220"},{"sha":"278b8149e8b0cd17f9f8404e9dbdcb359a4eb806","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Use shutil.get_terminal_size to get the terminal size","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/278b8149e8b0cd17f9f8404e9dbdcb359a4eb806"},{"sha":"063072123c4ee967e31592da322ec6f102558ae3","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Merge branch 'fix/terminal_size' into 1.0-dev","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/063072123c4ee967e31592da322ec6f102558ae3"},{"sha":"65a243c844d179eb017a674e4e519f33e4f9c248","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Disallow null for most foreign keys","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/65a243c844d179eb017a674e4e519f33e4f9c248"},{"sha":"6d9d919a029c4bc5b211b796a5ada15e0056d979","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Getting ready for 1.0.2","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/6d9d919a029c4bc5b211b796a5ada15e0056d979"},{"sha":"5e7f4615364e846d95606f365c914cf10f362f8c","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Don't forget to commit NEWS","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/5e7f4615364e846d95606f365c914cf10f362f8c"},{"sha":"6ff18ffca5c2947a16ea618d79220c39edf9be48","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Merge branch '1.0'\n\nConflicts:\n\tversion","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/6ff18ffca5c2947a16ea618d79220c39edf9be48"},{"sha":"9af7d6eff579cc0c2f8afc457b7d922d58f6a438","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Document blog post creation, rm duplicate pypi step","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/9af7d6eff579cc0c2f8afc457b7d922d58f6a438"},{"sha":"fef7240c40638eb98bad6faa9d82e0a34b3c77d1","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Merge branch '1.0'","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/fef7240c40638eb98bad6faa9d82e0a34b3c77d1"},{"sha":"397aafc5090d6071bd5e3749be7a002f8c848643","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Remove Python 3.3, add 3.5","distinct":false,"url":"https://api.github.com/repos/agateau/yokadi/commits/397aafc5090d6071bd5e3749be7a002f8c848643"},{"sha":"1aaba02191eb96c010d4bc64d59669110ae7f692","author":{"email":"1d6e1cf70ec6f9ab28d3ea4b27a49a77654d370e@agateau.com","name":"Aurélien Gâteau"},"message":"Merge branch 'master' into sync\n\n- Renamed update/update8to9 from sync branch to update/update9to10\n- Bumped db version\n\nConflicts:\n\tupdate/update8to9","distinct":true,"url":"https://api.github.com/repos/agateau/yokadi/commits/1aaba02191eb96c010d4bc64d59669110ae7f692"}]}