#!/usr/bin/env ruby # # # 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/seed_repo.rb # # require 'erb' require 'tempfile' SOURCE = File.expand_path('../gitlab-git-test.git', __FILE__).freeze SCRIPT_NAME = 'generate-seed-repo-rb'.freeze REPO_NAME = 'gitlab-git-test.git'.freeze 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 \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