{"action":"created","issue":{"url":"https://api.github.com/repos/retailcoder/Rubberduck/issues/174","labels_url":"https://api.github.com/repos/retailcoder/Rubberduck/issues/174/labels{/name}","comments_url":"https://api.github.com/repos/retailcoder/Rubberduck/issues/174/comments","events_url":"https://api.github.com/repos/retailcoder/Rubberduck/issues/174/events","html_url":"https://github.com/retailcoder/Rubberduck/issues/174","id":57127349,"number":174,"title":"Define and Implement Public API for SourceControl & Git Integration","user":{"login":"ckuhn203","id":2716800,"avatar_url":"https://avatars.githubusercontent.com/u/2716800?v=3","gravatar_id":"","url":"https://api.github.com/users/ckuhn203","html_url":"https://github.com/ckuhn203","followers_url":"https://api.github.com/users/ckuhn203/followers","following_url":"https://api.github.com/users/ckuhn203/following{/other_user}","gists_url":"https://api.github.com/users/ckuhn203/gists{/gist_id}","starred_url":"https://api.github.com/users/ckuhn203/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ckuhn203/subscriptions","organizations_url":"https://api.github.com/users/ckuhn203/orgs","repos_url":"https://api.github.com/users/ckuhn203/repos","events_url":"https://api.github.com/users/ckuhn203/events{/privacy}","received_events_url":"https://api.github.com/users/ckuhn203/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/retailcoder/Rubberduck/labels/api","name":"api","color":"DDDDDd"},{"url":"https://api.github.com/repos/retailcoder/Rubberduck/labels/discussion","name":"discussion","color":"FEFEFE"},{"url":"https://api.github.com/repos/retailcoder/Rubberduck/labels/source-control-integration","name":"source-control-integration","color":"DDDDDd"}],"state":"open","locked":false,"assignee":{"login":"ckuhn203","id":2716800,"avatar_url":"https://avatars.githubusercontent.com/u/2716800?v=3","gravatar_id":"","url":"https://api.github.com/users/ckuhn203","html_url":"https://github.com/ckuhn203","followers_url":"https://api.github.com/users/ckuhn203/followers","following_url":"https://api.github.com/users/ckuhn203/following{/other_user}","gists_url":"https://api.github.com/users/ckuhn203/gists{/gist_id}","starred_url":"https://api.github.com/users/ckuhn203/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ckuhn203/subscriptions","organizations_url":"https://api.github.com/users/ckuhn203/orgs","repos_url":"https://api.github.com/users/ckuhn203/repos","events_url":"https://api.github.com/users/ckuhn203/events{/privacy}","received_events_url":"https://api.github.com/users/ckuhn203/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/retailcoder/Rubberduck/milestones/15","labels_url":"https://api.github.com/repos/retailcoder/Rubberduck/milestones/15/labels","id":972997,"number":15,"title":"Version 1.2","description":"This version includes massive changes to the parsing strategy, and a few of the perks that these changes enable.","creator":{"login":"retailcoder","id":5751684,"avatar_url":"https://avatars.githubusercontent.com/u/5751684?v=3","gravatar_id":"","url":"https://api.github.com/users/retailcoder","html_url":"https://github.com/retailcoder","followers_url":"https://api.github.com/users/retailcoder/followers","following_url":"https://api.github.com/users/retailcoder/following{/other_user}","gists_url":"https://api.github.com/users/retailcoder/gists{/gist_id}","starred_url":"https://api.github.com/users/retailcoder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/retailcoder/subscriptions","organizations_url":"https://api.github.com/users/retailcoder/orgs","repos_url":"https://api.github.com/users/retailcoder/repos","events_url":"https://api.github.com/users/retailcoder/events{/privacy}","received_events_url":"https://api.github.com/users/retailcoder/received_events","type":"User","site_admin":false},"open_issues":19,"closed_issues":15,"state":"open","created_at":"2015-02-10T02:54:55Z","updated_at":"2015-02-12T15:32:09Z","due_on":"2015-03-01T05:00:00Z","closed_at":null},"comments":2,"created_at":"2015-02-10T03:51:54Z","updated_at":"2015-02-12T18:08:20Z","closed_at":null,"body":"IDE integration will be deferred to a future version, but I want to have a public API created and implemented for the `GitProvider` for version 1.2.\r\n\r\nBelow is the list of methods implemented in the stale [`source_control` branch](https://github.com/retailcoder/Rubberduck/tree/source_control). These items will need to be brought into the trunk and the remaining items implemented.\r\n\r\n- [ ] Clone\r\n- [ ] Init\r\n- [x] Push\r\n- [x] Fetch\r\n- [x] Pull\r\n- [x] Commit\r\n- [ ] Merge\r\n- [x] Checkout\r\n- [ ] Undo\r\n- [ ] Revert\r\n- [ ] AddFile\r\n- [ ] RemoveFile"},"comment":{"url":"https://api.github.com/repos/retailcoder/Rubberduck/issues/comments/74120780","html_url":"https://github.com/retailcoder/Rubberduck/issues/174#issuecomment-74120780","issue_url":"https://api.github.com/repos/retailcoder/Rubberduck/issues/174","id":74120780,"user":{"login":"ckuhn203","id":2716800,"avatar_url":"https://avatars.githubusercontent.com/u/2716800?v=3","gravatar_id":"","url":"https://api.github.com/users/ckuhn203","html_url":"https://github.com/ckuhn203","followers_url":"https://api.github.com/users/ckuhn203/followers","following_url":"https://api.github.com/users/ckuhn203/following{/other_user}","gists_url":"https://api.github.com/users/ckuhn203/gists{/gist_id}","starred_url":"https://api.github.com/users/ckuhn203/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ckuhn203/subscriptions","organizations_url":"https://api.github.com/users/ckuhn203/orgs","repos_url":"https://api.github.com/users/ckuhn203/repos","events_url":"https://api.github.com/users/ckuhn203/events{/privacy}","received_events_url":"https://api.github.com/users/ckuhn203/received_events","type":"User","site_admin":false},"created_at":"2015-02-12T18:08:19Z","updated_at":"2015-02-12T18:08:19Z","body":"I like this API, but it introduces some difficulties. As currently defined, none of the classes have default constructors. COM exposure requires default constructors, and things normally passed into a constructor are set via properties. I think I'll introduce a layer of abstraction in between the classes we'll use internally and the ones that get exposed to COM Interop. Only trouble with that is naming becomes a problem. The naming issue may be able to be overcome by using `ProgId` attributes though."}}