edit.html.haml 12.7 KB
Newer Older
Phil Hughes's avatar
Phil Hughes committed
1
2
3
4
.project-edit-container
  .row.prepend-top-default
    .col-lg-3.profile-settings-sidebar
      %h4.prepend-top-0
5
        Project settings
Phil Hughes's avatar
Phil Hughes committed
6
    .col-lg-9
7
      .project-edit-errors
Phil Hughes's avatar
Phil Hughes committed
8
9
      = form_for [@project.namespace.becomes(Namespace), @project], remote: true, html: { multipart: true, class: "edit-project" }, authenticity_token: true do |f|
        %fieldset.append-bottom-0
10
          .form-group
Phil Hughes's avatar
Phil Hughes committed
11
12
13
14
15
16
17
18
            = f.label :name, class: 'label-light' do
              Project name
            = f.text_field :name, class: "form-control", id: "project_name_edit"
          .form-group
            = f.label :description, class: 'label-light' do
              Project description
              %span.light (optional)
            = f.text_area :description, class: "form-control", rows: 3, maxlength: 250
19

Phil Hughes's avatar
Phil Hughes committed
20
          - unless @project.empty_repo?
21
            .form-group
Phil Hughes's avatar
Phil Hughes committed
22
23
24
25
26
              = f.label :default_branch, "Default Branch", class: 'label-light'
              = f.select(:default_branch, @project.repository.branch_names, {}, {class: 'select2 select-wide'})
        .form-group.project-visibility-level-holder
          = f.label :visibility_level, class: 'label-light' do
            Visibility Level
27
            = link_to "(?)", help_page_path("public_access/public_access")
Phil Hughes's avatar
Phil Hughes committed
28
29
30
31
32
33
34
35
          - if can_change_visibility_level?(@project, current_user)
            = render('shared/visibility_radios', model_method: :visibility_level, form: f, selected_level: @project.visibility_level, form_model: @project)
          - else
            .info
              = visibility_level_icon(@project.visibility_level)
              %strong
                = visibility_level_label(@project.visibility_level)
              .light= visibility_level_description(@project.visibility_level, @project)
36
37
38
39

        .form-group
          = render 'shared/allow_request_access', form: f

Phil Hughes's avatar
Phil Hughes committed
40
41
42
43
44
45
46
47
48
49
50
51
52
        .form-group
          = f.label :tag_list, "Tags", class: 'label-light'
          = f.text_field :tag_list, value: @project.tag_list.to_s, maxlength: 2000, class: "form-control"
          %p.help-block Separate tags with commas.
        %hr
        %fieldset.features.append-bottom-0
          %h5.prepend-top-0
            Features
          .form-group
            .checkbox
              = f.label :issues_enabled do
                = f.check_box :issues_enabled
                %strong Issues
53
                %br
Phil Hughes's avatar
Phil Hughes committed
54
55
56
57
58
59
                %span.descr Lightweight issue tracking system for this project
          .form-group
            .checkbox
              = f.label :merge_requests_enabled do
                = f.check_box :merge_requests_enabled
                %strong Merge Requests
60
                %br
Phil Hughes's avatar
Phil Hughes committed
61
62
63
64
65
66
67
68
69
70
71
72
73
                %span.descr Submit changes to be merged upstream
          .form-group
            .checkbox
              = f.label :builds_enabled do
                = f.check_box :builds_enabled
                %strong Builds
                %br
                %span.descr Test and deploy your changes before merge
          .form-group
            .checkbox
              = f.label :wiki_enabled do
                = f.check_box :wiki_enabled
                %strong Wiki
74
                %br
Phil Hughes's avatar
Phil Hughes committed
75
76
77
78
79
80
                %span.descr Pages for project documentation
          .form-group
            .checkbox
              = f.label :snippets_enabled do
                = f.check_box :snippets_enabled
                %strong Snippets
81
                %br
Phil Hughes's avatar
Phil Hughes committed
82
                %span.descr Share code pastes with others out of git repository
83
84
85
86
87
88
89
90
          - if Gitlab.config.lfs.enabled && current_user.admin?
            .form-group
              .checkbox
                = f.label :enable_lfs do
                  = f.check_box :enable_lfs, checked: (true if @project.enable_lfs || @project.enable_lfs.nil?)
                  %strong LFS
                  %br
                  %span.descr Git Large File Storage
