Page MenuHomePhabricator

Add "Fetch Rules" to observed Git repositories
ClosedPublic

Authored by epriestley on Apr 14 2019, 8:14 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Apr 5, 7:17 PM
Unknown Object (File)
Sun, Mar 31, 5:24 PM
Unknown Object (File)
Sat, Mar 30, 7:57 AM
Unknown Object (File)
Wed, Mar 27, 11:57 PM
Unknown Object (File)
Wed, Mar 20, 2:37 PM
Unknown Object (File)
Mar 12 2024, 6:46 PM
Unknown Object (File)
Mar 1 2024, 5:06 AM
Unknown Object (File)
Feb 21 2024, 1:18 PM
Subscribers
None

Details

Summary

Depends on D20421. Ref T13277. I'd generally like to move away from "Track Only".

Some of the use cases for "Track Only" (or adjacent to "Track Only") are better resolved with "Fetch Rules" -- basically, rules to fetch only some subset of refs from the observed remote.

Add configurable "Fetch Rules" for Git repositories. For example, if you only want to fetch master, you can now speify:

refs/heads/master

If you only want to fetch branches and tags, you can use:

refs/heads/*
refs/tags/*

In theory, this is slightly less powerful in the general case than "Track Only", but gives us better behavior in some cases (e.g., when the remote has 50K random temporary branches). In practice, I think this and a better "Autoclose Only" will let us move away from "Track Only", get default behavior which is better aligned with what users actually expect, and dodge all the "track tags/refs" questions.

Test Plan

Configured repositories with "Fetch Refs" rules, used bin/repository pull --verbose --trace ... to run pulls, saw expected pull/fetch behavior.

Diff Detail

Repository
rP Phabricator
Branch
autoclose6
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 22594
Build 30953: Run Core Tests
Build 30952: arc lint + arc unit