archive_to_file

in lib/gitlab_git/repository.rb [1109:1146]


      def archive_to_file(treeish = 'master', filename = 'archive.tar.gz', format = nil, compress_cmd = %w(gzip -n))
        git_archive_cmd = %W(git --git-dir=

        
        prefix = "#{archive_name(treeish)}/"
        git_archive_cmd << "--prefix=#{prefix}"

        
        git_archive_cmd << "--format=#{format}" if format

        git_archive_cmd += %W(-- 

        open(filename, 'w') do |file|
          
          pipe_rd, pipe_wr = IO.pipe

          
          
          compress_pid = spawn(*nice(compress_cmd), in: pipe_rd, out: file)
          
          
          pipe_rd.close

          
          
          git_archive_pid = spawn(*nice(git_archive_cmd), out: pipe_wr)
          
          pipe_wr.close

          
          
          Process.waitpid(git_archive_pid)
          raise "#{git_archive_cmd.join(' ')} failed" unless $?.success?
          Process.waitpid(compress_pid)
          raise "#{compress_cmd.join(' ')} failed" unless $?.success?
        end
      end