Phil Hughes's avatar
Phil Hughes committed
91
          - if Gitlab.config.registry.enabled
92
            .form-group
Phil Hughes's avatar
Phil Hughes committed
93
94
95
96
              .checkbox
                = f.label :container_registry_enabled do
                  = f.check_box :container_registry_enabled
                  %strong Container Registry
Douwe Maan's avatar
Douwe Maan committed
97
                  %br
Phil Hughes's avatar
Phil Hughes committed
98
99
                  %span.descr Enable Container Registry for this repository
        %hr
100
101
        = render 'merge_request_settings', f: f
        %hr
Phil Hughes's avatar
Phil Hughes committed
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
        %fieldset.features.append-bottom-default
          %h5.prepend-top-0
            Project avatar
          .form-group
            - if @project.avatar?
              = project_icon("#{@project.namespace.to_param}/#{@project.to_param}", alt: '', class: 'avatar project-avatar s160')
            %p.light
              - if @project.avatar_in_git
                Project avatar in repository: #{ @project.avatar_in_git }
            %a.choose-btn.btn.js-choose-project-avatar-button
              Browse file...
            %span.file_name.prepend-left-default.js-avatar-filename No file chosen
            = f.file_field :avatar, class: "js-project-avatar-input hidden"
            .help-block The maximum file size allowed is 200KB.
            - if @project.avatar?
              %hr
              = link_to 'Remove avatar', namespace_project_avatar_path(@project.namespace, @project), data: { confirm: "Project avatar will be removed. Are you sure?"}, method: :delete, class: "btn btn-remove btn-sm remove-avatar"
        = f.submit 'Save changes', class: "btn btn-save"
  .row.prepend-top-default
  %hr
  .row.prepend-top-default
    .col-lg-3
      %h4.prepend-top-0
        Housekeeping
      %p.append-bottom-0
        %p
          Runs a number of housekeeping tasks within the current repository,
          such as compressing file revisions and removing unreachable objects.
    .col-lg-9
      = link_to 'Housekeeping', housekeeping_namespace_project_path(@project.namespace, @project),
          method: :post, class: "btn btn-save"
  %hr
134
135
136
137
138
139
  .row.prepend-top-default
    .col-lg-3
      %h4.prepend-top-0
        Export project
      %p.append-bottom-0
        %p
140
141
142
143
          Export this project with all its related data in order to move your project to a new GitLab instance. Once the export is finished, you can import the file from the "New Project" page.
        %p
          Once the exported file is ready, you will receive a notification email with a download link.

144
145
    .col-lg-9

146
147
148
      - if @project.export_project_path
        = link_to 'Download export',  download_export_namespace_project_path(@project.namespace, @project),
                method: :get, class: "btn btn-default"
149
        = link_to 'Generate new export',  generate_new_export_namespace_project_path(@project.namespace, @project),
150
151
152
                method: :post, class: "btn btn-default"
      - else
        = link_to 'Export project', export_namespace_project_path(@project.namespace, @project),
153
                method: :post, class: "btn btn-default"
James Lopez's avatar
James Lopez committed
154
155
156
157
158
159

      .bs-callout.bs-callout-info
        %p.append-bottom-0
          %p
            The following items will be exported:
          %ul
160
            %li Project and wiki repositories
James Lopez's avatar
James Lopez committed
161
            %li Project uploads
162
163
164
165
166
167
168
            %li Project configuration including web hooks and services
            %li Issues with comments, merge requests with diffs and comments, labels, milestones, snippets, and other project entities
          %p
            The following items will NOT be exported:
          %ul
            %li Build traces and artifacts
            %li LFS objects
169
  %hr
Phil Hughes's avatar
Phil Hughes committed
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
  - if can? current_user, :archive_project, @project
    .row.prepend-top-default
      .col-lg-3
        %h4.warning-title.prepend-top-0
          - if @project.archived?
            Unarchive project
          - else
            Archive project
        %p.append-bottom-0
          - if @project.archived?
            Unarchiving the project will mark its repository as active. The project can be committed to.
          - else
            Archiving the project will mark its repository as read-only. It is hidden from the dashboard and doesn't show up in searches.
      .col-lg-9
        - if @project.archived?
          %p
            %strong Once active this project shows up in the search and on the dashboard.
          = link_to 'Unarchive project', unarchive_namespace_project_path(@project.namespace, @project),
              data: { confirm: "Are you sure that you want to unarchive this project?\nWhen this project is unarchived it is active and can be committed to again." },
              method: :post, class: "btn btn-success"
