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
|