{"action":"created","issue":{"url":"https://api.github.com/repos/ruby-rdf/rdf/issues/310","repository_url":"https://api.github.com/repos/ruby-rdf/rdf","labels_url":"https://api.github.com/repos/ruby-rdf/rdf/issues/310/labels{/name}","comments_url":"https://api.github.com/repos/ruby-rdf/rdf/issues/310/comments","events_url":"https://api.github.com/repos/ruby-rdf/rdf/issues/310/events","html_url":"https://github.com/ruby-rdf/rdf/pull/310","id":170968774,"number":310,"title":"Implement `Transaction#mutated?`","user":{"login":"no-reply","id":1361776,"avatar_url":"https://avatars.githubusercontent.com/u/1361776?v=3","gravatar_id":"","url":"https://api.github.com/users/no-reply","html_url":"https://github.com/no-reply","followers_url":"https://api.github.com/users/no-reply/followers","following_url":"https://api.github.com/users/no-reply/following{/other_user}","gists_url":"https://api.github.com/users/no-reply/gists{/gist_id}","starred_url":"https://api.github.com/users/no-reply/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/no-reply/subscriptions","organizations_url":"https://api.github.com/users/no-reply/orgs","repos_url":"https://api.github.com/users/no-reply/repos","events_url":"https://api.github.com/users/no-reply/events{/privacy}","received_events_url":"https://api.github.com/users/no-reply/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-08-12T22:10:59Z","updated_at":"2016-08-12T22:15:37Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/ruby-rdf/rdf/pulls/310","html_url":"https://github.com/ruby-rdf/rdf/pull/310","diff_url":"https://github.com/ruby-rdf/rdf/pull/310.diff","patch_url":"https://github.com/ruby-rdf/rdf/pull/310.patch"},"body":"`#mutated?` must return `true` when the transaction would change the\r\nrepository if executed against it's state at transaction start time.\r\nWe allow implementations to return `true` in other cases, as well; there\r\nis no guarantee that a `false` result will be returned in any specific\r\ncircumstances (or ever).\r\n\r\nFor the base transaction, we simply check whether `@changes` is\r\nempty. This can give false positives, but avoids a worst-case linear\r\ncheck.\r\n\r\nFor subclasses with no custom implementation, we raise a\r\n`NotImplementedError`.\r\n\r\nFor the `SerializableTransaction` included in the default\r\n`Repository::Implementation`, we use `#equal?` on the `Hamster::Hash`\r\ninstances. This will always give a correct response for the actual\r\nimplementation, moreover, it is guaranteed not to give false negatives\r\neven if a user messes with the snapshot using `#send`.\r\n\r\nCloses #308."},"comment":{"url":"https://api.github.com/repos/ruby-rdf/rdf/issues/comments/239572833","html_url":"https://github.com/ruby-rdf/rdf/pull/310#issuecomment-239572833","issue_url":"https://api.github.com/repos/ruby-rdf/rdf/issues/310","id":239572833,"user":{"login":"no-reply","id":1361776,"avatar_url":"https://avatars.githubusercontent.com/u/1361776?v=3","gravatar_id":"","url":"https://api.github.com/users/no-reply","html_url":"https://github.com/no-reply","followers_url":"https://api.github.com/users/no-reply/followers","following_url":"https://api.github.com/users/no-reply/following{/other_user}","gists_url":"https://api.github.com/users/no-reply/gists{/gist_id}","starred_url":"https://api.github.com/users/no-reply/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/no-reply/subscriptions","organizations_url":"https://api.github.com/users/no-reply/orgs","repos_url":"https://api.github.com/users/no-reply/repos","events_url":"https://api.github.com/users/no-reply/events{/privacy}","received_events_url":"https://api.github.com/users/no-reply/received_events","type":"User","site_admin":false},"created_at":"2016-08-12T22:15:37Z","updated_at":"2016-08-12T22:15:37Z","body":"Do we have a way to silence `dependency-ci` on `wirble` and convince it that `rdf-isomorphic` is maintained"}}
{"actor":{"display_login":"no-reply"}}