1. 27 1月, 2017 1 次提交
  2. 16 1月, 2017 1 次提交
  3. 20 12月, 2016 3 次提交
  4. 09 12月, 2016 1 次提交
  5. 06 12月, 2016 1 次提交
  6. 28 11月, 2016 2 次提交
  7. 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
  8. 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
  9. 16 11月, 2016 2 次提交
  10. 12 11月, 2016 3 次提交
  11. 11 11月, 2016 1 次提交
  12. 10 11月, 2016 3 次提交
  13. 09 11月, 2016 1 次提交
  14. 08 11月, 2016 1 次提交
  15. 07 11月, 2016 1 次提交
  16. 29 10月, 2016 1 次提交
    • A
      Fix lightweight tags not processed correctly by GitTagPushService · fa3bbd44
      Alejandro Rodríguez 提交于
      When we updated gitlab_git to 10.4.1, `tag.target` changed from pointing
      to the sha of the tag to the sha of the commit the tag points to. The
      problem is that only annotated tags have `object_sha`s, lightweight tags
      don't (it's nil), so (only) in their case we still need to use
      `tag.target`.
      fa3bbd44
  17. 28 10月, 2016 1 次提交
  18. 24 10月, 2016 2 次提交
  19. 20 10月, 2016 1 次提交
  20. 14 10月, 2016 2 次提交
  21. 11 10月, 2016 1 次提交
  22. 10 10月, 2016 2 次提交
  23. 06 10月, 2016 1 次提交
    • M
      multi-file commit · a1ee8cf5
      Marc Siegfriedt 提交于
      add docs and tests - add additional validation
      allow move without content
      updated response
      a1ee8cf5
  24. 04 10月, 2016 1 次提交
  25. 21 9月, 2016 1 次提交
  26. 20 9月, 2016 1 次提交
  27. 14 9月, 2016 1 次提交