Re: [PATCH 03/15] run-job: implement fetch job
- From
Son Luong Ngoc <sluongng@gmail.com>
- Date
- Apr 13, 2020, 13:15 UTC
- Message-ID
- <CAL3xRKew_RHbPbp0qSa7WcDbaMmMWWmBi_nvPbmKaSpVDJM08g@mail.gmail.com>
Hi Derrick,
First of all, thanks a ton for upstreaming this. Despite multiple complaints about re-implementing cron in git, I see this as a huge improvement to git UX and it is very much welcome change.
Show 5 quoted lines
> 3. By adding a new refspec "+refs/heads/*:refs/hidden/<remote>/*" > we can ensure that we actually load the new values somewhere in > our refspace while not updating refs/heads or refs/remotes. By > storing these refs here, the commit-graph job will update the > commit-graph with the commits from these hidden refs.
Ideally I think we want to let user configure which refs they want to prefetch with the default behavior being prefecting all HEADS available from remote. Using Facebook's Mercurial extension [RemoteFileLog](https://www.mercurial-scm.org/repo/hg/file/tip/hgext/remotefilelog/__init__.py#l31) as a UX reference, users should only prefetch the refs that they actually care about.
Show 6 quoted lines
> 1. One downside of the refs/hidden pattern is that 'git log' will > decorate commits with twice as many refs if they appear at a > remote ref (<remote>/<ref> _and_ refs/hidden/<remote>/<ref>). Is > there an easy way to exclude a refspace from decorations? Should > we make refs/hidden/* a "special" refspace that is excluded from > decorations?
In git-log, there is [--decorate-refs-exclude](https://git-scm.com/docs/git-log#Documentation/git-log.txt---decorate-refs-excludeltpatterngt) which I think we can move into git-config as `log.decorate-refs-exclude`? If you let the `prefetch refs` be configurable as I suggested above, I think it make sense to have the git-log exclusions being configurable as well.
Cheers, Son Luong.