mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 10:56:10 +01:00 
			
		
		
		
	Add apply-patch, basic revert and cherry-pick functionality (#17902)
This code adds a simple endpoint to apply patches to repositories and branches on gitea. This is then used along with the conflicting checking code in #18004 to provide a basic implementation of cherry-pick revert. Now because the buttons necessary for cherry-pick and revert have required us to create a dropdown next to the Browse Source button I've also implemented Create Branch and Create Tag operations. Fix #3880 Fix #17986 Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		| @@ -10,11 +10,22 @@ export function initRepoBranchTagDropdown(selector) { | ||||
|       items: [], | ||||
|       mode: $data.data('mode'), | ||||
|       searchTerm: '', | ||||
|       refName: '', | ||||
|       noResults: '', | ||||
|       canCreateBranch: false, | ||||
|       menuVisible: false, | ||||
|       createTag: false, | ||||
|       active: 0 | ||||
|       isViewTag: false, | ||||
|       isViewBranch: false, | ||||
|       isViewTree: false, | ||||
|       active: 0, | ||||
|       branchForm: '', | ||||
|       branchURLPrefix: '', | ||||
|       branchURLSuffix: '', | ||||
|       tagURLPrefix: '', | ||||
|       tagURLSuffix: '', | ||||
|       setAction: false, | ||||
|       submitForm: false, | ||||
|     }; | ||||
|     $data.find('.item').each(function () { | ||||
|       data.items.push({ | ||||
| @@ -64,6 +75,26 @@ export function initRepoBranchTagDropdown(selector) { | ||||
|       beforeMount() { | ||||
|         this.noResults = this.$el.getAttribute('data-no-results'); | ||||
|         this.canCreateBranch = this.$el.getAttribute('data-can-create-branch') === 'true'; | ||||
|         this.branchForm = this.$el.getAttribute('data-branch-form'); | ||||
|         switch (this.$el.getAttribute('data-view-type')) { | ||||
|           case 'tree': | ||||
|             this.isViewTree = true; | ||||
|             break; | ||||
|           case 'tag': | ||||
|             this.isViewTag = true; | ||||
|             break; | ||||
|           default: | ||||
|             this.isViewBranch = true; | ||||
|             break; | ||||
|         } | ||||
|         this.refName = this.$el.getAttribute('data-ref-name'); | ||||
|         this.branchURLPrefix = this.$el.getAttribute('data-branch-url-prefix'); | ||||
|         this.branchURLSuffix = this.$el.getAttribute('data-branch-url-suffix'); | ||||
|         this.tagURLPrefix = this.$el.getAttribute('data-tag-url-prefix'); | ||||
|         this.tagURLSuffix = this.$el.getAttribute('data-tag-url-suffix'); | ||||
|         this.setAction = this.$el.getAttribute('data-set-action') === 'true'; | ||||
|         this.submitForm = this.$el.getAttribute('data-submit-form') === 'true'; | ||||
|  | ||||
|  | ||||
|         document.body.addEventListener('click', (event) => { | ||||
|           if (this.$el.contains(event.target)) return; | ||||
| @@ -80,7 +111,32 @@ export function initRepoBranchTagDropdown(selector) { | ||||
|             prev.selected = false; | ||||
|           } | ||||
|           item.selected = true; | ||||
|           window.location.href = item.url; | ||||
|           const url = (item.tag) ? this.tagURLPrefix + item.url + this.tagURLSuffix : this.branchURLPrefix + item.url + this.branchURLSuffix; | ||||
|           if (this.branchForm === '') { | ||||
|             window.location.href = url; | ||||
|           } else { | ||||
|             this.isViewTree = false; | ||||
|             this.isViewTag = false; | ||||
|             this.isViewBranch = false; | ||||
|             this.$refs.dropdownRefName.textContent = item.name; | ||||
|             if (this.setAction) { | ||||
|               $(`#${this.branchForm}`).attr('action', url); | ||||
|             } else { | ||||
|               $(`#${this.branchForm} input[name="refURL"]`).val(url); | ||||
|             } | ||||
|             $(`#${this.branchForm} input[name="ref"]`).val(item.name); | ||||
|             if (item.tag) { | ||||
|               this.isViewTag = true; | ||||
|               $(`#${this.branchForm} input[name="refType"]`).val('tag'); | ||||
|             } else { | ||||
|               this.isViewBranch = true; | ||||
|               $(`#${this.branchForm} input[name="refType"]`).val('branch'); | ||||
|             } | ||||
|             if (this.submitForm) { | ||||
|               $(`#${this.branchForm}`).trigger('submit'); | ||||
|             } | ||||
|             Vue.set(this, 'menuVisible', false); | ||||
|           } | ||||
|         }, | ||||
|         createNewBranch() { | ||||
|           if (!this.showCreateNewBranch) return; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user