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 @@ ...@@ -173,6 +173,11 @@
margin-right: 0px; margin-right: 0px;
} }
} }
&.btn-lg {
font-size: 15px;
line-height: 1.4;
}
} }
.btn-block { .btn-block {
......
...@@ -9,10 +9,6 @@ module Files ...@@ -9,10 +9,6 @@ module Files
return error("You are not allowed to create file in this branch") return error("You are not allowed to create file in this branch")
end 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_name = File.basename(path)
file_path = path file_path = path
...@@ -23,12 +19,21 @@ module Files ...@@ -23,12 +19,21 @@ module Files
) )
end end
blob = repository.blob_at_branch(ref, file_path) 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
if blob blob = repository.blob_at_branch(ref, file_path)
return error("Your changes could not be committed, because file with such name exists")
if blob
return error("Your changes could not be committed, because file with such name exists")
end
end end
new_file_action = Gitlab::Satellite::NewFileAction.new(current_user, project, ref, file_path) new_file_action = Gitlab::Satellite::NewFileAction.new(current_user, project, ref, file_path)
created_successfully = new_file_action.commit!( created_successfully = new_file_action.commit!(
params[:content], params[:content],
......
...@@ -3,6 +3,17 @@ ...@@ -3,6 +3,17 @@
= render "home_panel" = 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 %div.git-empty
%fieldset %fieldset
%legend Git global setup %legend Git global setup
......
...@@ -14,7 +14,14 @@ module Gitlab ...@@ -14,7 +14,14 @@ module Gitlab
prepare_satellite!(repo) prepare_satellite!(repo)
# create target branch in satellite at the corresponding commit from bare repo # create target branch in satellite at the corresponding commit from bare repo
repo.git.checkout({raise: true, timeout: true, b: true}, ref, "origin/#{ref}") 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) file_path_in_satellite = File.join(repo.working_dir, file_path)
dir_name_in_satellite = File.dirname(file_path_in_satellite) dir_name_in_satellite = File.dirname(file_path_in_satellite)
...@@ -38,10 +45,9 @@ module Gitlab ...@@ -38,10 +45,9 @@ module Gitlab
# will raise CommandFailed when commit fails # will raise CommandFailed when commit fails
repo.git.commit(raise: true, timeout: true, a: true, m: commit_message) repo.git.commit(raise: true, timeout: true, a: true, m: commit_message)
# push commit back to bare repo # push commit back to bare repo
# will raise CommandFailed when push fails # 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 # everything worked
true 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