Commit a00c534c4c7921e40f58f714291a2bb09ad02225
1 parent
ce21d868
Exists in
master
and in
4 other branches
Fix a bug where the tgz returned got encoded utf8
Conflicts: doc/api/repositories.md Change-Id: I7ebc39b47ff860813d9622ba6776583536e6e384
Showing
2 changed files
with
10 additions
and
6 deletions
Show diff stats
doc/api/repositories.md
@@ -368,4 +368,4 @@ GET /projects/:id/repository/archive | @@ -368,4 +368,4 @@ GET /projects/:id/repository/archive | ||
368 | 368 | ||
369 | Parameters: | 369 | Parameters: |
370 | + `id` (required) - The ID of a project | 370 | + `id` (required) - The ID of a project |
371 | -+ `sha` (optional) - The commit or branch name | 371 | ++ `sha` (optional) - The commit sha to download defaults to the tip of the default branch |
372 | \ No newline at end of file | 372 | \ No newline at end of file |
lib/api/repositories.rb
@@ -181,7 +181,7 @@ module API | @@ -181,7 +181,7 @@ module API | ||
181 | # | 181 | # |
182 | # Parameters: | 182 | # Parameters: |
183 | # id (required) - The ID of a project | 183 | # id (required) - The ID of a project |
184 | - # sha (optional) - the commit sha to download defaults to head | 184 | + # sha (optional) - the commit sha to download defaults to the tip of the default branch |
185 | # Example Request: | 185 | # Example Request: |
186 | # GET /projects/:id/repository/archive | 186 | # GET /projects/:id/repository/archive |
187 | get ":id/repository/archive" do | 187 | get ":id/repository/archive" do |
@@ -190,11 +190,15 @@ module API | @@ -190,11 +190,15 @@ module API | ||
190 | ref = params[:sha] | 190 | ref = params[:sha] |
191 | storage_path = Rails.root.join("tmp", "repositories") | 191 | storage_path = Rails.root.join("tmp", "repositories") |
192 | 192 | ||
193 | - file_path = repo.archive_repo(ref || 'HEAD', storage_path) | ||
194 | - if file_path | ||
195 | - data = File.open(file_path).read | 193 | + file_path = repo.archive_repo(ref, storage_path) |
194 | + if file_path && File.exists?(file_path) | ||
195 | + data = File.open(file_path, 'rb').read | ||
196 | + | ||
197 | + header "Content-Disposition:", " infile; filename=\"#{File.basename(file_path)}\"" | ||
196 | content_type 'application/x-gzip' | 198 | content_type 'application/x-gzip' |
197 | - header "Content-Disposition:"," infile; filename=\"#{File.basename(file_path)}\"" | 199 | + |
200 | + env['api.format'] = :binary | ||
201 | + | ||
198 | present data | 202 | present data |
199 | else | 203 | else |
200 | not_found! | 204 | not_found! |