Archive Project to .tar.gz
Already packed repo archives stored at app_root/tmp/repositories/project_name/project_name-commit-id.tag.gz
# File app/roles/repository.rb, line 157 def archive_repo(ref) ref = ref || self.root_ref commit = self.commit(ref) return nil unless commit # Build file path file_name = self.code + "-" + commit.id.to_s + ".tar.gz" storage_path = Rails.root.join("tmp", "repositories", self.code) file_path = File.join(storage_path, file_name) # Put files into a directory before archiving prefix = self.code + "/" # Create file if not exists unless File.exists?(file_path) FileUtils.mkdir_p storage_path file = self.repo.archive_to_file(ref, prefix, file_path) end file_path end
Returns an Array of branch names
# File app/roles/repository.rb, line 53 def branch_names repo.branches.collect(&:name).sort end
Returns an Array of Branches
# File app/roles/repository.rb, line 58 def branches repo.branches.sort_by(&:name) end
# File app/roles/repository.rb, line 15 def commit(commit_id = nil) Commit.find_or_first(repo, commit_id, root_ref) end
# File app/roles/repository.rb, line 31 def commits(ref, path = nil, limit = nil, offset = nil) Commit.commits(repo, ref, path, limit, offset) end
# File app/roles/repository.rb, line 39 def commits_between(from, to) Commit.commits_between(repo, from, to) end
# File app/roles/repository.rb, line 27 def commits_since(date) Commit.commits_since(repo, date) end
# File app/roles/repository.rb, line 23 def commits_with_refs(n = 20) Commit.commits_with_refs(repo, n) end
# File app/roles/repository.rb, line 93 def destroy_repository git_host.remove_repository(self) end
Discovers the default branch based on the repository’s available branches
If no branches are present, returns nil
If one branch is present, returns its name
If two or more branches are present, returns the one that has a name matching #root_ref (default_branch or ‘master’ if default_branch is nil)
# File app/roles/repository.rb, line 128 def discover_default_branch if branch_names.length == 0 nil elsif branch_names.length == 1 branch_names.first else branch_names.select { |v| v == root_ref }.first end end
# File app/roles/repository.rb, line 11 def empty_repo? !repo_exists? || !has_commits? end
# File app/roles/repository.rb, line 19 def fresh_commits(n = 10) Commit.fresh_commits(repo, n) end
# File app/roles/repository.rb, line 138 def has_commits? !!commit rescue Grit::NoSuchPathError false end
# File app/roles/repository.rb, line 47 def has_post_receive_file? hook_file = File.join(path_to_repo, 'hooks', 'post-receive') File.exists?(hook_file) end
# File app/roles/repository.rb, line 103 def heads @heads ||= repo.heads end
# File app/roles/repository.rb, line 183 def http_url_to_repo http_url = [Gitlab.config.url, "/", path, ".git"].join('') end
# File app/roles/repository.rb, line 35 def last_commit_for(ref, path = nil) commits(ref, path, 1).first end
# File app/roles/repository.rb, line 113 def open_branches if protected_branches.empty? self.repo.heads else pnames = protected_branches.map(&:name) self.repo.heads.reject { |h| pnames.include?(h.name) } end.sort_by(&:name) end
# File app/roles/repository.rb, line 85 def path_to_repo File.join(Gitlab.config.git_base_path, "#{path}.git") end
Check if current branch name is marked as protected in the system
# File app/roles/repository.rb, line 188 def protected_branch? branch_name protected_branches.map(&:name).include?(branch_name) end
Returns an Array of branch and tag names
# File app/roles/repository.rb, line 73 def ref_names [branch_names + tag_names].flatten end
# File app/roles/repository.rb, line 77 def repo @repo ||= Grit::Repo.new(path_to_repo) end
# File app/roles/repository.rb, line 97 def repo_exists? @repo_exists ||= (repo && !repo.branches.empty?) rescue @repo_exists = false end
# File app/roles/repository.rb, line 144 def root_ref default_branch || "master" end
# File app/roles/repository.rb, line 148 def root_ref?(branch) root_ref == branch end
# File app/roles/repository.rb, line 43 def satellite @satellite ||= Gitlab::Satellite.new(self) end
# File app/roles/repository.rb, line 179 def ssh_url_to_repo url_to_repo end
Returns an Array of tag names
# File app/roles/repository.rb, line 63 def tag_names repo.tags.collect(&:name).sort.reverse end
# File app/roles/repository.rb, line 107 def tree(fcommit, path = nil) fcommit = commit if fcommit == :head tree = fcommit.tree path ? (tree / path) : tree end
# File app/roles/repository.rb, line 89 def update_repository git_host.update_repository(self) end
# File app/roles/repository.rb, line 81 def url_to_repo git_host.url_to_repo(path) end
# File app/roles/repository.rb, line 4 def valid_repo? repo rescue errors.add(:path, "Invalid repository path") false end