{"action":"created","issue":{"url":"https://api.github.com/repos/Masterminds/glide/issues/492","repository_url":"https://api.github.com/repos/Masterminds/glide","labels_url":"https://api.github.com/repos/Masterminds/glide/issues/492/labels{/name}","comments_url":"https://api.github.com/repos/Masterminds/glide/issues/492/comments","events_url":"https://api.github.com/repos/Masterminds/glide/issues/492/events","html_url":"https://github.com/Masterminds/glide/issues/492","id":162277226,"number":492,"title":"Proposal: Resolve In Glide Cache Instead of Vendor","user":{"login":"mattfarina","id":62991,"avatar_url":"https://avatars.githubusercontent.com/u/62991?v=3","gravatar_id":"","url":"https://api.github.com/users/mattfarina","html_url":"https://github.com/mattfarina","followers_url":"https://api.github.com/users/mattfarina/followers","following_url":"https://api.github.com/users/mattfarina/following{/other_user}","gists_url":"https://api.github.com/users/mattfarina/gists{/gist_id}","starred_url":"https://api.github.com/users/mattfarina/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattfarina/subscriptions","organizations_url":"https://api.github.com/users/mattfarina/orgs","repos_url":"https://api.github.com/users/mattfarina/repos","events_url":"https://api.github.com/users/mattfarina/events{/privacy}","received_events_url":"https://api.github.com/users/mattfarina/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/Masterminds/glide/milestones/10","html_url":"https://github.com/Masterminds/glide/milestones/0.12","labels_url":"https://api.github.com/repos/Masterminds/glide/milestones/10/labels","id":1857592,"number":10,"title":"0.12","description":"","creator":{"login":"mattfarina","id":62991,"avatar_url":"https://avatars.githubusercontent.com/u/62991?v=3","gravatar_id":"","url":"https://api.github.com/users/mattfarina","html_url":"https://github.com/mattfarina","followers_url":"https://api.github.com/users/mattfarina/followers","following_url":"https://api.github.com/users/mattfarina/following{/other_user}","gists_url":"https://api.github.com/users/mattfarina/gists{/gist_id}","starred_url":"https://api.github.com/users/mattfarina/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattfarina/subscriptions","organizations_url":"https://api.github.com/users/mattfarina/orgs","repos_url":"https://api.github.com/users/mattfarina/repos","events_url":"https://api.github.com/users/mattfarina/events{/privacy}","received_events_url":"https://api.github.com/users/mattfarina/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":3,"state":"open","created_at":"2016-06-30T14:53:23Z","updated_at":"2016-08-18T13:34:03Z","due_on":null,"closed_at":null},"comments":7,"created_at":"2016-06-25T11:36:10Z","updated_at":"2016-08-18T13:34:03Z","closed_at":"2016-08-18T13:34:03Z","body":"Currently, Glide fetches packages (as repos) into the `vendor/` directory and then resolves the dependency tree. As new packages are needed they are fetched and set to the needed version.\r\n\r\nThis proposal is to break this process apart. Packages would be fetched and versions resolved in the Glide cache and then exported (just the versions source without vcs information) to the `vendor/` directory.\r\n\r\n**Pros:**\r\n* When packages are vendored, that is stored in your apps VCS, there will be a major performance improvement when a warm cache.\r\n* Sometimes resolution has errors which causes Glide to exit before completion. This can leave the `vendor/` directory in a bad state that needs to be fixed. This would no longer happen as only when Glide finds a new good state would it put source in `vendor/`.\r\n* Some flags such as `--cache`, `--strip-vcs`, `--update-vendored` would all no longer be needed.\r\n* Confusion around subpackages in Git would go away.\r\n\r\n**Cons:**\r\n* If you checkout a dependency into the `vendor/` directory, make changes to it from there, and push those changes you wouldn't be able to do that while Glide was working on your tree.\r\n* If you are in development and using Docker and you want them to share a cache you may need to pass in the shared location to Glide for the cache.\r\n* Glide would leverage a global cache lock which would cause parallel glide operations (processes) to take longer on the same system.\r\n\r\nThere are likely more pros and cons. If you know of any please note them in the comments.\r\n\r\nThoughts?"},"comment":{"url":"https://api.github.com/repos/Masterminds/glide/issues/comments/240724080","html_url":"https://github.com/Masterminds/glide/issues/492#issuecomment-240724080","issue_url":"https://api.github.com/repos/Masterminds/glide/issues/492","id":240724080,"user":{"login":"mattfarina","id":62991,"avatar_url":"https://avatars.githubusercontent.com/u/62991?v=3","gravatar_id":"","url":"https://api.github.com/users/mattfarina","html_url":"https://github.com/mattfarina","followers_url":"https://api.github.com/users/mattfarina/followers","following_url":"https://api.github.com/users/mattfarina/following{/other_user}","gists_url":"https://api.github.com/users/mattfarina/gists{/gist_id}","starred_url":"https://api.github.com/users/mattfarina/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattfarina/subscriptions","organizations_url":"https://api.github.com/users/mattfarina/orgs","repos_url":"https://api.github.com/users/mattfarina/repos","events_url":"https://api.github.com/users/mattfarina/events{/privacy}","received_events_url":"https://api.github.com/users/mattfarina/received_events","type":"User","site_admin":false},"created_at":"2016-08-18T13:34:03Z","updated_at":"2016-08-18T13:34:03Z","body":"This was just merged."}}
{"actor":{"display_login":"mattfarina"}}