{"action":"created","comment":{"url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/comments/32854294","id":32854294,"diff_hunk":"@@ -969,4 +970,96 @@ - (void) test16_Restart {\n     AssertEq(puller.status, kCBLReplicationStopped);\n }\n \n+- (void)test17_RemovedRevision {\n+    NSURL* remoteDbURL = [self remoteTestDBURL: kRemovedRevDBName];\n+    if (!remoteDbURL)\n+        return;\n+    [self eraseRemoteDB: remoteDbURL];\n+\n+    NSError* error;\n+\n+    // Create a new document with grant = true:","path":"Unit-Tests/Replication_Tests.m","position":20,"original_position":20,"commit_id":"f7fd21e8bab7fe37c6fdabee1502e44f02757076","original_commit_id":"f7fd21e8bab7fe37c6fdabee1502e44f02757076","user":{"login":"snej","id":43241,"avatar_url":"https://avatars.githubusercontent.com/u/43241?v=3","gravatar_id":"","url":"https://api.github.com/users/snej","html_url":"https://github.com/snej","followers_url":"https://api.github.com/users/snej/followers","following_url":"https://api.github.com/users/snej/following{/other_user}","gists_url":"https://api.github.com/users/snej/gists{/gist_id}","starred_url":"https://api.github.com/users/snej/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snej/subscriptions","organizations_url":"https://api.github.com/users/snej/orgs","repos_url":"https://api.github.com/users/snej/repos","events_url":"https://api.github.com/users/snej/events{/privacy}","received_events_url":"https://api.github.com/users/snej/received_events","type":"User","site_admin":false},"body":"This seems too complex for a unit test. It would be fine to just manually create a revision with a `\"_removed\":true` property and then verify that it doesn't get pushed.","created_at":"2015-06-19T18:10:38Z","updated_at":"2015-06-19T18:10:38Z","html_url":"https://github.com/couchbase/couchbase-lite-ios/pull/776#discussion_r32854294","pull_request_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/776","_links":{"self":{"href":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/comments/32854294"},"html":{"href":"https://github.com/couchbase/couchbase-lite-ios/pull/776#discussion_r32854294"},"pull_request":{"href":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/776"}}},"pull_request":{"url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/776","id":37975403,"html_url":"https://github.com/couchbase/couchbase-lite-ios/pull/776","diff_url":"https://github.com/couchbase/couchbase-lite-ios/pull/776.diff","patch_url":"https://github.com/couchbase/couchbase-lite-ios/pull/776.patch","issue_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/issues/776","number":776,"state":"open","locked":false,"title":"Filter out _removed revision from push replication","user":{"login":"pasin","id":801454,"avatar_url":"https://avatars.githubusercontent.com/u/801454?v=3","gravatar_id":"","url":"https://api.github.com/users/pasin","html_url":"https://github.com/pasin","followers_url":"https://api.github.com/users/pasin/followers","following_url":"https://api.github.com/users/pasin/following{/other_user}","gists_url":"https://api.github.com/users/pasin/gists{/gist_id}","starred_url":"https://api.github.com/users/pasin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pasin/subscriptions","organizations_url":"https://api.github.com/users/pasin/orgs","repos_url":"https://api.github.com/users/pasin/repos","events_url":"https://api.github.com/users/pasin/events{/privacy}","received_events_url":"https://api.github.com/users/pasin/received_events","type":"User","site_admin":false},"body":"- Filter out _removed revision in CBL_Pusher's processInbox when preparing revisions to send to the remote server.\r\n\r\n- No changes in CBL_Pusher.unpushedRevisions properties. Therefore unpushedRevisions could contained _removed revisions. The same for getting _changes feed from the CBLRouter.\r\n\r\n- Added a unit test\r\n\r\n- Added cbl_replicator_removed_rev remote database config to Unit-Tests/Server/cbl_unit_tests.json\r\n\r\n#671","created_at":"2015-06-18T06:35:24Z","updated_at":"2015-06-19T18:10:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"079de5a3f0bd5bd92153a29cff9f8652e988b337","assignee":{"login":"snej","id":43241,"avatar_url":"https://avatars.githubusercontent.com/u/43241?v=3","gravatar_id":"","url":"https://api.github.com/users/snej","html_url":"https://github.com/snej","followers_url":"https://api.github.com/users/snej/followers","following_url":"https://api.github.com/users/snej/following{/other_user}","gists_url":"https://api.github.com/users/snej/gists{/gist_id}","starred_url":"https://api.github.com/users/snej/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snej/subscriptions","organizations_url":"https://api.github.com/users/snej/orgs","repos_url":"https://api.github.com/users/snej/repos","events_url":"https://api.github.com/users/snej/events{/privacy}","received_events_url":"https://api.github.com/users/snej/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/776/commits","review_comments_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/776/comments","review_comment_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/comments{/number}","comments_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/issues/776/comments","statuses_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/statuses/f7fd21e8bab7fe37c6fdabee1502e44f02757076","head":{"label":"couchbase:feature/issue_671_removed_rev","ref":"feature/issue_671_removed_rev","sha":"f7fd21e8bab7fe37c6fdabee1502e44f02757076","user":{"login":"couchbase","id":605755,"avatar_url":"https://avatars.githubusercontent.com/u/605755?v=3","gravatar_id":"","url":"https://api.github.com/users/couchbase","html_url":"https://github.com/couchbase","followers_url":"https://api.github.com/users/couchbase/followers","following_url":"https://api.github.com/users/couchbase/following{/other_user}","gists_url":"https://api.github.com/users/couchbase/gists{/gist_id}","starred_url":"https://api.github.com/users/couchbase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/couchbase/subscriptions","organizations_url":"https://api.github.com/users/couchbase/orgs","repos_url":"https://api.github.com/users/couchbase/repos","events_url":"https://api.github.com/users/couchbase/events{/privacy}","received_events_url":"https://api.github.com/users/couchbase/received_events","type":"Organization","site_admin":false},"repo":{"id":7948548,"name":"couchbase-lite-ios","full_name":"couchbase/couchbase-lite-ios","owner":{"login":"couchbase","id":605755,"avatar_url":"https://avatars.githubusercontent.com/u/605755?v=3","gravatar_id":"","url":"https://api.github.com/users/couchbase","html_url":"https://github.com/couchbase","followers_url":"https://api.github.com/users/couchbase/followers","following_url":"https://api.github.com/users/couchbase/following{/other_user}","gists_url":"https://api.github.com/users/couchbase/gists{/gist_id}","starred_url":"https://api.github.com/users/couchbase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/couchbase/subscriptions","organizations_url":"https://api.github.com/users/couchbase/orgs","repos_url":"https://api.github.com/users/couchbase/repos","events_url":"https://api.github.com/users/couchbase/events{/privacy}","received_events_url":"https://api.github.com/users/couchbase/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/couchbase/couchbase-lite-ios","description":"Lightweight, embedded, syncable NoSQL database engine for iOS (and Mac!) apps.","fork":false,"url":"https://api.github.com/repos/couchbase/couchbase-lite-ios","forks_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/forks","keys_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/keys{/key_id}","collaborators_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/teams","hooks_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/hooks","issue_events_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/issues/events{/number}","events_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/events","assignees_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/assignees{/user}","branches_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/branches{/branch}","tags_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/tags","blobs_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/git/refs{/sha}","trees_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/git/trees{/sha}","statuses_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/statuses/{sha}","languages_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/languages","stargazers_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/stargazers","contributors_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/contributors","subscribers_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/subscribers","subscription_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/subscription","commits_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/commits{/sha}","git_commits_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/git/commits{/sha}","comments_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/comments{/number}","issue_comment_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/issues/comments{/number}","contents_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/contents/{+path}","compare_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/compare/{base}...{head}","merges_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/merges","archive_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/downloads","issues_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/issues{/number}","pulls_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls{/number}","milestones_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/milestones{/number}","notifications_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/labels{/name}","releases_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/releases{/id}","created_at":"2013-02-01T00:09:26Z","updated_at":"2015-06-19T05:36:06Z","pushed_at":"2015-06-19T17:50:02Z","git_url":"git://github.com/couchbase/couchbase-lite-ios.git","ssh_url":"git@github.com:couchbase/couchbase-lite-ios.git","clone_url":"https://github.com/couchbase/couchbase-lite-ios.git","svn_url":"https://github.com/couchbase/couchbase-lite-ios","homepage":"","size":60900,"stargazers_count":736,"watchers_count":736,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":163,"mirror_url":null,"open_issues_count":58,"forks":163,"open_issues":58,"watchers":736,"default_branch":"master"}},"base":{"label":"couchbase:master","ref":"master","sha":"1db57578cc2a42bb3d5dd33aba12ccd9272e0f53","user":{"login":"couchbase","id":605755,"avatar_url":"https://avatars.githubusercontent.com/u/605755?v=3","gravatar_id":"","url":"https://api.github.com/users/couchbase","html_url":"https://github.com/couchbase","followers_url":"https://api.github.com/users/couchbase/followers","following_url":"https://api.github.com/users/couchbase/following{/other_user}","gists_url":"https://api.github.com/users/couchbase/gists{/gist_id}","starred_url":"https://api.github.com/users/couchbase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/couchbase/subscriptions","organizations_url":"https://api.github.com/users/couchbase/orgs","repos_url":"https://api.github.com/users/couchbase/repos","events_url":"https://api.github.com/users/couchbase/events{/privacy}","received_events_url":"https://api.github.com/users/couchbase/received_events","type":"Organization","site_admin":false},"repo":{"id":7948548,"name":"couchbase-lite-ios","full_name":"couchbase/couchbase-lite-ios","owner":{"login":"couchbase","id":605755,"avatar_url":"https://avatars.githubusercontent.com/u/605755?v=3","gravatar_id":"","url":"https://api.github.com/users/couchbase","html_url":"https://github.com/couchbase","followers_url":"https://api.github.com/users/couchbase/followers","following_url":"https://api.github.com/users/couchbase/following{/other_user}","gists_url":"https://api.github.com/users/couchbase/gists{/gist_id}","starred_url":"https://api.github.com/users/couchbase/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/couchbase/subscriptions","organizations_url":"https://api.github.com/users/couchbase/orgs","repos_url":"https://api.github.com/users/couchbase/repos","events_url":"https://api.github.com/users/couchbase/events{/privacy}","received_events_url":"https://api.github.com/users/couchbase/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/couchbase/couchbase-lite-ios","description":"Lightweight, embedded, syncable NoSQL database engine for iOS (and Mac!) apps.","fork":false,"url":"https://api.github.com/repos/couchbase/couchbase-lite-ios","forks_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/forks","keys_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/keys{/key_id}","collaborators_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/teams","hooks_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/hooks","issue_events_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/issues/events{/number}","events_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/events","assignees_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/assignees{/user}","branches_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/branches{/branch}","tags_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/tags","blobs_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/git/refs{/sha}","trees_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/git/trees{/sha}","statuses_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/statuses/{sha}","languages_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/languages","stargazers_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/stargazers","contributors_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/contributors","subscribers_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/subscribers","subscription_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/subscription","commits_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/commits{/sha}","git_commits_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/git/commits{/sha}","comments_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/comments{/number}","issue_comment_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/issues/comments{/number}","contents_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/contents/{+path}","compare_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/compare/{base}...{head}","merges_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/merges","archive_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/downloads","issues_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/issues{/number}","pulls_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls{/number}","milestones_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/milestones{/number}","notifications_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/labels{/name}","releases_url":"https://api.github.com/repos/couchbase/couchbase-lite-ios/releases{/id}","created_at":"2013-02-01T00:09:26Z","updated_at":"2015-06-19T05:36:06Z","pushed_at":"2015-06-19T17:50:02Z","git_url":"git://github.com/couchbase/couchbase-lite-ios.git","ssh_url":"git@github.com:couchbase/couchbase-lite-ios.git","clone_url":"https://github.com/couchbase/couchbase-lite-ios.git","svn_url":"https://github.com/couchbase/couchbase-lite-ios","homepage":"","size":60900,"stargazers_count":736,"watchers_count":736,"language":"Objective-C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":163,"mirror_url":null,"open_issues_count":58,"forks":163,"open_issues":58,"watchers":736,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/776"},"html":{"href":"https://github.com/couchbase/couchbase-lite-ios/pull/776"},"issue":{"href":"https://api.github.com/repos/couchbase/couchbase-lite-ios/issues/776"},"comments":{"href":"https://api.github.com/repos/couchbase/couchbase-lite-ios/issues/776/comments"},"review_comments":{"href":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/776/comments"},"review_comment":{"href":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/couchbase/couchbase-lite-ios/pulls/776/commits"},"statuses":{"href":"https://api.github.com/repos/couchbase/couchbase-lite-ios/statuses/f7fd21e8bab7fe37c6fdabee1502e44f02757076"}}}}