1. 03 3月, 2017 1 次提交
  2. 24 2月, 2017 4 次提交
  3. 23 2月, 2017 6 次提交
  4. 14 2月, 2017 1 次提交
  5. 07 2月, 2017 2 次提交
  6. 03 2月, 2017 1 次提交
  7. 27 1月, 2017 2 次提交
  8. 16 1月, 2017 1 次提交
  9. 07 1月, 2017 1 次提交
  10. 05 1月, 2017 1 次提交
  11. 20 12月, 2016 4 次提交
  12. 14 12月, 2016 1 次提交
  13. 10 12月, 2016 1 次提交
  14. 08 12月, 2016 1 次提交
  15. 07 12月, 2016 2 次提交
  16. 06 12月, 2016 3 次提交
  17. 28 11月, 2016 2 次提交
  18. 21 11月, 2016 3 次提交
    • Y
      Refactor cache refreshing/expiring · ffb9b3ef
      Yorick Peterse 提交于
      This refactors repository caching so it's possible to selectively
      refresh certain caches, instead of just expiring and refreshing
      everything.
      
      To allow this the various methods that were cached (e.g. "tag_count" and
      "readme") use a similar pattern that makes expiring and refreshing
      their data much easier.
      
      In this new setup caches are refreshed as follows:
      
      1. After a commit (but before running ProjectCacheWorker) we expire some
         basic caches such as the commit count and repository size.
      
      2. ProjectCacheWorker will recalculate the commit count, repository
         size, then refresh a specific set of caches based on the list of
         files changed in a push payload.
      
      This requires a bunch of changes to the various methods that may be
      cached. For one, data should not be cached if a branch used or the
      entire repository does not exist. To prevent all these methods from
      handling this manually this is taken care of in
      Repository#cache_method_output. Some methods still manually check for
      the existence of a repository but this result is also cached.
      
      With selective flushing implemented ProjectCacheWorker no longer uses an
      exclusive lease for all of its work. Instead this worker only uses a
      lease to limit the number of times the repository size is updated as
      this is a fairly expensive operation.
      ffb9b3ef
    • Y
      Use File.exist? to check if a repository exists · 6f393877
      Yorick Peterse 提交于
      Initializing Rugged objects is way too expensive just to check if a
      repository exists. Even though we cache this data once in a while we
      have to refresh this. On GitLab.com we have seen Repository#exists?
      taking up to _1 minute_ to complete in the absolute worst case, though
      usually it sits around a second or so.
      
      Using File.exist? to instead check if $GIT_DIR/refs exists is a much
      faster way of checking if a repository was initialized properly.
      6f393877
    • Y
      Unify detecting of special repository files · df5548e1
      Yorick Peterse 提交于
      This moves the logic of detecting special repository files (e.g. a
      README or a Koding configuration file) to a single class:
      Gitlab::FileDetector. Moving this logic into a single place allows this
      to be re-used more easily.
      
      This commit also changes Repository#gitlab_ci_yaml so that its cached
      similar to other data (e.g. the Koding configuration file).
      df5548e1
  19. 18 11月, 2016 1 次提交
    • A
      Pass correct tag target to post-receive hook when creating tag via UI · ae51774b
      Adam Niedzielski 提交于
      We need to handle annotated tags that are created via GitLab UI.
      Annotated tags have their own SHA. We have to pass this SHA to
      post-receive hook to mirror what happens when someone creates
      an annotated tag in their local repository and pushes it via
      command line.
      In order to obtain tag SHA we first have to create it. This is
      a bit confusing because we create the tag before executing
      pre-hooks, but there is no way to create a tag outside the
      repository. If pre-hooks fail we have to clean up after ourselves.
      ae51774b
  20. 16 11月, 2016 2 次提交