gitlab_git 7.1.2 → 7.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|