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. > 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. > 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.