Skip to content
Snippets Groups Projects
  1. Aug 01, 2018
    • Zeger-Jan van de Weg's avatar
      Add repository languages for projects · 79a5d768
      Zeger-Jan van de Weg authored
      Our friends at GitHub show the programming languages for a long time,
      and inspired by that this commit means to create about the same
      functionality.
      
      Language detection is done through Linguist, as before, where the
      difference is that we cache the result in the database. Also, Gitaly can
      incrementaly scan a repository. This is done through a shell out, which
      creates overhead of about 3s each run. For now this won't be improved.
      
      Scans are triggered by pushed to the default branch, usually `master`.
      However, one exception to this rule the charts page. If we're requesting
      this expensive data anyway, we just cache it in the database.
      
      Edge cases where there is no repository, or its empty are caught in the
      Repository model. This makes use of Redis caching, which is probably
      already loaded.
      
      The added model is called RepositoryLanguage, which will make it harder
      if/when GitLab supports multiple repositories per project. However, for
      now I think this shouldn't be a concern. Also, Language could be
      confused with the i18n languages and felt like the current name was
      suiteable too.
      
      Design of the Project#Show page is done with help from @dimitrieh. This
      change is not visible to the end user unless detections are done.
      Unverified
      79a5d768
  2. Jul 31, 2018
  3. Jul 18, 2018
  4. Jul 12, 2018
  5. Jul 09, 2018
  6. Jul 06, 2018
  7. Jun 29, 2018
  8. Jun 25, 2018
  9. Jun 21, 2018
  10. Jun 20, 2018
  11. Jun 06, 2018
  12. Jun 05, 2018
  13. May 30, 2018
  14. May 29, 2018
  15. May 22, 2018
  16. May 09, 2018
  17. May 07, 2018
  18. Apr 25, 2018
  19. Apr 14, 2018
  20. Mar 28, 2018
  21. Mar 07, 2018
    • Stan Hu's avatar
      Memoize Repository#empty? instead of double caching the value · 611929eb
      Stan Hu authored
      We saw that in a customer instance, `empty?` was cached to be `true` even
      though `has_visible_content?` and `exists?` were `true`. This double caching
      can run into edge cases because there's no guarantee that the inner values
      will properly expire the outer one, especially if there is Redis replication lag.
      Consider this scenario:
      
      1. `exists?` and `has_visible_content?` are false
      2. `empty?` is expired
      3. A subsequent call to `empty?` returns `true` because `exists?` is false even though `empty` is true
      4. `exists?` and `has_visible_content?` are then expired
      5. `exists?` and `has_visible_content?` are set to true
      6. `empty?` is still stuck in the wrong value as `true`
      
      Closes #43882
      611929eb
    • Alejandro Rodríguez's avatar
  22. Mar 06, 2018
  23. Mar 05, 2018
  24. Mar 01, 2018
  25. Feb 23, 2018
  26. Feb 17, 2018
  27. Feb 14, 2018
  28. Feb 07, 2018
  29. Feb 06, 2018
  30. Feb 02, 2018
Loading