Douwe Maan's avatar
Douwe Maan committed
190
        - else
Phil Hughes's avatar
Phil Hughes committed
191
192
193
194
195
196
197
198
199
200
201
          %p
            %strong Archived projects cannot be committed to!
          = link_to 'Archive project', archive_namespace_project_path(@project.namespace, @project),
              data: { confirm: "Are you sure that you want to archive this project?\nAn archived project cannot be committed to." },
              method: :post, class: "btn btn-warning"
  %hr
  .row.prepend-top-default
    .col-lg-3
      %h4.prepend-top-0.warning-title
        Rename repository
    .col-lg-9
202
      = render 'projects/errors'
Phil Hughes's avatar
Phil Hughes committed
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
      = form_for([@project.namespace.becomes(Namespace), @project]) do |f|
        .form-group.project_name_holder
          = f.label :name, class: 'label-light' do
            Project name
          .form-group
            = f.text_field :name, class: "form-control"
        .form-group
          = f.label :path, class: 'label-light' do
            %span Path
          .form-group
            .input-group
              .input-group-addon
                #{URI.join(root_url, @project.namespace.path)}/
              = f.text_field :path, class: 'form-control'
          %ul
            %li Be careful. Renaming a project's repository can have unintended side effects.
            %li You will need to update your local repositories to point to the new location.
        = f.submit 'Rename project', class: "btn btn-warning"
  - if can?(current_user, :change_namespace, @project)
    %hr
    .row.prepend-top-default
      .col-lg-3
        %h4.prepend-top-0.danger-title
          Transfer project
      .col-lg-9
        = form_for([@project.namespace.becomes(Namespace), @project], url: transfer_namespace_project_path(@project.namespace, @project), method: :put, remote: true) do |f|
          .form-group
            = label_tag :new_namespace_id, nil, class: 'label-light' do
              %span Namespace
            .form-group
              = select_tag :new_namespace_id, namespaces_options(@project.namespace_id), { prompt: 'Choose a project namespace', class: 'select2' }
            %ul
              %li Be careful. Changing the project's namespace can have unintended side effects.
              %li You can only transfer the project to namespaces you manage.
              %li You will need to update your local repositories to point to the new location.
              %li Project visibility level will be changed to match namespace rules when transfering to a group.
          = f.submit 'Transfer project', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => transfer_project_message(@project) }
  - if @project.forked? && can?(current_user, :remove_fork_project, @project)
    %hr
    .row.prepend-top-default.append-bottom-default
      .col-lg-3
        %h4.prepend-top-0.danger-title
          Remove fork relationship
        %p.append-bottom-0
          %p
            This will remove the fork relationship to source project
            = succeed "." do
              = link_to @project.forked_from_project.name_with_namespace, project_path(@project.forked_from_project)
      .col-lg-9
        = form_for([@project.namespace.becomes(Namespace), @project], url: remove_fork_namespace_project_path(@project.namespace, @project), method: :delete, remote: true, html: { class: 'transfer-project' }) do |f|
          %p
            %strong Once removed, the fork relationship cannot be restored and you will no longer be able to send merge requests to the source.
          = button_to 'Remove fork relationship', '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_fork_project_message(@project) }
  - if can?(current_user, :remove_project, @project)
    %hr
    .row.prepend-top-default.append-bottom-default
      .col-lg-3
        %h4.prepend-top-0.danger-title
          Remove project
        %p.append-bottom-0
          Removing the project will delete its repository and all related resources including issues, merge requests etc.
      .col-lg-9
        = form_tag(namespace_project_path(@project.namespace, @project), method: :delete) do
          %p
            %strong Removed projects cannot be restored!
          = button_to 'Remove project', '#', class: "btn btn-remove js-confirm-danger", data: { "confirm-danger-message" => remove_project_message(@project) }
269

270
.save-project-loader.hide
271
  .center
272
    %h2
273
      %i.fa.fa-spinner.fa-spin
274
      Saving project.
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
275
    %p Please wait a moment, this page will automatically refresh when ready.
276
277

= render 'shared/confirm_modal', phrase: @project.path