165 lines
5.1 KiB
Ruby
Executable file
165 lines
5.1 KiB
Ruby
Executable file
#!/usr/bin/env ruby
|
|
# frozen_string_literal: true
|
|
#
|
|
# # generate-seed-repo-rb
|
|
#
|
|
# This script generates the seed_repo.rb file used by lib/gitlab/git
|
|
# tests. The seed_repo.rb file needs to be updated anytime there is a
|
|
# Git push to https://gitlab.com/gitlab-org/gitlab-git-test.
|
|
#
|
|
# Usage:
|
|
#
|
|
# ./spec/support/generate-seed-repo-rb > spec/support/helpers/seed_repo.rb
|
|
#
|
|
#
|
|
|
|
require 'erb'
|
|
require 'tempfile'
|
|
|
|
SOURCE = File.expand_path('gitlab-git-test.git', __dir__)
|
|
SCRIPT_NAME = 'generate-seed-repo-rb'
|
|
REPO_NAME = 'gitlab-git-test.git'
|
|
|
|
def main
|
|
Dir.mktmpdir do |dir|
|
|
unless system(*%W[git clone --bare #{SOURCE} #{REPO_NAME}], chdir: dir)
|
|
abort "git clone failed"
|
|
end
|
|
|
|
repo = File.join(dir, REPO_NAME)
|
|
erb = ERB.new(DATA.read)
|
|
erb.run(binding)
|
|
end
|
|
end
|
|
|
|
def capture!(cmd, dir)
|
|
output = IO.popen(cmd, 'r', chdir: dir) { |io| io.read }
|
|
raise "command failed with #{$?}: #{cmd.join(' ')}" unless $?.success?
|
|
|
|
output.chomp
|
|
end
|
|
|
|
main
|
|
|
|
__END__
|
|
# This file is generated by <%= SCRIPT_NAME %>. Do not edit this file manually.
|
|
#
|
|
# Seed repo:
|
|
<%= capture!(%w{git log --format=#\ %H\ %s}, repo) %>
|
|
|
|
module SeedRepo
|
|
module BigCommit
|
|
ID = "913c66a37b4a45b9769037c55c2d238bd0942d2e".freeze
|
|
PARENT_ID = "cfe32cf61b73a0d5e9f13e774abde7ff789b1660".freeze
|
|
MESSAGE = "Files, encoding and much more".freeze
|
|
AUTHOR_FULL_NAME = "Dmitriy Zaporozhets".freeze
|
|
FILES_COUNT = 2
|
|
end
|
|
|
|
module Commit
|
|
ID = "570e7b2abdd848b95f2f578043fc23bd6f6fd24d".freeze
|
|
PARENT_ID = "6f6d7e7ed97bb5f0054f2b1df789b39ca89b6ff9".freeze
|
|
MESSAGE = "Change some files\n\nSigned-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>\n".freeze
|
|
AUTHOR_FULL_NAME = "Dmitriy Zaporozhets".freeze
|
|
FILES = ["files/ruby/popen.rb", "files/ruby/regex.rb"].freeze
|
|
FILES_COUNT = 2
|
|
C_FILE_PATH = "files/ruby".freeze
|
|
C_FILES = ["popen.rb", "regex.rb", "version_info.rb"].freeze
|
|
BLOB_FILE = %{%h3= @key.title\n%hr\n%pre= @key.key\n.actions\n = link_to 'Remove', @key, :confirm => 'Are you sure?', :method => :delete, :class => \"btn danger delete-key\"\n\n\n}.freeze
|
|
BLOB_FILE_PATH = "app/views/keys/show.html.haml".freeze
|
|
end
|
|
|
|
module EmptyCommit
|
|
ID = "b0e52af38d7ea43cf41d8a6f2471351ac036d6c9".freeze
|
|
PARENT_ID = "40f4a7a617393735a95a0bb67b08385bc1e7c66d".freeze
|
|
MESSAGE = "Empty commit".freeze
|
|
AUTHOR_FULL_NAME = "Rémy Coutable".freeze
|
|
FILES = [].freeze
|
|
FILES_COUNT = FILES.count
|
|
end
|
|
|
|
module EncodingCommit
|
|
ID = "40f4a7a617393735a95a0bb67b08385bc1e7c66d".freeze
|
|
PARENT_ID = "66028349a123e695b589e09a36634d976edcc5e8".freeze
|
|
MESSAGE = "Add ISO-8859-encoded file".freeze
|
|
AUTHOR_FULL_NAME = "Stan Hu".freeze
|
|
FILES = ["encoding/iso8859.txt"].freeze
|
|
FILES_COUNT = FILES.count
|
|
end
|
|
|
|
module FirstCommit
|
|
ID = "1a0b36b3cdad1d2ee32457c102a8c0b7056fa863".freeze
|
|
PARENT_ID = nil
|
|
MESSAGE = "Initial commit".freeze
|
|
AUTHOR_FULL_NAME = "Dmitriy Zaporozhets".freeze
|
|
FILES = ["LICENSE", ".gitignore", "README.md"].freeze
|
|
FILES_COUNT = 3
|
|
end
|
|
|
|
module LastCommit
|
|
ID = <%= capture!(%w[git show -s --format=%H HEAD], repo).inspect %>.freeze
|
|
PARENT_ID = <%= capture!(%w[git show -s --format=%P HEAD], repo).split.last.inspect %>.freeze
|
|
MESSAGE = <%= capture!(%w[git show -s --format=%s HEAD], repo).inspect %>.freeze
|
|
AUTHOR_FULL_NAME = <%= capture!(%w[git show -s --format=%an HEAD], repo).inspect %>.freeze
|
|
FILES = <%=
|
|
parents = capture!(%w[git show -s --format=%P HEAD], repo).split
|
|
merge_base = parents.size > 1 ? capture!(%w[git merge-base] + parents, repo) : parents.first
|
|
capture!( %W[git diff --name-only #{merge_base}..HEAD --], repo).split("\n").inspect
|
|
%>.freeze
|
|
FILES_COUNT = FILES.count
|
|
end
|
|
|
|
module Repo
|
|
HEAD = "master".freeze
|
|
BRANCHES = %w[
|
|
<%= capture!(%W[git for-each-ref --format=#{' ' * 3}%(refname:strip=2) refs/heads/], repo) %>
|
|
].freeze
|
|
TAGS = %w[
|
|
<%= capture!(%W[git for-each-ref --format=#{' ' * 3}%(refname:strip=2) refs/tags/], repo) %>
|
|
].freeze
|
|
end
|
|
|
|
module RubyBlob
|
|
ID = "7e3e39ebb9b2bf433b4ad17313770fbe4051649c".freeze
|
|
NAME = "popen.rb".freeze
|
|
CONTENT = <<-eos.freeze
|
|
require 'fileutils'
|
|
require 'open3'
|
|
|
|
module Popen
|
|
extend self
|
|
|
|
def popen(cmd, path=nil)
|
|
unless cmd.is_a?(Array)
|
|
raise RuntimeError, "System commands must be given as an array of strings"
|
|
end
|
|
|
|
path ||= Dir.pwd
|
|
|
|
vars = {
|
|
"PWD" => path
|
|
}
|
|
|
|
options = {
|
|
chdir: path
|
|
}
|
|
|
|
unless File.directory?(path)
|
|
FileUtils.mkdir_p(path)
|
|
end
|
|
|
|
@cmd_output = ""
|
|
@cmd_status = 0
|
|
|
|
Open3.popen3(vars, *cmd, options) do |stdin, stdout, stderr, wait_thr|
|
|
@cmd_output << stdout.read
|
|
@cmd_output << stderr.read
|
|
@cmd_status = wait_thr.value.exitstatus
|
|
end
|
|
|
|
return @cmd_output, @cmd_status
|
|
end
|
|
end
|
|
eos
|
|
end
|
|
end
|