gitlab_git 7.1.2 → 7.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/gitlab_git/commit.rb +8 -11
- data/lib/gitlab_git/repository.rb +58 -29
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d14bd556fed0b0ad3ace6df4ac9c61a54972b878
         | 
| 4 | 
            +
              data.tar.gz: aa8526169e2a983fea5f65f782911b5f030d0f17
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 472f06e80a1bfb62907a1e620a95cd2fa6e99829ccd6622f7d68013bbb740ce6d161abc9f200808f947650ce4714415543c1b4771af020457c2f458ace95c0ae
         | 
| 7 | 
            +
              data.tar.gz: 2d1739752f4fba1228b11ea5e8efb23bd5bbab8b9d7e113a21f4a6b5962a0d38eef815ebbb1567ddf49153d690e5a01a4cd73b9d3759ce3b7c7c722465b9b249
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            7.1. | 
| 1 | 
            +
            7.1.3
         | 
    
        data/lib/gitlab_git/commit.rb
    CHANGED
    
    | @@ -172,16 +172,7 @@ module Gitlab | |
| 172 172 | 
             
                  #
         | 
| 173 173 | 
             
                  # Cuts out the header and stats from #to_patch and returns only the diff.
         | 
| 174 174 | 
             
                  def to_diff(options = {})
         | 
| 175 | 
            -
                     | 
| 176 | 
            -
             | 
| 177 | 
            -
                    # discard lines before the diff
         | 
| 178 | 
            -
                    lines = patch.split("\n")
         | 
| 179 | 
            -
                    while !lines.first.start_with?("diff --git") do
         | 
| 180 | 
            -
                      lines.shift
         | 
| 181 | 
            -
                    end
         | 
| 182 | 
            -
                    lines.pop if lines.last =~ /^[\d.]+$/ # Git version
         | 
| 183 | 
            -
                    lines.pop if lines.last == "-- "      # end of diff
         | 
| 184 | 
            -
                    lines.join("\n")
         | 
| 175 | 
            +
                    diff_from_parent(options).patch
         | 
| 185 176 | 
             
                  end
         | 
| 186 177 |  | 
| 187 178 | 
             
                  # Returns a diff object for the changes from this commit's first parent.
         | 
| @@ -229,7 +220,13 @@ module Gitlab | |
| 229 220 | 
             
                  end
         | 
| 230 221 |  | 
| 231 222 | 
             
                  def to_patch(options = {})
         | 
| 232 | 
            -
                     | 
| 223 | 
            +
                    begin
         | 
| 224 | 
            +
                      raw_commit.to_mbox(options)
         | 
| 225 | 
            +
                    rescue Rugged::InvalidError => ex
         | 
| 226 | 
            +
                      if ex.message =~ /Commit \w+ is a merge commit/
         | 
| 227 | 
            +
                        'Patch format is not currently supported for merge commits.'
         | 
| 228 | 
            +
                      end
         | 
| 229 | 
            +
                    end
         | 
| 233 230 | 
             
                  end
         | 
| 234 231 |  | 
| 235 232 | 
             
                  # Get a collection of Rugged::Reference objects for this commit.
         | 
| @@ -135,57 +135,82 @@ module Gitlab | |
| 135 135 | 
             
                  #
         | 
| 136 136 | 
             
                  def archive_repo(ref, storage_path, format = "tar.gz")
         | 
| 137 137 | 
             
                    ref ||= root_ref
         | 
| 138 | 
            -
                    commit = Gitlab::Git::Commit.find(self, ref)
         | 
| 139 | 
            -
                    return nil unless commit
         | 
| 140 138 |  | 
| 141 | 
            -
                     | 
| 142 | 
            -
                     | 
| 143 | 
            -
             | 
| 139 | 
            +
                    file_path = archive_file_path(ref, storage_path, format)
         | 
| 140 | 
            +
                    return nil unless file_path
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                    return file_path if File.exist?(file_path)
         | 
| 144 143 |  | 
| 145 144 | 
             
                    case format
         | 
