• James Edwards-Jones's avatar
    Extracted ProtectableDropdown to clean up Project#open_branches · b8c7bef5
    James Edwards-Jones authored
    Makes it clear this is only used in dropdowns, instead of cluttering up Project class. Since we only care about branch names, it is also possible to refactor out a lot of the set/reject logic.
    
    A benchmark on Array/Set subtraction favoured using Arrays. This was with 5000 ‘branches’ and 2000 ‘protections’ to ensure a similar comparison to the commit which introduced using Set for intersection.
    
    Comparison:
       array subtraction:      485.8 i/s
         set subtraction:      128.7 i/s - 3.78x slower
    b8c7bef5
project_spec.rb 61.2 KB