{"action":"created","issue":{"url":"https://api.github.com/repos/whyrusleeping/gx/issues/109","repository_url":"https://api.github.com/repos/whyrusleeping/gx","labels_url":"https://api.github.com/repos/whyrusleeping/gx/issues/109/labels{/name}","comments_url":"https://api.github.com/repos/whyrusleeping/gx/issues/109/comments","events_url":"https://api.github.com/repos/whyrusleeping/gx/issues/109/events","html_url":"https://github.com/whyrusleeping/gx/issues/109","id":185011817,"number":109,"title":"gx-workspace, a project management tool","user":{"login":"whyrusleeping","id":1243164,"avatar_url":"https://avatars.githubusercontent.com/u/1243164?v=3","gravatar_id":"","url":"https://api.github.com/users/whyrusleeping","html_url":"https://github.com/whyrusleeping","followers_url":"https://api.github.com/users/whyrusleeping/followers","following_url":"https://api.github.com/users/whyrusleeping/following{/other_user}","gists_url":"https://api.github.com/users/whyrusleeping/gists{/gist_id}","starred_url":"https://api.github.com/users/whyrusleeping/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whyrusleeping/subscriptions","organizations_url":"https://api.github.com/users/whyrusleeping/orgs","repos_url":"https://api.github.com/users/whyrusleeping/repos","events_url":"https://api.github.com/users/whyrusleeping/events{/privacy}","received_events_url":"https://api.github.com/users/whyrusleeping/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":11,"created_at":"2016-10-25T03:46:11Z","updated_at":"2016-11-29T15:43:23Z","closed_at":null,"body":"@lgierth has been throwing the idea of a `gx-workspace` tool around for a while, and i've had some thoughts about it recently. So heres my (hopefully coherent) thoughts:\n\n`gx-workspace` will be a gx subtool like `gx-go` and friends. you will be able to make a package of type \"workspace\" and add dependencies to it.\n\nPackages which are dependencies of a workspace package are 'managed' by the workspace. Updating one package in the workspace will recursively update that package in all other deps of the workspace, bubbling changes up throughout as needed.\n\n`gx-workspace` will also be able to generate a 'repo' from its package so that other projects may easily sync up with your set of packages.\n\n`gx-workspace` might have some special hooks when we get around to the 'package index.html' pages that turn its welcome page into more of a 'registry' feeling site.\n\nexample mocked up commands:\n\n```\n$ gx init\nwhat language will the project be in? workspace\ninitializing package foobar...\n$ gx import github.com/ipfs/go-cid\n$ gx import github.com/multiformats/go-multihash\n$ gx import github.com/multiformats/go-multiaddr\n...\nsome time later\n...\n$ gx update github.com/multiformats/go-multihash\nupdated go-cid to use go-multihash vX.Y.Z!\n$ gx-workspace mkrepo\nQmBlahBlahBlah\n```\n"},"comment":{"url":"https://api.github.com/repos/whyrusleeping/gx/issues/comments/263605924","html_url":"https://github.com/whyrusleeping/gx/issues/109#issuecomment-263605924","issue_url":"https://api.github.com/repos/whyrusleeping/gx/issues/109","id":263605924,"user":{"login":"lgierth","id":19248,"avatar_url":"https://avatars.githubusercontent.com/u/19248?v=3","gravatar_id":"","url":"https://api.github.com/users/lgierth","html_url":"https://github.com/lgierth","followers_url":"https://api.github.com/users/lgierth/followers","following_url":"https://api.github.com/users/lgierth/following{/other_user}","gists_url":"https://api.github.com/users/lgierth/gists{/gist_id}","starred_url":"https://api.github.com/users/lgierth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgierth/subscriptions","organizations_url":"https://api.github.com/users/lgierth/orgs","repos_url":"https://api.github.com/users/lgierth/repos","events_url":"https://api.github.com/users/lgierth/events{/privacy}","received_events_url":"https://api.github.com/users/lgierth/received_events","type":"User","site_admin":false},"created_at":"2016-11-29T15:43:23Z","updated_at":"2016-11-29T15:43:23Z","body":"I've been sketching what the workflow would look like with a gx-workspace tool, and I think we can easily do it without any meta package. See https://github.com/ipfs/gx-workspace#usage:\r\n\r\n### Usage\r\n\r\nWe're working directly in the respective package, no administrative overhead\r\n\r\n```sh\r\n> cd $GOPATH/src/github.com/ipfs/go-ipfs/\r\n```\r\n\r\nLet's clone/pull all the respective `dvcsimport` repos into GOPATH.\r\nMost of them will already be there and it's our \"workspace\".\r\n\r\n```sh\r\n> gx-workspace pull\r\n```\r\n\r\nNow bubble up the hashes through the tree, this leaves dirty `package.json` and `.gx/`.\r\nThis will abort if *any* repo is dirty, overridable by -f\r\n\r\n```sh\r\n> gx-workspace update go-cid go-libp2p-interface-pnet\r\n```\r\n\r\nRun tests in all packages.\r\n\r\n```sh\r\n> gx-workspace exec make test\r\n```\r\n\r\nNow do the git dance, but only for repos which got touched\r\n\r\n```sh\r\n> gx-workspace pr feat/gx-update-123456\r\n# which is the equivalent of:\r\n> gx-workspace exec --only-deps --changed 'git checkout -b $branch && git commit -am \"gx release $VERSION\" && git push origin $BRANCH && hub pull-request -m \"Update go-cid go-libp2p-interface-pnet\"'\r\n```\r\n\r\nThere's going to be some packages that are outside of this dependency tree,\r\nbut still want these updates. They can copy over the updates:\r\n\r\n```sh\r\n> cd $GOPATH/src/github.com/ipfs/ipns-pub\r\n> gx-workspace pull\r\n> gx-workspace update-from go-ipfs\r\n```"}}
{"actor":{"display_login":"lgierth"}}