{"action":"created","issue":{"url":"https://api.github.com/repos/github/git-lfs/issues/581","labels_url":"https://api.github.com/repos/github/git-lfs/issues/581/labels{/name}","comments_url":"https://api.github.com/repos/github/git-lfs/issues/581/comments","events_url":"https://api.github.com/repos/github/git-lfs/issues/581/events","html_url":"https://github.com/github/git-lfs/pull/581","id":100585015,"number":581,"title":"Check server for objects before failing push because local is missing","user":{"login":"sinbad","id":142735,"avatar_url":"https://avatars.githubusercontent.com/u/142735?v=3","gravatar_id":"","url":"https://api.github.com/users/sinbad","html_url":"https://github.com/sinbad","followers_url":"https://api.github.com/users/sinbad/followers","following_url":"https://api.github.com/users/sinbad/following{/other_user}","gists_url":"https://api.github.com/users/sinbad/gists{/gist_id}","starred_url":"https://api.github.com/users/sinbad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sinbad/subscriptions","organizations_url":"https://api.github.com/users/sinbad/orgs","repos_url":"https://api.github.com/users/sinbad/repos","events_url":"https://api.github.com/users/sinbad/events{/privacy}","received_events_url":"https://api.github.com/users/sinbad/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-08-12T16:42:25Z","updated_at":"2015-08-13T08:46:35Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/github/git-lfs/pulls/581","html_url":"https://github.com/github/git-lfs/pull/581","diff_url":"https://github.com/github/git-lfs/pull/581.diff","patch_url":"https://github.com/github/git-lfs/pull/581.patch"},"body":"The local client doesn't have all the LFS objects so it's perfectly valid to push commits which reference objects that don't exist, so long as the server already has them. This could occur when deleting files and pushing new branches (https://github.com/github/git-lfs/issues/564) but is increasingly likely as fetch & prune functionality is introduced.\r\n\r\nSo now we perform a pre-check and any locally missing files are checked on the server. To gain the benefit of the existing parallelism and batching API this required adding a new type of transferable which only checks for download, and doesn't actually do it - instead the fact that the transfer *would* go ahead is used as an indicator that this oid can be skipped when it comes to push & therefore not cause the process to fail.\r\n\r\nAfter merging this PR it's safe to merge https://github.com/github/git-lfs/pull/573 (which deliberately doesn't download all LFS objects)."},"comment":{"url":"https://api.github.com/repos/github/git-lfs/issues/comments/130578205","html_url":"https://github.com/github/git-lfs/pull/581#issuecomment-130578205","issue_url":"https://api.github.com/repos/github/git-lfs/issues/581","id":130578205,"user":{"login":"sinbad","id":142735,"avatar_url":"https://avatars.githubusercontent.com/u/142735?v=3","gravatar_id":"","url":"https://api.github.com/users/sinbad","html_url":"https://github.com/sinbad","followers_url":"https://api.github.com/users/sinbad/followers","following_url":"https://api.github.com/users/sinbad/following{/other_user}","gists_url":"https://api.github.com/users/sinbad/gists{/gist_id}","starred_url":"https://api.github.com/users/sinbad/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sinbad/subscriptions","organizations_url":"https://api.github.com/users/sinbad/orgs","repos_url":"https://api.github.com/users/sinbad/repos","events_url":"https://api.github.com/users/sinbad/events{/privacy}","received_events_url":"https://api.github.com/users/sinbad/received_events","type":"User","site_admin":false},"created_at":"2015-08-13T08:46:35Z","updated_at":"2015-08-13T08:46:35Z","body":"Hrm, random failure in checkout test on Travis when it works fine here..."}}