summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Schatz <jschatz1@gmail.com>2017-09-28 09:44:04 -0400
committerJacob Schatz <jschatz1@gmail.com>2017-09-28 09:44:04 -0400
commita20d60fa1b7b4b2c1fbc1721e2e7a5e1ee9d7c3e (patch)
tree187b27157852ef3a6f500f4fb944f80c813dbd32
parenta4ffde6efe7d0218fc79e7d5b1307caa675dd358 (diff)
downloadgitlab-ce-reject-push.tar.gz
Adds dummy URL.reject-push
-rw-r--r--app/assets/javascripts/repo/components/repo_commit_section.vue51
-rw-r--r--app/assets/javascripts/repo/helpers/repo_helper.js1
-rw-r--r--app/assets/javascripts/repo/services/repo_service.js7
-rw-r--r--app/controllers/projects/blob_controller.rb7
4 files changed, 49 insertions, 17 deletions
diff --git a/app/assets/javascripts/repo/components/repo_commit_section.vue b/app/assets/javascripts/repo/components/repo_commit_section.vue
index 1282828b504..09546aac79b 100644
--- a/app/assets/javascripts/repo/components/repo_commit_section.vue
+++ b/app/assets/javascripts/repo/components/repo_commit_section.vue
@@ -28,23 +28,42 @@ export default {
},
methods: {
+ checkForReject() {
+ let okToCommit = true;
+ return Service.checkForReject(
+ decodeURIComponent(this.changedFiles[0].dummy_url)
+ .replace('{{branch}}', this.targetBranch)
+ )
+ .then((data) => {
+ if(data.data.last_commit.id !== this.changedFiles[0].last_commit.id) {
+ okToCommit = false;
+ }
+ })
+ .catch(() => {
+ new Flash('Cannot check for reject at this time.')
+ });
+ },
+
makeCommit() {
- // see https://docs.gitlab.com/ce/api/commits.html#create-a-commit-with-multiple-files-and-actions
- const commitMessage = this.commitMessage;
- const actions = this.changedFiles.map(f => ({
- action: 'update',
- file_path: f.path,
- content: f.newContent,
- }));
- const payload = {
- branch: Store.targetBranch,
- commit_message: commitMessage,
- actions,
- };
- Store.submitCommitsLoading = true;
- Service.commitFiles(payload)
- .then(this.resetCommitState)
- .catch(() => Flash('An error occured while committing your changes'));
+ this.checkForReject()
+ .then(() => {
+ // see https://docs.gitlab.com/ce/api/commits.html#create-a-commit-with-multiple-files-and-actions
+ const commitMessage = this.commitMessage;
+ const actions = this.changedFiles.map(f => ({
+ action: 'update',
+ file_path: f.path,
+ content: f.newContent,
+ }));
+ const payload = {
+ branch: Store.targetBranch,
+ commit_message: commitMessage,
+ actions,
+ };
+ Store.submitCommitsLoading = true;
+ Service.commitFiles(payload)
+ .then(this.resetCommitState)
+ .catch(() => Flash('An error occured while committing your changes'));
+ });
},
resetCommitState() {
diff --git a/app/assets/javascripts/repo/helpers/repo_helper.js b/app/assets/javascripts/repo/helpers/repo_helper.js
index 2bd8d7eea65..16b8cedf81b 100644
--- a/app/assets/javascripts/repo/helpers/repo_helper.js
+++ b/app/assets/javascripts/repo/helpers/repo_helper.js
@@ -16,6 +16,7 @@ const RepoHelper = {
name: '',
plain: '',
size: 0,
+ dummy_url: '',
url: '',
raw: false,
newContent: '',
diff --git a/app/assets/javascripts/repo/services/repo_service.js b/app/assets/javascripts/repo/services/repo_service.js
index af83497fa39..913c4e5fcca 100644
--- a/app/assets/javascripts/repo/services/repo_service.js
+++ b/app/assets/javascripts/repo/services/repo_service.js
@@ -65,6 +65,13 @@ const RepoService = {
return urlArray.join('/');
},
+ checkForReject(url) {
+ const params = this.buildParams(url);
+ return axios.get(url, {
+ params
+ });
+ },
+
commitFiles(payload) {
return Api.commitMultiple(Store.projectId, payload)
.then(this.commitFlash);
diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb
index 2b8f3977e6e..43c73f0d55b 100644
--- a/app/controllers/projects/blob_controller.rb
+++ b/app/controllers/projects/blob_controller.rb
@@ -201,7 +201,10 @@ class Projects::BlobController < Projects::ApplicationController
path_segments = @path.split('/')
path_segments.pop
tree_path = path_segments.join('/')
-
+ last_commit = @repository.last_commit_for_path(@commit.id, @blob.path)
+ puts '---------*_*__*_*_*_*_*_*_*_*_*_*_*_*_*_*'
+ puts params[:only]
+ puts '---------*_*__*_*_*_*_*_*_*_*_*_*_*_*_*_*'
render json: json.merge(
path: blob.path,
name: blob.name,
@@ -209,6 +212,8 @@ class Projects::BlobController < Projects::ApplicationController
size: blob.raw_size,
mime_type: blob.mime_type,
binary: blob.raw_binary?,
+ last_commit: last_commit,
+ dummy_url: project_blob_path(@project, File.join('{{branch}}', blob.path)),
simple_viewer: blob.simple_viewer&.class&.partial_name,
rich_viewer: blob.rich_viewer&.class&.partial_name,
show_viewer_switcher: !!blob.show_viewer_switcher?,