| 146 145 | 
             
                    when "tar.bz2", "tbz", "tbz2", "tb2", "bz2"
         | 
| 147 | 
            -
                      extension = ".tar.bz2"
         | 
| 148 146 | 
             
                      pipe_cmd = %W(bzip2)
         | 
| 149 147 | 
             
                    when "tar"
         | 
| 150 | 
            -
                      extension = ".tar"
         | 
| 151 148 | 
             
                      pipe_cmd = %W(cat)
         | 
| 152 149 | 
             
                    when "zip"
         | 
| 153 | 
            -
                      extension = ".zip"
         | 
| 154 150 | 
             
                      git_archive_format = "zip"
         | 
| 155 151 | 
             
                      pipe_cmd = %W(cat)
         | 
| 156 152 | 
             
                    else
         | 
| 157 153 | 
             
                      # everything else should fall back to tar.gz
         | 
| 158 | 
            -
                      extension = ".tar.gz"
         | 
| 159 154 | 
             
                      git_archive_format = nil
         | 
| 160 155 | 
             
                      pipe_cmd = %W(gzip -n)
         | 
| 161 156 | 
             
                    end
         | 
| 162 157 |  | 
| 163 | 
            -
                     | 
| 164 | 
            -
                    file_name = self.name.gsub("\.git", "") + "-" + commit.id.to_s + extension
         | 
| 165 | 
            -
                    file_path = File.join(storage_path, self.name, file_name)
         | 
| 166 | 
            -
             | 
| 167 | 
            -
                    # Put files into a directory before archiving
         | 
| 168 | 
            -
                    prefix = File.basename(self.name) + "/"
         | 
| 158 | 
            +
                    FileUtils.mkdir_p File.dirname(file_path)
         | 
| 169 159 |  | 
| 170 | 
            -
                     | 
| 171 | 
            -
                     | 
| 172 | 
            -
             | 
| 160 | 
            +
                    pid_file_path = archive_pid_file_path(ref, storage_path, format)
         | 
| 161 | 
            +
                    return file_path if File.exist?(pid_file_path)
         | 
| 162 | 
            +
                    
         | 
| 163 | 
            +
                    File.open(pid_file_path, "w") do |file|
         | 
| 164 | 
            +
                      file.puts Process.pid
         | 
| 165 | 
            +
                    end
         | 
| 173 166 |  | 
| 174 | 
            -
             | 
| 175 | 
            -
             | 
| 176 | 
            -
             | 
| 177 | 
            -
             | 
| 178 | 
            -
                      # directory holding the archive files periodically.
         | 
| 179 | 
            -
                      temp_file_path = file_path + ".#{Process.pid}-#{Time.now.to_i}"
         | 
| 180 | 
            -
                      archive_to_file(ref, prefix, temp_file_path, git_archive_format, pipe_cmd)
         | 
| 167 | 
            +
                    # Create the archive in temp file, to avoid leaving a corrupt archive
         | 
| 168 | 
            +
                    # to be downloaded by the next user if we get interrupted while
         | 
| 169 | 
            +
                    # creating the archive.
         | 
| 170 | 
            +
                    temp_file_path = "#{file_path}.#{Process.pid}-#{Time.now.to_i}"
         | 
| 181 171 |  | 
| 182 | 
            -
             | 
| 183 | 
            -
                       | 
| 172 | 
            +
                    begin
         | 
| 173 | 
            +
                      archive_to_file(ref, temp_file_path, git_archive_format, pipe_cmd)
         | 
| 174 | 
            +
                    rescue
         | 
| 175 | 
            +
                      FileUtils.rm(temp_file_path)
         | 
| 176 | 
            +
                      raise
         | 
| 177 | 
            +
                    ensure
         | 
| 178 | 
            +
                      FileUtils.rm(pid_file_path)
         | 
| 184 179 | 
             
                    end
         | 
| 185 180 |  | 
| 181 | 
            +
                    # move temp file to persisted location
         | 
| 182 | 
            +
                    FileUtils.move(temp_file_path, file_path)
         | 
