Commit 2b050601 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'init-from-ui' into 'master'

Create first file from empty repository via UI. pt1

* Backend can now commit file to empty repository.
* Empty project UI has new file button

First step in building #1930

See merge request !1438
parents ff7055ee 6a2384e0
......@@ -173,6 +173,11 @@
margin-right: 0px;
}
}
&.btn-lg {
font-size: 15px;
line-height: 1.4;
}
}
.btn-block {
......
......@@ -9,10 +9,6 @@ module Files
return error("You are not allowed to create file in this branch")
end
unless repository.branch_names.include?(ref)
return error("You can only create files if you are on top of a branch")
end
file_name = File.basename(path)
file_path = path
......@@ -23,11 +19,20 @@ module Files
)
end
if project.empty_repo?
# everything is ok because repo does not have a commits yet
else
unless repository.branch_names.include?(ref)
return error("You can only create files if you are on top of a branch")
end
blob = repository.blob_at_branch(ref, file_path)
if blob
return error("Your changes could not be committed, because file with such name exists")
end
end
new_file_action = Gitlab::Satellite::NewFileAction.new(current_user, project, ref, file_path)
created_successfully = new_file_action.commit!(
......
......@@ -3,6 +3,17 @@
= render "home_panel"
.center.well
%h3
The repository for this project is empty
%p.lead
You can
= link_to '#', class: 'btn btn-new btn-lg' do
add a file
 or push it via command line.
%h4
%strong Command line instructions
%div.git-empty
%fieldset
%legend Git global setup
......
......@@ -14,7 +14,14 @@ module Gitlab
prepare_satellite!(repo)
# create target branch in satellite at the corresponding commit from bare repo
current_ref =
if repo.commits.any?
repo.git.checkout({raise: true, timeout: true, b: true}, ref, "origin/#{ref}")
ref
else
# skip this step if we want to add first file to empty repo
Satellite::PARKING_BRANCH
end
file_path_in_satellite = File.join(repo.working_dir, file_path)
dir_name_in_satellite = File.dirname(file_path_in_satellite)
......@@ -38,10 +45,9 @@ module Gitlab
# will raise CommandFailed when commit fails
repo.git.commit(raise: true, timeout: true, a: true, m: commit_message)
# push commit back to bare repo
# will raise CommandFailed when push fails
repo.git.push({raise: true, timeout: true}, :origin, ref)
repo.git.push({raise: true, timeout: true}, :origin, "#{current_ref}:#{ref}")
# everything worked
true
......
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