{"thread":{"id":"53215","subject":"Re: [PATCH 03/15] run-job: implement fetch job","startedAt":"2020-04-13T13:16:09Z","lastAt":"2020-04-13T14:15:02Z","messageCount":2,"participants":["Son Luong Ngoc","Derrick Stolee"],"isPatch":true,"patchVersion":1,"patchTotal":15},"messages":[{"id":"395331","messageId":"CAL3xRKew_RHbPbp0qSa7WcDbaMmMWWmBi_nvPbmKaSpVDJM08g@mail.gmail.com","threadId":"53215","inReplyTo":null,"subject":"Re: [PATCH 03/15] run-job: implement fetch job","fromName":"Son Luong Ngoc","fromEmail":"sluongng@gmail.com","sentAt":"2020-04-13T13:15:54Z","receivedAt":"2020-04-13T13:16:09Z","isPatch":true,"sender":{"key":"sluongng@gmail.com","avatar":"https://avatars.githubusercontent.com/u/26684313?v=4"},"body":"Hi Derrick,\n\nFirst of all, thanks a ton for upstreaming this.\nDespite multiple complaints about re-implementing cron in git,\nI see this as a huge improvement to git UX and it is very much welcome change.\n\n> 3. By adding a new refspec \"+refs/heads/*:refs/hidden/<remote>/*\"\n>    we can ensure that we actually load the new values somewhere in\n>    our refspace while not updating refs/heads or refs/remotes. By\n>    storing these refs here, the commit-graph job will update the\n>    commit-graph with the commits from these hidden refs.\nIdeally I think we want to let user configure which refs they want to\nprefetch with the default behavior being prefecting all HEADS\navailable from remote.\nUsing Facebook's Mercurial extension\n[RemoteFileLog](https://www.mercurial-scm.org/repo/hg/file/tip/hgext/remotefilelog/__init__.py#l31)\nas a UX reference,\nusers should only prefetch the refs that they actually care about.\n\n> 1. One downside of the refs/hidden pattern is that 'git log' will\n>    decorate commits with twice as many refs if they appear at a\n>    remote ref (<remote>/<ref> _and_ refs/hidden/<remote>/<ref>). Is\n>    there an easy way to exclude a refspace from decorations? Should\n>    we make refs/hidden/* a \"special\" refspace that is excluded from\n>    decorations?\nIn git-log, there is\n[--decorate-refs-exclude](https://git-scm.com/docs/git-log#Documentation/git-log.txt---decorate-refs-excludeltpatterngt)\nwhich I think we can move into git-config as\n`log.decorate-refs-exclude`?\nIf you let the `prefetch refs` be configurable as I suggested above, I\nthink it make sense to have the git-log exclusions being configurable\nas well.\n\nCheers,\nSon Luong.\n"},{"id":"395336","messageId":"fb80f3e5-ea22-b9fe-5818-c915e5a15014@gmail.com","threadId":"53215","inReplyTo":"CAL3xRKew_RHbPbp0qSa7WcDbaMmMWWmBi_nvPbmKaSpVDJM08g@mail.gmail.com","subject":"Re: [PATCH 03/15] run-job: implement fetch job","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2020-04-13T14:14:56Z","receivedAt":"2020-04-13T14:15:02Z","isPatch":true,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 4/13/2020 9:15 AM, Son Luong Ngoc wrote:\n> Hi Derrick,\n> \n> First of all, thanks a ton for upstreaming this.\n> Despite multiple complaints about re-implementing cron in git,\n> I see this as a huge improvement to git UX and it is very much welcome change.\n> \n>> 3. By adding a new refspec \"+refs/heads/*:refs/hidden/<remote>/*\"\n>>    we can ensure that we actually load the new values somewhere in\n>>    our refspace while not updating refs/heads or refs/remotes. By\n>>    storing these refs here, the commit-graph job will update the\n>>    commit-graph with the commits from these hidden refs.\n> Ideally I think we want to let user configure which refs they want to\n> prefetch with the default behavior being prefecting all HEADS\n> available from remote.\n> Using Facebook's Mercurial extension\n> [RemoteFileLog](https://www.mercurial-scm.org/repo/hg/file/tip/hgext/remotefilelog/__init__.py#l31)\n> as a UX reference,\n> users should only prefetch the refs that they actually care about.\n\nI will be sure to review this prior art before\nsubmitting an update to this series.\n\n>> 1. One downside of the refs/hidden pattern is that 'git log' will\n>>    decorate commits with twice as many refs if they appear at a\n>>    remote ref (<remote>/<ref> _and_ refs/hidden/<remote>/<ref>). Is\n>>    there an easy way to exclude a refspace from decorations? Should\n>>    we make refs/hidden/* a \"special\" refspace that is excluded from\n>>    decorations?\n> In git-log, there is\n> [--decorate-refs-exclude](https://git-scm.com/docs/git-log#Documentation/git-log.txt---decorate-refs-excludeltpatterngt)\n> which I think we can move into git-config as\n> `log.decorate-refs-exclude`?\n> If you let the `prefetch refs` be configurable as I suggested above, I\n> think it make sense to have the git-log exclusions being configurable\n> as well.\n\nI was literally just working on exactly this when\nyour message arrived. I was going to name the config\noption \"log.decorateExclude\".\n\nThanks,\n-Stolee\n"}]}