{"push_id":771402704,"size":14,"distinct_size":0,"ref":"refs/heads/master","head":"5adfdf4d7e37e1d6dd1b4d2557ac780d46474955","before":"e315432751e8a1f057cdceff9a49654dcf9f62fc","commits":[{"sha":"4f4309b8593e0a3b2c3281e61dfad24b7b28b9d4","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"loader: scan_group does not recursively scan in case of nested project\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/4f4309b8593e0a3b2c3281e61dfad24b7b28b9d4"},{"sha":"d5b82cfe7b56a3bc9ed760141566009d71e5fae0","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"loader: introduce `MGroup::mmodule_paths_by_name` to search for modules\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/d5b82cfe7b56a3bc9ed760141566009d71e5fae0"},{"sha":"787a5c199b07d37a38b6319a2332f895abf24663","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"loader: use `mmodule_paths_by_name` to simplify `search_mmodule_by_name` and `search_module_in_paths`\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/787a5c199b07d37a38b6319a2332f895abf24663"},{"sha":"274e520253f8ed5449c2ee69ab4d227d1109d46e","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"loader: identify_file distinguishes singleton projects in the verbose message\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/274e520253f8ed5449c2ee69ab4d227d1109d46e"},{"sha":"0fb6696fcc5c7195c27f772162c785c21237b11d","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"loader: projects might have a ini file associated\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/0fb6696fcc5c7195c27f772162c785c21237b11d"},{"sha":"e2f31085f7d43ed5bb1da9c4a7a8563157dcd498","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"loader: get_mgroup filter out non-directories\n\nThis was implicit because non-directories do not match the heuristics\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/e2f31085f7d43ed5bb1da9c4a7a8563157dcd498"},{"sha":"a1baabc838f09b444e7291fe71775608b9fd46d1","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"loader: get_mgroup check and assign the `project.ini` file to projects\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/a1baabc838f09b444e7291fe71775608b9fd46d1"},{"sha":"6b4a57207521f93c6978e51d2bf5d19b1b0d322f","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"Create empty `projects.ini` and `project.ini` for the new loader policy\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/6b4a57207521f93c6978e51d2bf5d19b1b0d322f"},{"sha":"7927025c774f7c35cb6a802041957c119fdcca9a","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"loader: change get_mgroup policy and search for a `project.ini` in parent directories\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/7927025c774f7c35cb6a802041957c119fdcca9a"},{"sha":"897b076960cb57b0811027ee641848d11ac30ed2","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"tests: improve loader test with a more complex project1 directory\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/897b076960cb57b0811027ee641848d11ac30ed2"},{"sha":"4854b43e2cb0b432fd57628e8b4788557176177f","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"tests: update some error messages because of the new loader policy\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/4854b43e2cb0b432fd57628e8b4788557176177f"},{"sha":"98c01e03254cfe39f10bf0396c4da3bb503c8b20","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"platform/android: the root group is no more src, thus no need to `..` from it.\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/98c01e03254cfe39f10bf0396c4da3bb503c8b20"},{"sha":"b580baf1abffd8c95a17a2f007c7025a21ceec68","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"inscape_tool: isolate the test directory since generated files are broken\n\nSee #1657\n\nSigned-off-by: Jean Privat <jean@pryen.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/b580baf1abffd8c95a17a2f007c7025a21ceec68"},{"sha":"5adfdf4d7e37e1d6dd1b4d2557ac780d46474955","author":{"email":"51f8b1fa9b424745378826727452997ee2a7c3d7@pryen.org","name":"Jean Privat"},"message":"Merge: New loader policy that features project.ini\n\nThis introduce the new loader policy by adapting the existing loader.\nThe API it still as bad as before but the behavior is expected to be better. Close #1250\n\nThe changes impact two decisions made by the loader:\n\n* how to find the project a module belongs to? ie get the root project of an arbitrary file.\n* how to find a named module in a project? ie get (and load) the module named `foo` in a mproject object.\n\nThe new loader use a recursive directory search for both answers, whereas the older loader only looked at some specific paths.\nBy the way, the new code use `String::files` and `String::file_stat` (they where unneeded by the previous loader, life was simpler back then). The light FFI used by the bootstrap make this possible.\n\nHere is a detail of the new policy:\n\n* A project is a directory identified with a `project.ini` file.\n  Only the existence of the `.ini` file matter, the content is not used yet.\n* A group is just a sub-directory of a project; there is no more naming or structural convention (ie hack).\n* A module either belongs to a project, or is a standalone module (also called singleton project). This one is not new.\n\nTo know the project a module belongs to, its directory is recursively searched up to the `/` directory.\nIf a project is found, then the module belongs to it.\nIf no project is found, then the module is a standalone module.\n\nNote: to simplify the migration from the previous loader, a special file `projects.ini` (with a plural) in a directory indicates that sub-directories are projects, even without a `project.ini` file.\nThese files simplify the PR as only some `projects.ini` files are needed (eg `lib/projects.ini`)\n\nTo search for a module in a project, the named module is searched in the directory and subdirectories of the project.\n\nThis PR also expose some vocabulary for the end user. Maybe some terms could be improved before the PR is merged. Some propositions:\n\n* rename `project` as `package` (so `package.ini` instead of `project.ini`). Might be non-POLA from people coming from a Java ecosystem.\n* rename `group` as `directory`. With the new policy, groups are more transparent than ever and are only here for the programmer to group modules as he prefers.\n\nPull-Request: #1654\nReviewed-by: Lucas Bajolet <r4pass@hotmail.com>\nReviewed-by: Alexis Laferrière <alexis.laf@xymus.net>\nReviewed-by: Alexandre Terrasa <alexandre@moz-code.org>","distinct":false,"url":"https://api.github.com/repos/nitlang/nit/commits/5adfdf4d7e37e1d6dd1b4d2557ac780d46474955"}]}