{"action":"created","issue":{"url":"https://api.github.com/repos/libgit2/objective-git/issues/315","labels_url":"https://api.github.com/repos/libgit2/objective-git/issues/315/labels{/name}","comments_url":"https://api.github.com/repos/libgit2/objective-git/issues/315/comments","events_url":"https://api.github.com/repos/libgit2/objective-git/issues/315/events","html_url":"https://github.com/libgit2/objective-git/issues/315","id":25841673,"number":315,"title":"Split GTReference into direct and symbolic variants","user":{"login":"jspahrsummers","id":432536,"avatar_url":"https://avatars.githubusercontent.com/u/432536?v=3","gravatar_id":"","url":"https://api.github.com/users/jspahrsummers","html_url":"https://github.com/jspahrsummers","followers_url":"https://api.github.com/users/jspahrsummers/followers","following_url":"https://api.github.com/users/jspahrsummers/following{/other_user}","gists_url":"https://api.github.com/users/jspahrsummers/gists{/gist_id}","starred_url":"https://api.github.com/users/jspahrsummers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jspahrsummers/subscriptions","organizations_url":"https://api.github.com/users/jspahrsummers/orgs","repos_url":"https://api.github.com/users/jspahrsummers/repos","events_url":"https://api.github.com/users/jspahrsummers/events{/privacy}","received_events_url":"https://api.github.com/users/jspahrsummers/received_events","type":"User","site_admin":true},"labels":[{"url":"https://api.github.com/repos/libgit2/objective-git/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2014-01-17T22:19:04Z","updated_at":"2015-04-10T20:06:07Z","closed_at":null,"body":"Some types (e.g., `unresolvedTarget`) and some methods (e.g., `-referenceByUpdatingTarget…`) change their behavior based on whether the receiver is a direct or symbolic reference.\r\n\r\nWe should clearly represent the differences in the type system, using an abstract `GTReference` superclass for the commonalities."},"comment":{"url":"https://api.github.com/repos/libgit2/objective-git/issues/comments/91667765","html_url":"https://github.com/libgit2/objective-git/issues/315#issuecomment-91667765","issue_url":"https://api.github.com/repos/libgit2/objective-git/issues/315","id":91667765,"user":{"login":"mdiep","id":1302,"avatar_url":"https://avatars.githubusercontent.com/u/1302?v=3","gravatar_id":"","url":"https://api.github.com/users/mdiep","html_url":"https://github.com/mdiep","followers_url":"https://api.github.com/users/mdiep/followers","following_url":"https://api.github.com/users/mdiep/following{/other_user}","gists_url":"https://api.github.com/users/mdiep/gists{/gist_id}","starred_url":"https://api.github.com/users/mdiep/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mdiep/subscriptions","organizations_url":"https://api.github.com/users/mdiep/orgs","repos_url":"https://api.github.com/users/mdiep/repos","events_url":"https://api.github.com/users/mdiep/events{/privacy}","received_events_url":"https://api.github.com/users/mdiep/received_events","type":"User","site_admin":true},"created_at":"2015-04-10T20:06:07Z","updated_at":"2015-04-10T20:06:07Z","body":"FWIW [SwiftGit2](https://github.com/SwiftGit2/SwiftGit2) only exposes direct references. If it encounters a symbolic reference, it resolves it and returns the direct reference. That seemed to play the best with value semantics since you need to resolve to get the actual target."}}