{"thread":{"id":"47999","subject":"Partial Clone: Commands that could be problematic","startedAt":"2018-03-07T13:57:17Z","lastAt":"2018-03-07T13:57:17Z","messageCount":1,"participants":["Derrick Stolee"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"341203","messageId":"04927620-c5ea-ee70-2104-4a5a7a994e33@gmail.com","threadId":"47999","inReplyTo":null,"subject":"Partial Clone: Commands that could be problematic","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2018-03-07T13:57:07Z","receivedAt":"2018-03-07T13:57:17Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"We discussed partial clone today during the contributor's summit. There \nwere some concerns about some commands that would cause over-hydration \nof blobs that need server requests to resolve.\n\nGVFS blocks \"fsck\", \"gc\", \"prune\", \"repack\", \"submodule\", and \"worktree\" \n[1]. I promised I would include this list. There are a few limitations \non the arguments of the other commands, as seen in that code. These \ncommands that are blocked are already handled in partial clone with the \n\"promisor\" pattern. The \"worktree\" limitation is only due to the \nfile-system virtualization layer of GVFS.\n\nWe discussed commands like \"git grep\" that sometimes look at the working \ndirectory and sometimes crawls trees. That is a command that should be \nconsidered for batching object downloads, limiting the command to \n\"hydrated\" blobs, or limiting to a sparse checkout.\n\nThanks,\n\n-Stolee\n\n[1] \nhttps://github.com/Microsoft/GVFS/blob/2db0c030eb257beebf8e17f1c2ce72ffb166f533/GVFS/GVFS.Hooks/Program.cs#L120-L137\n\n"}]}