Skip to content
  • epriestley's avatar
    Add "Fetch Rules" to observed Git repositories · e910c76e
    epriestley authored
    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.
    
    Reviewers: amckinley
    
    Reviewed By: amckinley
    
    Maniphest Tasks: T13277
    
    Differential Revision: https://secure.phabricator.com/D20422
    e910c76e