Commit 958d9f11 authored by James Lopez's avatar James Lopez
Browse files

fix export project file permissions issue

parent 5435b68bf803
......@@ -3,6 +3,9 @@ Please view this file on the master branch, on stable branches it's out of date.
v 8.13.0 (unreleased)
- Speed-up group milestones show page
v 8.12.4 (unreleased)
- Set GitLab project exported file permissions to owner only
v 8.12.2 (unreleased)
- Fix Import/Export not recognising correctly the imported services.
- Respect the fork_project permission when forking projects
......
module Gitlab
module ImportExport
module CommandLineUtil
DEFAULT_MODE = 0700
def tar_czf(archive:, dir:)
tar_with_options(archive: archive, dir: dir, options: 'czf')
end
......@@ -21,6 +23,11 @@ def git_restore_hooks
execute(%W(#{Gitlab.config.gitlab_shell.path}/bin/create-hooks) + repository_storage_paths_args)
end
def mkdir_p(path)
FileUtils.mkdir_p(path, mode: DEFAULT_MODE)
FileUtils.chmod(DEFAULT_MODE, path)
end
private
def tar_with_options(archive:, dir:, options:)
......@@ -45,7 +52,7 @@ def copy_files(source, destination)
# if we are copying files, create the destination folder
destination_folder = File.file?(source) ? File.dirname(destination) : destination
FileUtils.mkdir_p(destination_folder)
mkdir_p(destination_folder)
FileUtils.copy_entry(source, destination)
true
end
......
......@@ -15,7 +15,7 @@ def initialize(archive_file:, shared:)
end
def import
FileUtils.mkdir_p(@shared.export_path)
mkdir_p(@shared.export_path)
wait_for_archived_file do
decompress_archive
......
module Gitlab
module ImportExport
class ProjectTreeSaver
include Gitlab::ImportExport::CommandLineUtil
attr_reader :full_path
def initialize(project:, shared:)
......@@ -10,7 +12,7 @@ def initialize(project:, shared:)
end
def save
FileUtils.mkdir_p(@shared.export_path)
mkdir_p(@shared.export_path)
File.write(full_path, project_json_tree)
true
......
......@@ -12,7 +12,7 @@ def initialize(project:, shared:, path_to_bundle:)
def restore
return true unless File.exist?(@path_to_bundle)
FileUtils.mkdir_p(path_to_repo)
mkdir_p(path_to_repo)
git_unbundle(repo_path: path_to_repo, bundle_path: @path_to_bundle) && repo_restore_hooks
rescue => e
......
......@@ -20,7 +20,7 @@ def save
private
def bundle_to_disk
FileUtils.mkdir_p(@shared.export_path)
mkdir_p(@shared.export_path)
git_bundle(repo_path: path_to_repo, bundle_path: @full_path)
rescue => e
@shared.error(e)
......
module Gitlab
module ImportExport
class VersionSaver
include Gitlab::ImportExport::CommandLineUtil
def initialize(shared:)
@shared = shared
end
def save
FileUtils.mkdir_p(@shared.export_path)
mkdir_p(@shared.export_path)
File.write(version_file, Gitlab::ImportExport.version, mode: 'w')
rescue => e
......
......@@ -9,7 +9,7 @@ def save
end
def bundle_to_disk(full_path)
FileUtils.mkdir_p(@shared.export_path)
mkdir_p(@shared.export_path)
git_bundle(repo_path: path_to_repo, bundle_path: full_path)
rescue => e
@shared.error(e)
......
......@@ -47,6 +47,8 @@
expect(page).to have_content('Download export')
expect(file_permissions(project.export_path)).to eq(0700)
in_directory_with_expanded_export(project) do |exit_status, tmpdir|
expect(exit_status).to eq(0)
......
......@@ -130,4 +130,8 @@ def safe_model?(model, excluded_attributes, parent)
(parsed_model_attributes - parent.keys - excluded_attributes).empty?
end
def file_permissions(file)
File.stat(file).mode & 0777
end
end
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment