{"action":"created","issue":{"url":"https://api.github.com/repos/sccn/labstreaminglayer/issues/273","repository_url":"https://api.github.com/repos/sccn/labstreaminglayer","labels_url":"https://api.github.com/repos/sccn/labstreaminglayer/issues/273/labels{/name}","comments_url":"https://api.github.com/repos/sccn/labstreaminglayer/issues/273/comments","events_url":"https://api.github.com/repos/sccn/labstreaminglayer/issues/273/events","html_url":"https://github.com/sccn/labstreaminglayer/issues/273","id":297999741,"node_id":"MDU6SXNzdWUyOTc5OTk3NDE=","number":273,"title":"Split up the repository","user":{"login":"tstenner","id":920936,"node_id":"MDQ6VXNlcjkyMDkzNg==","avatar_url":"https://avatars2.githubusercontent.com/u/920936?v=4","gravatar_id":"","url":"https://api.github.com/users/tstenner","html_url":"https://github.com/tstenner","followers_url":"https://api.github.com/users/tstenner/followers","following_url":"https://api.github.com/users/tstenner/following{/other_user}","gists_url":"https://api.github.com/users/tstenner/gists{/gist_id}","starred_url":"https://api.github.com/users/tstenner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tstenner/subscriptions","organizations_url":"https://api.github.com/users/tstenner/orgs","repos_url":"https://api.github.com/users/tstenner/repos","events_url":"https://api.github.com/users/tstenner/events{/privacy}","received_events_url":"https://api.github.com/users/tstenner/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2018-02-17T11:58:59Z","updated_at":"2018-06-20T17:54:45Z","closed_at":null,"author_association":"COLLABORATOR","body":"I already started this discussion on Slack and the responses were generally positive so here's the official proposal:\r\n\r\nCurrently, the source code for liblsl, all language bindings and all apps is in a single repository.\r\nAs a consequence:\r\n- the history is currently at 265MB\r\n- it's impossible for CI systems to figure out which parts need to be rebuilt after a commit\r\n- tags and # of commits since a tag are meaningless\r\n- commit access is granted for *everything*\r\n\r\nSo I'd propose to:\r\n- create a new LSL organization with repositories for at least liblsl, the language bindings and the apps. Further discussion is needed if the apps should also be split up or if a single repository for all/most apps would suffice\r\n- Replace the folders in the big repository with [git submodules](https://en.wikibooks.org/wiki/Git/Submodules_and_Superprojects), which are essentially pointers to commits in the other repositories. The same tree as today can be downloaded / updated with a single git command, but it's also possible to download / update only a needed subset or check out a single repository (e.g. `liblsl` and `liblsl-Matlab`) \r\n\r\nAdvantages:\r\n- the CI could rebuild only what's needed, changing a file in the BrainAmp app wouldn't rebuild the python bindings\r\n- the commit history contains only commits for this app / binding\r\n- developers could get commit rights only for a specific app\r\n- Better version numbers: liblsl could have a version number like `1.12+23-c0ffee`, i.e liblsl 1.12 + 23 new commits, commit hash c0ffee\r\n- Each Conda build recipe could have a link to the repository so we could put them in a separate repository / submit them to conda-forge. Calling `conda build liblsl` would then download only the `liblsl` repo, build it and create a distributable package\r\n\r\nWith `git filter-branch` the commit (and authorship) history is preserved and filtered to only contain commits actually touching the files in the repository, so nothing is lost (except for commit hashes to the former big repository)."},"comment":{"url":"https://api.github.com/repos/sccn/labstreaminglayer/issues/comments/398840406","html_url":"https://github.com/sccn/labstreaminglayer/issues/273#issuecomment-398840406","issue_url":"https://api.github.com/repos/sccn/labstreaminglayer/issues/273","id":398840406,"node_id":"MDEyOklzc3VlQ29tbWVudDM5ODg0MDQwNg==","user":{"login":"cboulay","id":303797,"node_id":"MDQ6VXNlcjMwMzc5Nw==","avatar_url":"https://avatars1.githubusercontent.com/u/303797?v=4","gravatar_id":"","url":"https://api.github.com/users/cboulay","html_url":"https://github.com/cboulay","followers_url":"https://api.github.com/users/cboulay/followers","following_url":"https://api.github.com/users/cboulay/following{/other_user}","gists_url":"https://api.github.com/users/cboulay/gists{/gist_id}","starred_url":"https://api.github.com/users/cboulay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cboulay/subscriptions","organizations_url":"https://api.github.com/users/cboulay/orgs","repos_url":"https://api.github.com/users/cboulay/repos","events_url":"https://api.github.com/users/cboulay/events{/privacy}","received_events_url":"https://api.github.com/users/cboulay/received_events","type":"User","site_admin":false},"created_at":"2018-06-20T17:54:45Z","updated_at":"2018-06-20T17:54:45Z","author_association":"COLLABORATOR","body":"@dmedine It's mostly done and everything seems to work, but there's a lot of momentum with this repo so I think the migration is being done very slowly and organically. i.e., when I'm answering questions, I now point people to the new app-specific repos. But eventually we will have to pull the trigger and redirect this repo to github.com/labstreaminglayer/labstreaminglayer (i.e., the 'super repo').\r\n\r\nTypically you shouldn't be merging anything directly into the super repo. This repo has almost no actual code in it and instead just points to other repos via submodules. It is the submodules that should be updated, then the super repo should be updated to point to the newest version of the submodule.\r\n\r\nIf you're working on a NEW app, that doesn't already have its own repo and isn't already pointed to in the super repo, then you'll need to create a new repository under github.com/labstreaminglayer ... and after it is working well standalone then it can be added as a submodule to the super repo.\r\n\r\nIf you like, for these pre-existing PRs, you can just merge the PR in this legacy repo, create an issue to migrate the app to the new repository locations, then Tristan or I can take it from there. It'll probably be Tristan because I don't know how he managed to split things off and migrate while maintaining the commit history. I'm good with submodules but that's a whole different level.\r\n"}}
{"actor":{"display_login":"cboulay"}}