| 183 | 
            +
             | 
| 186 184 | 
             
                    file_path
         | 
| 187 185 | 
             
                  end
         | 
| 188 186 |  | 
| 187 | 
            +
                  def archive_file_path(ref, storage_path, format = "tar.gz")
         | 
| 188 | 
            +
                    ref ||= root_ref
         | 
| 189 | 
            +
                    commit = Gitlab::Git::Commit.find(self, ref)
         | 
| 190 | 
            +
                    return nil unless commit
         | 
| 191 | 
            +
             | 
| 192 | 
            +
                    extension = 
         | 
| 193 | 
            +
                      case format
         | 
| 194 | 
            +
                      when "tar.bz2", "tbz", "tbz2", "tb2", "bz2"
         | 
| 195 | 
            +
                        ".tar.bz2"
         | 
| 196 | 
            +
                      when "tar"
         | 
| 197 | 
            +
                        ".tar"
         | 
| 198 | 
            +
                      when "zip"
         | 
| 199 | 
            +
                        ".zip"
         | 
| 200 | 
            +
                      else
         | 
| 201 | 
            +
                        # everything else should fall back to tar.gz
         | 
| 202 | 
            +
                        ".tar.gz"
         | 
| 203 | 
            +
                      end
         | 
| 204 | 
            +
             | 
| 205 | 
            +
                    # Build file path
         | 
| 206 | 
            +
                    file_name = self.name.gsub("\.git", "") + "-" + commit.id.to_s + extension
         | 
| 207 | 
            +
                    File.join(storage_path, self.name, file_name)
         | 
| 208 | 
            +
                  end
         | 
| 209 | 
            +
             | 
| 210 | 
            +
                  def archive_pid_file_path(*args)
         | 
| 211 | 
            +
                    "#{archive_file_path(*args)}.pid"
         | 
| 212 | 
            +
                  end
         | 
| 213 | 
            +
             | 
| 189 214 | 
             
                  # Return repo size in megabytes
         | 
| 190 215 | 
             
                  def size
         | 
| 191 216 | 
             
                    size = popen(%W(du -s), path).first.strip.to_i
         | 
| @@ -891,9 +916,13 @@ module Gitlab | |
| 891 916 | 
             
                    end
         | 
| 892 917 | 
             
                  end
         | 
| 893 918 |  | 
| 894 | 
            -
                  def archive_to_file(treeish = 'master',  | 
| 919 | 
            +
                  def archive_to_file(treeish = 'master', filename = 'archive.tar.gz', format = nil, compress_cmd = %W(gzip))
         | 
| 895 920 | 
             
                    git_archive_cmd = %W(git --git-dir=#{path} archive)
         | 
| 896 | 
            -
             | 
| 921 | 
            +
             | 
| 922 | 
            +
                    # Put files into a directory before archiving
         | 
| 923 | 
            +
                    prefix = File.basename(self.name) + "/"
         | 
| 924 | 
            +
                    git_archive_cmd << "--prefix=#{prefix}"
         | 
| 925 | 
            +
             | 
| 897 926 | 
             
                    git_archive_cmd << "--format=#{format}" if format
         | 
| 898 927 | 
             
                    git_archive_cmd += %W(-- #{treeish})
         | 
| 899 928 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: gitlab_git
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 7.1. | 
| 4 | 
            +
              version: 7.1.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dmitriy Zaporozhets
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-03- | 
| 11 | 
            +
            date: 2015-03-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: gitlab-linguist
         | 
| @@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 108 108 | 
             
                  version: '0'
         | 
| 109 109 | 
             
            requirements: []
         | 
| 110 110 | 
             
            rubyforge_project: 
         | 
| 111 | 
            -
            rubygems_version: 2. | 
| 111 | 
            +
            rubygems_version: 2.2.2
         | 
| 112 112 | 
             
            signing_key: 
         | 
| 113 113 | 
             
            specification_version: 4
         | 
| 114 114 | 
             
            summary: Gitlab::Git library
         |