diff options
author | Filipa Lacerda <filipa@gitlab.com> | 2018-01-08 19:19:52 +0000 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2018-01-08 19:19:52 +0000 |
commit | e2b759a2f483663e0771180de6b97bb9344a56cd (patch) | |
tree | 32cd72a70e405dc0858d774ca3354d6aef1bf445 | |
parent | 7ca5a3f99dd3a3c1800f65da7b4f08395a97395a (diff) | |
parent | df74461014bbdbc691f4f4039b02962dad292362 (diff) | |
download | gitlab-ce-e2b759a2f483663e0771180de6b97bb9344a56cd.tar.gz |
Merge branch 'master' into 34312-eslint-vue-plugin
* master: (140 commits)
Add Gitter room link to I want to contribute since you always have questions
Use workhorse 3.4.0
chore: remove symbolic link
Add memoization for properties
Resolve "Allow QA tests to run with `CHROME_HEADLESS=false`"
Resolve "Add graph value to hover"
Fix slash commands dropdown description
disables the shortcut to the issue boards when issues are disabled
Fix static analysys
Disable STI of ActiveRecord. Refactoring specs.
Fix StaticSnalysys
Fix change log
Add changelog
Revert bulk_insert and bring back AR insert(one by one)
Add a new test for emptified params
Use batch update for Service deactivation
Fix query to look for proper unmanaged kubernetes service
Fix static anylysy
Use bulk_insert instead of AR create
Opitmize migration process by using both unmanaged_kubernetes_service and kubernetes_service_without_template
...
197 files changed, 12637 insertions, 2884 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2b79f0825e2..057e2d6e0dc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -104,9 +104,13 @@ the remaining issues on the GitHub issue tracker. ## I want to contribute! -If you want to contribute to GitLab, [issues with the label `Accepting Merge Requests` and small weight][accepting-mrs-weight] is a great place to start. Issues with a lower weight (1 or 2) are deemed suitable for beginners. -These issues will be of reasonable size and challenge, for anyone to start -contributing to GitLab. +If you want to contribute to GitLab [issues with the label `Accepting Merge Requests` and small weight][accepting-mrs-weight] +is a great place to start. Issues with a lower weight (1 or 2) are deemed +suitable for beginners. These issues will be of reasonable size and challenge, +for anyone to start contributing to GitLab. If you have any questions or need help visit [Getting Help](https://about.gitlab.com/getting-help/#discussion) to +learn how to communicate with GitLab. If you're looking for a Gitter or Slack channel +please consider we favor +[asynchronous communication](https://about.gitlab.com/handbook/communication/#internal-communication) over real time communication. Thanks for your contribution! ## Workflow labels diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index afed694eede..e40e4fc339c 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -0.65.0 +0.66.0 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index bea438e9ade..18091983f59 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -3.3.1 +3.4.0 @@ -78,7 +78,7 @@ gem 'github-linguist', '~> 4.7.0', require: 'linguist' # API gem 'grape', '~> 1.0' gem 'grape-entity', '~> 0.6.0' -gem 'rack-cors', '~> 0.4.0', require: 'rack/cors' +gem 'rack-cors', '~> 1.0.0', require: 'rack/cors' # Disable strong_params so that Mash does not respond to :permitted? gem 'hashie-forbidden_attributes' @@ -339,7 +339,7 @@ group :development, :test do gem 'rubocop', '~> 0.52.0' gem 'rubocop-rspec', '~> 1.20.1' - gem 'scss_lint', '~> 0.54.0', require: false + gem 'scss_lint', '~> 0.56.0', require: false gem 'haml_lint', '~> 0.26.0', require: false gem 'simplecov', '~> 0.14.0', require: false gem 'flay', '~> 2.8.0', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 2a81c81b0f8..d10da1bd1c3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -651,7 +651,7 @@ GEM rack (>= 0.4) rack-attack (4.4.1) rack - rack-cors (0.4.0) + rack-cors (1.0.2) rack-oauth2 (1.2.3) activesupport (>= 2.3) attr_required (>= 0.0.5) @@ -695,6 +695,9 @@ GEM rake raindrops (0.18.0) rake (12.3.0) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) rblineprof (0.3.6) debugger-ruby_core_source (~> 1.3) rbnacl (4.0.2) @@ -809,7 +812,11 @@ GEM safe_yaml (1.0.4) sanitize (2.1.0) nokogiri (>= 1.4.4) - sass (3.4.22) + sass (3.5.5) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) sass-rails (5.0.6) railties (>= 4.0.0, < 6) sass (~> 3.1) @@ -819,9 +826,9 @@ GEM sawyer (0.8.1) addressable (>= 2.3.5, < 2.6) faraday (~> 0.8, < 1.0) - scss_lint (0.54.0) + scss_lint (0.56.0) rake (>= 0.9, < 13) - sass (~> 3.4.20) + sass (~> 3.5.3) securecompare (1.0.0) seed-fu (2.3.6) activerecord (>= 3.1) @@ -1126,7 +1133,7 @@ DEPENDENCIES pry-byebug (~> 3.4.1) pry-rails (~> 0.3.4) rack-attack (~> 4.4.1) - rack-cors (~> 0.4.0) + rack-cors (~> 1.0.0) rack-oauth2 (~> 1.2.1) rack-proxy (~> 0.6.0) rails (= 4.2.10) @@ -1162,7 +1169,7 @@ DEPENDENCIES rugged (~> 0.26.0) sanitize (~> 2.0) sass-rails (~> 5.0.6) - scss_lint (~> 0.54.0) + scss_lint (~> 0.56.0) seed-fu (= 2.3.6) select2-rails (~> 3.5.9) selenium-webdriver (~> 3.5) @@ -1205,4 +1212,4 @@ DEPENDENCIES wikicloth (= 0.8.1) BUNDLED WITH - 1.16.0 + 1.16.1 diff --git a/app/assets/images/icons.json b/app/assets/images/icons.json index 38c1faccbf1..296cb856734 100644 --- a/app/assets/images/icons.json +++ b/app/assets/images/icons.json @@ -1 +1 @@ -{"iconCount":186,"spriteSize":84748,"icons":["abuse","account","admin","angle-double-left","angle-double-right","angle-down","angle-left","angle-right","angle-up","appearance","applications","approval","arrow-down","arrow-right","assignee","bold","book","bookmark","branch","bullhorn","calendar","cancel","chart","chevron-down","chevron-left","chevron-right","chevron-up","clock","close","code","collapse","comment-dots","comment-next","comment","comments","commit","credit-card","cut","dashboard","disk","doc_code","doc_image","doc_text","double-headed-arrow","download","duplicate","earth","ellipsis_v","emoji_slightly_smiling_face","emoji_smile","emoji_smiley","epic","external-link","eye-slash","eye","file-addition","file-deletion","file-modified","filter","folder-o","folder-open","folder","fork","geo-nodes","git-merge","group","history","home","hook","hourglass","image-comment-dark","image-comment-light","import","issue-block","issue-child","issue-close","issue-duplicate","issue-external","issue-new","issue-open-m","issue-open","issue-parent","issues","italic","key-2","key","label","labels","leave","level-up","license","link","list-bulleted","list-numbered","location-dot","location","lock-open","lock","log","mail","menu","merge-request-close","messages","mobile-issue-close","monitor","more","notifications-off","notifications","overview","pencil-square","pencil","pipeline","play","plus-square-o","plus-square","plus","podcast","preferences","profile","project","push-rules","question-o","question","quote","redo","remove","repeat","retry","scale","screen-full","screen-normal","scroll_down","scroll_up","search","settings","shield","slight-frown","slight-smile","smile","smiley","snippet","spam","spinner","star-o","star","status_canceled_borderless","status_canceled","status_closed","status_created_borderless","status_created","status_failed_borderless","status_failed","status_manual_borderless","status_manual","status_notfound_borderless","status_open","status_pending_borderless","status_pending","status_running_borderless","status_running","status_skipped_borderless","status_skipped","status_success_borderless","status_success_solid","status_success","status_warning_borderless","status_warning","stop","task-done","template","terminal","thumb-down","thumb-up","thumbtack","timer","todo-add","todo-done","token","unapproval","unassignee","unlink","user","users","volume-up","warning","work"]}
\ No newline at end of file +{"iconCount":189,"spriteSize":85766,"icons":["abuse","account","admin","angle-double-left","angle-double-right","angle-down","angle-left","angle-right","angle-up","appearance","applications","approval","arrow-down","arrow-right","assignee","bold","book","bookmark","branch","bullhorn","calendar","cancel","chart","chevron-down","chevron-left","chevron-right","chevron-up","clock","close","code","collapse","comment-dots","comment-next","comment","comments","commit","credit-card","cut","dashboard","disk","doc_code","doc_image","doc_text","double-headed-arrow","download","duplicate","earth","ellipsis_v","emoji_slightly_smiling_face","emoji_smile","emoji_smiley","epic","external-link","eye-slash","eye","file-addition","file-deletion","file-modified","filter","folder-o-open","folder-o","folder-open","folder","fork","geo-nodes","git-merge","group","history","home","hook","hourglass","image-comment-dark","image-comment-light","import","issue-block","issue-child","issue-close","issue-duplicate","issue-external","issue-new","issue-open-m","issue-open","issue-parent","issues","italic","key-2","key","label","labels","leave","level-up","license","link","list-bulleted","list-numbered","location-dot","location","lock-open","lock","log","mail","menu","merge-request-close","messages","mobile-issue-close","monitor","more","notifications-off","notifications","overview","pencil-square","pencil","pipeline","play","plus-square-o","plus-square","plus","podcast","preferences","profile","project","push-rules","question-o","question","quote","redo","remove","repeat","retry","scale","screen-full","screen-normal","scroll_down","scroll_up","search","settings","shield","slight-frown","slight-smile","smile","smiley","snippet","spam","spinner","staged","star-o","star","status_canceled_borderless","status_canceled","status_closed","status_created_borderless","status_created","status_failed_borderless","status_failed","status_manual_borderless","status_manual","status_notfound_borderless","status_open","status_pending_borderless","status_pending","status_running_borderless","status_running","status_skipped_borderless","status_skipped","status_success_borderless","status_success_solid","status_success","status_warning_borderless","status_warning","stop","task-done","template","terminal","thumb-down","thumb-up","thumbtack","timer","todo-add","todo-done","token","unapproval","unassignee","unlink","unstaged","user","users","volume-up","warning","work"]}
\ No newline at end of file diff --git a/app/assets/images/icons.svg b/app/assets/images/icons.svg index 42f5377a10e..8d5426da19c 100644 --- a/app/assets/images/icons.svg +++ b/app/assets/images/icons.svg @@ -1 +1 @@ -<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><symbol viewBox="0 0 16 16" id="abuse" xmlns="http://www.w3.org/2000/svg"><path d="M11.408.328l4.029 3.222A1.5 1.5 0 0 1 16 4.72v6.555a1.5 1.5 0 0 1-.563 1.171l-4.026 3.224a1.5 1.5 0 0 1-.937.329H5.529a1.5 1.5 0 0 1-.937-.328L.563 12.45A1.5 1.5 0 0 1 0 11.28V4.724a1.5 1.5 0 0 1 .563-1.171L4.589.329A1.5 1.5 0 0 1 5.526 0h4.945c.34 0 .67.116.937.328zM10.296 2H5.702L2 4.964v6.074L5.704 14h4.594L14 11.036V4.962L10.296 2zM8 4a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0V5a1 1 0 0 1 1-1zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="account" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M9.195 9.965l-.568-.875a.25.25 0 0 1 .015-.294l.405-.5a.25.25 0 0 1 .283-.075l.938.36c.257-.183.543-.325.851-.42l.322-.988A.25.25 0 0 1 11.679 7h.642a.25.25 0 0 1 .238.173l.322.988c.308.095.594.237.851.42l.938-.36a.25.25 0 0 1 .283.076l.405.5a.25.25 0 0 1 .015.293l-.568.875c.113.297.18.616.193.95l.898.54a.25.25 0 0 1 .115.27l-.144.626a.25.25 0 0 1-.222.193l-1.115.098a3.015 3.015 0 0 1-.512.608l.165 1.18a.25.25 0 0 1-.138.259l-.577.281a.25.25 0 0 1-.29-.05l-.874-.905a3.035 3.035 0 0 1-.608 0l-.875.904a.25.25 0 0 1-.289.051l-.577-.281a.25.25 0 0 1-.138-.26l.165-1.18a3.015 3.015 0 0 1-.512-.607l-1.115-.098a.25.25 0 0 1-.222-.193l-.144-.626a.25.25 0 0 1 .115-.27l.898-.54c.013-.334.08-.653.193-.95zM6.789 8.023A12.845 12.845 0 0 0 6 8c-5.036 0-6 2.74-6 4.48C0 14.22.076 15 6 15c.553 0 1.055-.006 1.51-.02A5.977 5.977 0 0 1 6 11c0-1.083.287-2.1.79-2.977zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM12 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="admin" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M13.162 2.5a3.5 3.5 0 0 1-3.163 5.479L6.08 14.766a1.5 1.5 0 0 1-2.598-1.5L7.4 6.479A3.5 3.5 0 0 1 10.564 1L8.9 3.88l2.599 1.5 1.663-2.88zm-8.63 11.949a.5.5 0 1 0 .5-.866.5.5 0 0 0-.5.866z"/></symbol><symbol viewBox="0 0 16 16" id="angle-double-left" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.414 7.95l4.243-4.243a1 1 0 0 0-1.414-1.414l-4.95 4.95a.997.997 0 0 0 0 1.414l4.95 4.95a1 1 0 1 0 1.414-1.415L10.414 7.95zm-7 0l4.243-4.243a1 1 0 0 0-1.414-1.414l-4.95 4.95a.997.997 0 0 0 0 1.414l4.95 4.95a1 1 0 0 0 1.414-1.415L3.414 7.95z"/></symbol><symbol viewBox="0 0 16 16" id="angle-double-right" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5.536 7.95L1.293 3.707a1 1 0 0 1 1.414-1.414l4.95 4.95a.997.997 0 0 1 0 1.414l-4.95 4.95a1 1 0 1 1-1.414-1.415L5.536 7.95zm7 0L8.293 3.707a1 1 0 0 1 1.414-1.414l4.95 4.95a.997.997 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.414-1.415l4.243-4.242z"/></symbol><symbol viewBox="0 0 16 16" id="angle-down" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 10.243l-4.95-4.95a1 1 0 0 0-1.414 1.414l5.657 5.657a.997.997 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L8 10.243z"/></symbol><symbol viewBox="0 0 16 16" id="angle-left" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5.757 8l4.95-4.95a1 1 0 1 0-1.414-1.414L3.636 7.293a.997.997 0 0 0 0 1.414l5.657 5.657a1 1 0 0 0 1.414-1.414L5.757 8z"/></symbol><symbol viewBox="0 0 16 16" id="angle-right" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.243 8l-4.95-4.95a1 1 0 0 1 1.414-1.414l5.657 5.657a.997.997 0 0 1 0 1.414l-5.657 5.657a1 1 0 0 1-1.414-1.414L10.243 8z"/></symbol><symbol viewBox="0 0 16 16" id="angle-up" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 6.757l-4.95 4.95a1 1 0 1 1-1.414-1.414l5.657-5.657a.997.997 0 0 1 1.414 0l5.657 5.657a1 1 0 0 1-1.414 1.414L8 6.757z"/></symbol><symbol viewBox="0 0 16 16" id="appearance" xmlns="http://www.w3.org/2000/svg"><path d="M11.161 12.456l.232.121c.1.053.175.094.249.137.53.318.844.75.857 1.402.012 1.397-1.116 1.756-3.12 1.858a23.85 23.85 0 0 1-1.38.026A8 8 0 0 1 0 8a8 8 0 0 1 8-8c4.417 0 7.998 3.582 7.998 7.977.06 2.621-1.312 3.586-4.48 3.648-.602.008-1.068.043-1.4.104.228.192.598.47 1.043.727zm-3.287-.943c-.019-1.495 1.228-1.856 3.611-1.888C13.67 9.582 14.028 9.33 13.998 8A6 6 0 1 0 8 14c.603 0 .91-.004 1.277-.023a9.7 9.7 0 0 0 .478-.035c-1.172-.738-1.868-1.47-1.88-2.43zM6 5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm6 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-2-3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM4 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="applications" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1 0h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm0 6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm6-6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm0 1v2h2V1H7zm0 5h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm6-6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm0 6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm0 1v2h2V7h-2zM1 12h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zm0 1v2h2v-2H1zm6-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zm6 0h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/></symbol><symbol viewBox="0 0 16 16" id="approval" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.536 10.657l2.828-2.829a1 1 0 0 1 1.414 1.415l-3.535 3.535a.997.997 0 0 1-1.415 0l-2.12-2.121A1 1 0 1 1 9.12 9.243l1.415 1.414zM7.632 8.109A2 2 0 0 0 7 11.364l2.121 2.121a1.996 1.996 0 0 0 2.807.021C11.686 14.554 10.627 15 6 15c-5.924 0-6-.78-6-2.52S.964 8 6 8c.6 0 1.142.038 1.632.109zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"/></symbol><symbol viewBox="0 0 16 16" id="arrow-down" xmlns="http://www.w3.org/2000/svg"><path d="M10.472 7.282a.862.862 0 0 1 1.26-.006c.357.364.357.958 0 1.285L8.627 11.73A.886.886 0 0 1 8 12a.849.849 0 0 1-.627-.27L4.275 8.561a.904.904 0 0 1-.013-1.285.861.861 0 0 1 1.26-.007l2.486 2.527z"/></symbol><symbol viewBox="0 0 16 16" id="arrow-right" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M9 6H2a2 2 0 1 0 0 4h7v2.586a1 1 0 0 0 1.707.707l4.586-4.586a1 1 0 0 0 0-1.414l-4.586-4.586A1 1 0 0 0 9 3.414V6z"/></symbol><symbol viewBox="0 0 16 16" id="assignee" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12 5V4a1 1 0 0 1 2 0v1h1a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0V7h-1a1 1 0 0 1 0-2h1zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM6 15c-5.924 0-6-.78-6-2.52S.964 8 6 8s6 2.692 6 4.48c0 1.788-.076 2.52-6 2.52z"/></symbol><symbol viewBox="0 0 16 16" id="bold" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M4 12.5v-9A1.5 1.5 0 0 1 5.5 2h2.104c2.182 0 3.879.681 3.879 2.982 0 1.067-.517 2.227-1.374 2.595v.073C11.176 7.963 12 8.865 12 10.466 12 12.914 10.19 14 7.911 14H5.5A1.5 1.5 0 0 1 4 12.5zm2.376-5.696H7.49c1.164 0 1.665-.552 1.665-1.417 0-.94-.534-1.289-1.649-1.289h-1.13v2.706zm0 5.098h1.341c1.293 0 1.956-.515 1.956-1.62 0-1.049-.647-1.472-1.956-1.472H6.376v3.092z"/></symbol><symbol viewBox="0 0 16 16" id="book" xmlns="http://www.w3.org/2000/svg"><path d="M7 2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2v4.191a.5.5 0 0 1-.724.447l-1.052-.526a.5.5 0 0 0-.448 0l-1.052.526A.5.5 0 0 1 7 6.191V2zM5 0h6a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H5a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"/></symbol><symbol viewBox="0 0 16 16" id="bookmark" xmlns="http://www.w3.org/2000/svg"><path d="M6.746 10.505a2 2 0 0 1 2.508 0L11 11.911V3H5v8.91l1.746-1.405zM5 1h6a2 2 0 0 1 2 2v10.999a1 1 0 0 1-1.627.779L8 12.064l-3.373 2.714A1 1 0 0 1 3 13.998V3a2 2 0 0 1 2-2z"/></symbol><symbol viewBox="0 0 16 16" id="branch" xmlns="http://www.w3.org/2000/svg"><path d="M6 11.978v.29a2 2 0 1 1-2 0V3.732a2 2 0 1 1 2 0v3.849c.592-.491 1.31-.854 2.15-1.081 1.308-.353 1.875-.882 1.893-1.743a2 2 0 1 1 2.002-.051C12.053 6.54 10.857 7.84 8.67 8.43 7.056 8.867 6.195 9.98 6 11.978zM5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm6 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zM5 15a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="bullhorn" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6.143 10H7V4H3a3 3 0 1 0 0 6h.143l.734 5.141a1 1 0 0 0 .99.859h1.556a.5.5 0 0 0 .495-.57L6.143 10zM8 4c1.034.02 2.039-.274 3.014-.883.727-.455 1.836-1.334 3.328-2.637A1 1 0 0 1 16 1.233v10.764a1 1 0 0 1-1.595.803c-1.658-1.227-2.788-1.992-3.392-2.294-.781-.39-1.785-.559-3.013-.506V4z"/></symbol><symbol viewBox="0 0 16 16" id="calendar" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12 2h2a2 2 0 0 1 2 2H0a2 2 0 0 1 2-2h2V1a1 1 0 1 1 2 0v1h4V1a1 1 0 1 1 2 0v1zM0 4h16v9a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V4zm2 2.5V13a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6.5a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0-.5.5zM5 8h2a1 1 0 1 1 0 2H5a1 1 0 1 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="cancel" xmlns="http://www.w3.org/2000/svg"><path d="M3.11 4.523a6 6 0 0 0 8.367 8.367L3.109 4.524zM4.522 3.11l8.368 8.368A6 6 0 0 0 4.524 3.11zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/></symbol><symbol viewBox="0 0 16 16" id="chart" xmlns="http://www.w3.org/2000/svg"><path d="M15 14a1 1 0 0 1 0 2H2a2 2 0 0 1-2-2V1a1 1 0 1 1 2 0v13h13zM3.142 8.735l2.502-2.561a.5.5 0 0 1 .714-.003L8 7.833l3.592-4.553a.5.5 0 0 1 .796.015l2.516 3.454a.5.5 0 0 1 .096.295V12.5a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5V9.085a.5.5 0 0 1 .142-.35z"/></symbol><symbol viewBox="0 0 16 16" id="chevron-down" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.078 8.2l3.535-3.536a2 2 0 0 1 2.828 2.828l-4.949 4.95c-.39.39-.902.586-1.414.586a1.994 1.994 0 0 1-1.414-.586l-4.95-4.95a2 2 0 1 1 2.828-2.828l3.536 3.535z"/></symbol><symbol viewBox="0 0 16 16" id="chevron-left" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7.977 7.998l3.535-3.535a2 2 0 1 0-2.828-2.828l-4.95 4.949c-.39.39-.586.902-.586 1.414 0 .512.196 1.024.586 1.414l4.95 4.95a2 2 0 1 0 2.828-2.828L7.977 7.998z"/></symbol><symbol viewBox="0 0 16 16" id="chevron-right" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.22 7.998L4.683 4.463a2 2 0 0 1 2.828-2.828l4.95 4.949c.39.39.586.902.586 1.414a1.99 1.99 0 0 1-.586 1.414l-4.95 4.95a2 2 0 0 1-2.828-2.828l3.535-3.536z"/></symbol><symbol viewBox="0 0 16 16" id="chevron-up" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7.778 8.957l3.535 3.535a2 2 0 1 0 2.828-2.828l-4.949-4.95a1.994 1.994 0 0 0-1.414-.586c-.512 0-1.024.196-1.414.586l-4.95 4.95a2 2 0 1 0 2.828 2.828l3.536-3.535z"/></symbol><symbol viewBox="0 0 16 16" id="clock" xmlns="http://www.w3.org/2000/svg"><path d="M9 7h1a1 1 0 0 1 0 2H8a.997.997 0 0 1-1-1V5a1 1 0 1 1 2 0v2zm-1 9A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"/></symbol><symbol viewBox="0 0 16 16" id="close" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M9.414 8l4.95-4.95a1 1 0 0 0-1.414-1.414L8 6.586l-4.95-4.95A1 1 0 0 0 1.636 3.05L6.586 8l-4.95 4.95a1 1 0 1 0 1.414 1.414L8 9.414l4.95 4.95a1 1 0 1 0 1.414-1.414L9.414 8z"/></symbol><symbol viewBox="0 0 16 16" id="code" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M15.871 8.243a.997.997 0 0 0-.293-.707L12.75 4.707a1 1 0 0 0-1.414 1.414l2.12 2.122-2.12 2.121a1 1 0 0 0 1.414 1.414l2.828-2.828a.997.997 0 0 0 .293-.707zm-13.243 0L4.75 6.12a1 1 0 1 0-1.414-1.414L.507 7.536a.997.997 0 0 0 0 1.414l2.829 2.828a1 1 0 1 0 1.414-1.414L2.628 8.243zm6.407-4.107a1 1 0 0 1 .707 1.225L8.19 11.157a1 1 0 1 1-1.931-.518L7.81 4.843a1 1 0 0 1 1.224-.707z"/></symbol><symbol viewBox="0 0 9 13" id="collapse"><path d="M.084.25C.01.18-.015.12.008.071.031.024.093 0 .194 0h8.521c.1 0 .162.024.185.072.023.048-.002.107-.075.177l-4.11 3.935a.372.372 0 0 1-.11.072h-.301a.508.508 0 0 1-.11-.072L.084.249zM.377 6.88a.364.364 0 0 1-.26-.105.334.334 0 0 1-.11-.25v-.709c0-.096.036-.179.11-.249a.364.364 0 0 1 .26-.105h8.15c.101 0 .188.035.261.105.074.07.11.153.11.25v.709c0 .096-.036.179-.11.249a.364.364 0 0 1-.26.105H.377zM.084 12.132c-.074.07-.099.129-.076.177.023.048.085.072.186.072h8.521c.1 0 .162-.024.185-.072.023-.048-.002-.107-.075-.177l-4.11-3.935a.372.372 0 0 0-.11-.072h-.301a.508.508 0 0 0-.11.072l-4.11 3.935z"/></symbol><symbol viewBox="0 0 16 16" id="comment" xmlns="http://www.w3.org/2000/svg"><path d="M1.707 15.707C1.077 16.337 0 15.891 0 15V3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H5.414l-3.707 3.707zM2 12.586l2.293-2.293A1 1 0 0 1 5 10h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v9.586z"/></symbol><symbol viewBox="0 0 16 16" id="comment-dots" xmlns="http://www.w3.org/2000/svg"><path d="M1.707 15.707C1.077 16.337 0 15.891 0 15V3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H5.414l-3.707 3.707zM2 12.586l2.293-2.293A1 1 0 0 1 5 10h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v9.586zM5 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="comment-next" xmlns="http://www.w3.org/2000/svg"><path d="M8 5V4a.5.5 0 0 1 .8-.4l2.667 2a.5.5 0 0 1 0 .8L8.8 8.4A.5.5 0 0 1 8 8V7H6a1 1 0 1 1 0-2h2zM1.707 15.707C1.077 16.337 0 15.891 0 15V3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H5.414l-3.707 3.707zM2 12.586l2.293-2.293A1 1 0 0 1 5 10h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v9.586z"/></symbol><symbol viewBox="0 0 16 16" id="comments" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M3.75 10L0 13V3a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H3.75zM13 5h1a2 2 0 0 1 2 2v8l-2.667-2H8a2 2 0 0 1-2-2h4a3 3 0 0 0 3-3V5z"/></symbol><symbol viewBox="0 0 16 16" id="commit" xmlns="http://www.w3.org/2000/svg"><path d="M8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm3.876-1.008a4.002 4.002 0 0 1-7.752 0A1.01 1.01 0 0 1 4 9H1a1 1 0 1 1 0-2h3c.042 0 .083.003.124.008a4.002 4.002 0 0 1 7.752 0A1.01 1.01 0 0 1 12 7h3a1 1 0 0 1 0 2h-3a1.01 1.01 0 0 1-.124-.008z"/></symbol><symbol viewBox="0 0 16 16" id="credit-card" xmlns="http://www.w3.org/2000/svg"><path d="M14 5a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1h12zm0 3H2v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V8zM3 2h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zm6.5 8h3a.5.5 0 1 1 0 1h-3a.5.5 0 1 1 0-1z"/></symbol><symbol viewBox="0 0 16 16" id="cut" xmlns="http://www.w3.org/2000/svg"><rect width="16" height="2" y="7" fill-rule="evenodd" rx="1"/></symbol><symbol viewBox="0 0 16 16" id="dashboard" xmlns="http://www.w3.org/2000/svg"><path d="M7.709 10.021l.696-2.6a.5.5 0 0 1 .966.26l-.657 2.45A2 2 0 0 1 10 12H6a2 2 0 0 1 1.709-1.979zM0 8.9a8 8 0 0 1 15.998 0H16v3.6a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5V8.9zM14 9A6 6 0 1 0 2 9v3.5a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5V9zM3.5 9a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm9 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-7-3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm5 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1z"/></symbol><symbol viewBox="0 0 16 16" id="disk" xmlns="http://www.w3.org/2000/svg"><path d="M16 11.764V3a3 3 0 0 0-3-3H3a3 3 0 0 0-3 3v8.764A2.989 2.989 0 0 1 2 11V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v8c.768 0 1.47.289 2 .764zM2 12h12a2 2 0 1 1 0 4H2a2 2 0 1 1 0-4zm10 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="doc_code" xmlns="http://www.w3.org/2000/svg"><path d="M8 2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V7h-3a2 2 0 0 1-2-2V2zm2 .414V5h2.586L10 2.414zm1.036 7.607a.498.498 0 0 1-.147.354l-1.414 1.414a.5.5 0 0 1-.707-.707l1.06-1.06-1.06-1.061a.5.5 0 0 1 .707-.707l1.414 1.414a.498.498 0 0 1 .147.353zm-4.822 0l1.06 1.061a.5.5 0 0 1-.706.707l-1.414-1.414a.498.498 0 0 1 0-.707l1.414-1.414a.5.5 0 1 1 .707.707l-1.06 1.06zM5 0h4.586A2 2 0 0 1 11 .586L14.414 4A2 2 0 0 1 15 5.414V12a4 4 0 0 1-4 4H5a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"/></symbol><symbol viewBox="0 0 16 16" id="doc_image" xmlns="http://www.w3.org/2000/svg"><path d="M8 2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V7h-3a2 2 0 0 1-2-2V2zm2 .414V5h2.586L10 2.414zM7.333 9.667l1.313-1.313a.5.5 0 0 1 .708 0L12 11H4l2.188-1.75a.5.5 0 0 1 .624 0l.521.417zM5 0h4.586A2 2 0 0 1 11 .586L14.414 4A2 2 0 0 1 15 5.414V12a4 4 0 0 1-4 4H5a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm.5 8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM4 11h8v.7a.3.3 0 0 1-.3.3H4.3a.3.3 0 0 1-.3-.3V11z"/></symbol><symbol viewBox="0 0 16 16" id="doc_text" xmlns="http://www.w3.org/2000/svg"><path d="M8 2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V7h-3a2 2 0 0 1-2-2V2zm2 .414V5h2.586L10 2.414zM5 0h4.586A2 2 0 0 1 11 .586L14.414 4A2 2 0 0 1 15 5.414V12a4 4 0 0 1-4 4H5a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm.5 11h5a.5.5 0 1 1 0 1h-5a.5.5 0 1 1 0-1zm0-2h5a.5.5 0 1 1 0 1h-5a.5.5 0 0 1 0-1zm0-2h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol viewBox="0 0 105 26" id="double-headed-arrow" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1.018 11.089L15.138.614c1.23-.911 3.086-.795 4.147.26.461.46.715 1.045.715 1.651v20.95C20 24.869 18.684 26 17.06 26a3.238 3.238 0 0 1-1.921-.614L1.019 14.911C-.212 14-.347 12.405.714 11.35c.094-.094.195-.18.303-.261zm102.964 0c.108.08.21.167.303.26 1.061 1.056.925 2.65-.303 3.562l-14.12 10.475A3.238 3.238 0 0 1 87.94 26C86.316 26 85 24.87 85 23.475V2.525c0-.606.254-1.192.715-1.65 1.061-1.056 2.917-1.172 4.146-.26l14.12 10.474zM35 17a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm18 0a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm18 0a4 4 0 1 1 0-8 4 4 0 0 1 0 8z"/></symbol><symbol viewBox="0 0 16 16" id="download" xmlns="http://www.w3.org/2000/svg"><path d="M9 12h1a.5.5 0 0 1 .4.8l-2 2.667a.5.5 0 0 1-.8 0l-2-2.667A.5.5 0 0 1 6 12h1V8a1 1 0 1 1 2 0v4zM4 9a1 1 0 1 1 0 2 4 4 0 0 1-1.971-7.481 4 4 0 0 1 6.633-2.505 3.999 3.999 0 0 1 3.82 2.014A4 4 0 0 1 12 11a1 1 0 0 1 0-2 2 2 0 1 0 0-4h-1a2 2 0 0 0-3.112-1.662A2 2 0 1 0 4.268 5H4a2 2 0 1 0 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="duplicate" xmlns="http://www.w3.org/2000/svg"><path d="M14 10h-3a1 1 0 0 1-1-1V6H8.527A.527.527 0 0 0 8 6.527V13a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-3zm-4-7H8.527c-.18 0-.355.013-.527.04V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2v2H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h4a3 3 0 0 1 3 3zM8.527 4h2.323a.5.5 0 0 1 .35.143l4.65 4.551a.5.5 0 0 1 .15.357V13a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V6.527A2.527 2.527 0 0 1 8.527 4z"/></symbol><symbol viewBox="0 0 16 16" id="earth" xmlns="http://www.w3.org/2000/svg"><path d="M8.7 2.04l-.082.177c.283.223.422.413.417.571-.008.237-.311.057-.444.274-.133.218.038.542-.112.637-.15.096-.398-.386-.479-.46-.054-.049-.166-.257-.336-.625l-.216-.225a.844.844 0 0 0-.418-.035c-.177.038-.075.1-.035.132.04.032.32.037.452.2.132.164.03.224-.05.298-.054.05-.157.062-.31.035H5.952l-.402.398.03.325.229.455.324-.463c.008-.206.058-.342.15-.41.14-.1.342-.15.534-.085.191.066-.057.218.011.271.068.053.204-.098.313-.02.11.08.07.155.104.322.036.167.254.114.398.328.144.215.19.29.147.483-.043.195-.168.26-.305.232-.138-.028-.107-.246-.275-.348-.168-.102-.266-.114-.386-.054-.12.06-.016.129.023.235.04.106.274.321.224.43-.05.107-.108.116-.42 0-.21-.077-.414-.007-.615.212l-.76.722c-.153.715-.3 1.13-.44 1.243-.211.17-.177-.483-.483-.656-.306-.174-.494-.047-.8-.07-.307-.023-.42.65-.38.873a.434.434 0 0 0 .221.321c.236-.141.39-.184.465-.128.11.084-.144.267-.074.425.07.158.314.069.386.283.073.213.084.48-.05.706-.135.227-.275.178-.4.053-.127-.126-.033-.375-.255-.704-.223-.329-.381-.337-.63-.787-.158-.287-.35-.743-.575-1.366a6 6 0 0 0 3.21 7.198l.001-.075c0-.577-.004-.944-.012-1.102-.011-.236-.95-.945-1.104-1.2-.154-.256-.34-.595-.355-.746-.016-.151.185-.232.344-.325.16-.093-.11-.367.028-.626.137-.258.395-.438.496-.356.101.081.058.228.267.333.209.104.077-.213.456-.178.38.035.143.201.252.216.11.016.113-.127.299-.143.186-.015.282.445.471.622.19.178.452.008.611.043.159.034.267.09.402.255.136.166-.03.352.073.557.103.205 1.07.22 1.433.255.364.034.371.011.371.324s-.166.314-.453.507c-.286.193-.166.462-.38.762-.212.3-.316.062-.622.14-.306.077-.413.382-.452.568-.039.186-.386.094-.877.232-.29.082-.429.144-.569.204a6.002 6.002 0 0 0 7.682-4.3c-.094-.384-.18-.63-.258-.74-.213-.297-.36.21-.924.49-.564.278-.57-.288-.81-.49-.16-.133-.212-.44-.158-.92-.005-.478.02-.828.077-1.049.057-.221.126-.543.207-.965.351-.373.606-.572.764-.595.237-.034.336.374.658.3a.315.315 0 0 0 .035-.01 5.993 5.993 0 0 0-.475-.824l-.309-.043a.646.646 0 0 0-.332-.117c-.205-.02-.025.128-.089.24-.064.112-.235.724-.437.685-.201-.039-.204-.374-.17-.668.036-.294-.077-.35-.2-.412-.124-.062-.325-.213-.556-.295-.232-.082-.123-.175-.093-.274.03-.1.208-.015.193-.058-.014-.044-.313-.135-.266-.167.03-.02.2-.02.506.003l.216-.012.293-.163a.58.58 0 0 0-.376-.22c-.233-.036-.513-.034-.73-.142-.205-.103-.458-.36-.643-.638A5.965 5.965 0 0 0 8.7 2.04zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/></symbol><symbol viewBox="0 0 1600 1600" id="ellipsis_v" xmlns="http://www.w3.org/2000/svg"><path d="M1088 1248v192q0 40-28 68t-68 28H800q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28H800q-40 0-68-28t-28-68V736q0-40 28-68t68-28h192q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28H800q-40 0-68-28t-28-68V224q0-40 28-68t68-28h192q40 0 68 28t28 68z"/></symbol><symbol viewBox="0 0 18 18" id="emoji_slightly_smiling_face" xmlns="http://www.w3.org/2000/svg"><path d="M13.29 11.098a4.328 4.328 0 0 1-1.618 2.285c-.79.578-1.68.867-2.672.867-.992 0-1.883-.29-2.672-.867a4.328 4.328 0 0 1-1.617-2.285.721.721 0 0 1 .047-.569.715.715 0 0 1 .445-.369.721.721 0 0 1 .568.047.715.715 0 0 1 .37.445 2.91 2.91 0 0 0 1.084 1.518A2.93 2.93 0 0 0 9 12.75a2.93 2.93 0 0 0 1.775-.58 2.913 2.913 0 0 0 1.084-1.518.711.711 0 0 1 .375-.445.737.737 0 0 1 .575-.047c.195.063.34.186.433.37.094.183.11.372.047.568zM7.5 6c0 .414-.146.768-.44 1.06A1.44 1.44 0 0 1 6 7.5a1.44 1.44 0 0 1-1.06-.44A1.445 1.445 0 0 1 4.5 6c0-.414.146-.768.44-1.06A1.44 1.44 0 0 1 6 4.5c.414 0 .768.146 1.06.44.294.292.44.646.44 1.06zm6 0c0 .414-.146.768-.44 1.06A1.44 1.44 0 0 1 12 7.5a1.44 1.44 0 0 1-1.06-.44A1.445 1.445 0 0 1 10.5 6c0-.414.146-.768.44-1.06A1.44 1.44 0 0 1 12 4.5c.414 0 .768.146 1.06.44.294.292.44.646.44 1.06zm3 3a7.29 7.29 0 0 0-.598-2.912 7.574 7.574 0 0 0-1.6-2.39 7.574 7.574 0 0 0-2.39-1.6A7.29 7.29 0 0 0 9 1.5a7.29 7.29 0 0 0-2.912.598 7.574 7.574 0 0 0-2.39 1.6 7.574 7.574 0 0 0-1.6 2.39A7.29 7.29 0 0 0 1.5 9c0 1.016.2 1.986.598 2.912a7.574 7.574 0 0 0 1.6 2.39 7.574 7.574 0 0 0 2.39 1.6A7.29 7.29 0 0 0 9 16.5a7.29 7.29 0 0 0 2.912-.598 7.574 7.574 0 0 0 2.39-1.6 7.574 7.574 0 0 0 1.6-2.39A7.29 7.29 0 0 0 16.5 9zM18 9a8.804 8.804 0 0 1-1.207 4.518 8.96 8.96 0 0 1-3.275 3.275A8.804 8.804 0 0 1 9 18a8.804 8.804 0 0 1-4.518-1.207 8.96 8.96 0 0 1-3.275-3.275A8.804 8.804 0 0 1 0 9c0-1.633.402-3.139 1.207-4.518a8.96 8.96 0 0 1 3.275-3.275A8.804 8.804 0 0 1 9 0c1.633 0 3.139.402 4.518 1.207a8.96 8.96 0 0 1 3.275 3.275A8.804 8.804 0 0 1 18 9z" fill-rule="evenodd"/></symbol><symbol viewBox="0 0 18 18" id="emoji_smile" xmlns="http://www.w3.org/2000/svg"><path d="M13.29 11.098a4.328 4.328 0 0 1-1.618 2.285c-.79.578-1.68.867-2.672.867-.992 0-1.883-.29-2.672-.867a4.328 4.328 0 0 1-1.617-2.285.721.721 0 0 1 .047-.569.715.715 0 0 1 .445-.369c.195-.062 7.41-.062 7.606 0 .195.063.34.186.433.37.094.183.11.372.047.568zM14 6.37c0 .398-.04.755-.513.755-.473 0-.498-.272-1.237-.272-.74 0-.74.215-1.165.215-.425 0-.585-.3-.585-.698 0-.397.17-.736.513-1.017.341-.281.754-.422 1.237-.422.483 0 .896.14 1.237.422.342.28.513.62.513 1.017zm-6.5 0c0 .398-.04.755-.513.755-.473 0-.498-.272-1.237-.272-.74 0-.74.215-1.165.215-.425 0-.585-.3-.585-.698 0-.397.17-.736.513-1.017.341-.281.754-.422 1.237-.422.483 0 .896.14 1.237.422.342.28.513.62.513 1.017zm9 2.63a7.29 7.29 0 0 0-.598-2.912 7.574 7.574 0 0 0-1.6-2.39 7.574 7.574 0 0 0-2.39-1.6A7.29 7.29 0 0 0 9 1.5a7.29 7.29 0 0 0-2.912.598 7.574 7.574 0 0 0-2.39 1.6 7.574 7.574 0 0 0-1.6 2.39A7.29 7.29 0 0 0 1.5 9c0 1.016.2 1.986.598 2.912a7.574 7.574 0 0 0 1.6 2.39 7.574 7.574 0 0 0 2.39 1.6A7.29 7.29 0 0 0 9 16.5a7.29 7.29 0 0 0 2.912-.598 7.574 7.574 0 0 0 2.39-1.6 7.574 7.574 0 0 0 1.6-2.39A7.29 7.29 0 0 0 16.5 9zM18 9a8.804 8.804 0 0 1-1.207 4.518 8.96 8.96 0 0 1-3.275 3.275A8.804 8.804 0 0 1 9 18a8.804 8.804 0 0 1-4.518-1.207 8.96 8.96 0 0 1-3.275-3.275A8.804 8.804 0 0 1 0 9c0-1.633.402-3.139 1.207-4.518a8.96 8.96 0 0 1 3.275-3.275A8.804 8.804 0 0 1 9 0c1.633 0 3.139.402 4.518 1.207a8.96 8.96 0 0 1 3.275 3.275A8.804 8.804 0 0 1 18 9z" fill-rule="evenodd"/></symbol><symbol viewBox="0 0 18 18" id="emoji_smiley" xmlns="http://www.w3.org/2000/svg"><path d="M13.29 11.098a4.328 4.328 0 0 1-1.618 2.285c-.79.578-1.68.867-2.672.867-.992 0-1.883-.29-2.672-.867a4.328 4.328 0 0 1-1.617-2.285.721.721 0 0 1 .047-.569.715.715 0 0 1 .445-.369c.195-.062 7.41-.062 7.606 0 .195.063.34.186.433.37.094.183.11.372.047.568h.001zM7.5 6c0 .414-.146.768-.44 1.06A1.44 1.44 0 0 1 6 7.5a1.44 1.44 0 0 1-1.06-.44A1.445 1.445 0 0 1 4.5 6c0-.414.146-.768.44-1.06A1.44 1.44 0 0 1 6 4.5c.414 0 .768.146 1.06.44.294.292.44.646.44 1.06zm6 0c0 .414-.146.768-.44 1.06A1.44 1.44 0 0 1 12 7.5a1.44 1.44 0 0 1-1.06-.44A1.445 1.445 0 0 1 10.5 6c0-.414.146-.768.44-1.06A1.44 1.44 0 0 1 12 4.5c.414 0 .768.146 1.06.44.294.292.44.646.44 1.06zm3 3a7.29 7.29 0 0 0-.598-2.912 7.574 7.574 0 0 0-1.6-2.39 7.574 7.574 0 0 0-2.39-1.6A7.29 7.29 0 0 0 9 1.5a7.29 7.29 0 0 0-2.912.598 7.574 7.574 0 0 0-2.39 1.6 7.574 7.574 0 0 0-1.6 2.39A7.29 7.29 0 0 0 1.5 9c0 1.016.2 1.986.598 2.912a7.574 7.574 0 0 0 1.6 2.39 7.574 7.574 0 0 0 2.39 1.6c.92.397 1.91.6 2.912.598a7.29 7.29 0 0 0 2.912-.598 7.574 7.574 0 0 0 2.39-1.6 7.574 7.574 0 0 0 1.6-2.39c.397-.92.6-1.91.598-2.912zM18 9a8.804 8.804 0 0 1-1.207 4.518 8.96 8.96 0 0 1-3.275 3.275A8.804 8.804 0 0 1 9 18a8.804 8.804 0 0 1-4.518-1.207 8.96 8.96 0 0 1-3.275-3.275A8.804 8.804 0 0 1 0 9c0-1.633.402-3.139 1.207-4.518a8.96 8.96 0 0 1 3.275-3.275A8.804 8.804 0 0 1 9 0c1.633 0 3.139.402 4.518 1.207a8.96 8.96 0 0 1 3.275 3.275A8.804 8.804 0 0 1 18 9z"/></symbol><symbol viewBox="0 0 16 16" id="epic" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M14.985 8.044l-.757 2.272a1 1 0 0 1-.949.684H1.618a1 1 0 0 1-.894-1.447l.318-.637A2 2 0 0 0 1.618 9h11.661a2 2 0 0 0 1.706-.956zm0 3l-.757 2.272a1 1 0 0 1-.949.684H1.618a1 1 0 0 1-.894-1.447l.318-.637a2 2 0 0 0 .576.084h11.661a2 2 0 0 0 1.706-.956zM3.618 2h10.995a1 1 0 0 1 .948 1.316l-1.333 4a1 1 0 0 1-.949.684H1.618a1 1 0 0 1-.894-1.447l2-4A1 1 0 0 1 3.618 2zm-.382 4h9.322l.667-2H4.236l-1 2z"/></symbol><symbol viewBox="0 0 16 16" id="external-link" xmlns="http://www.w3.org/2000/svg"><path d="M13.121 4.177l-4.95 4.95a1 1 0 1 1-1.414-1.414l4.95-4.95-1.386-1.386a.5.5 0 0 1 .299-.85l4.709-.524a.5.5 0 0 1 .552.552l-.523 4.71a.5.5 0 0 1-.851.297l-1.386-1.385zM12 8.884a1 1 0 0 1 2 0v4a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3v-8a3 3 0 0 1 3-3h4a1 1 0 1 1 0 2H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-4z"/></symbol><symbol viewBox="0 0 16 16" id="eye" xmlns="http://www.w3.org/2000/svg"><path d="M8 14C4.816 14 2.253 12.284.393 8.981a2 2 0 0 1 0-1.962C2.253 3.716 4.816 2 8 2s5.747 1.716 7.607 5.019a2 2 0 0 1 0 1.962C13.747 12.284 11.184 14 8 14zm0-2c2.41 0 4.338-1.29 5.864-4C12.338 5.29 10.411 4 8 4 5.59 4 3.662 5.29 2.136 8 3.662 10.71 5.589 12 8 12zm0-1a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm1-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="eye-slash" xmlns="http://www.w3.org/2000/svg"><path d="M13.618 2.62L1.62 14.619a1 1 0 0 1-.985-1.668l1.525-1.526C1.516 10.742.926 9.927.393 8.981a2 2 0 0 1 0-1.962C2.253 3.716 4.816 2 8 2c1.074 0 2.076.195 3.006.58l.944-.944a1 1 0 0 1 1.668.985zM8.068 11a3 3 0 0 0 2.931-2.932l-2.931 2.931zm-3.02-2.462a3 3 0 0 1 3.49-3.49l.884-.884A6.044 6.044 0 0 0 8 4C5.59 4 3.662 5.29 2.136 8c.445.79.924 1.46 1.439 2.011l1.473-1.473zm.421 5.06l1.658-1.658c.283.04.575.06.873.06 2.41 0 4.338-1.29 5.864-4a11.023 11.023 0 0 0-1.133-1.664l1.418-1.418a12.799 12.799 0 0 1 1.458 2.1 2 2 0 0 1 0 1.963C13.747 12.284 11.184 14 8 14a7.883 7.883 0 0 1-2.53-.402z"/></symbol><symbol viewBox="0 0 16 16" id="file-addition" xmlns="http://www.w3.org/2000/svg"><path d="M7 7V5a1 1 0 1 1 2 0v2h2a1 1 0 0 1 0 2H9v2a1 1 0 0 1-2 0V9H5a1 1 0 1 1 0-2h2zM3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3z"/></symbol><symbol viewBox="0 0 16 16" id="file-deletion" xmlns="http://www.w3.org/2000/svg"><path d="M3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3zm2 6h6a1 1 0 0 1 0 2H5a1 1 0 1 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="file-modified" xmlns="http://www.w3.org/2000/svg"><path d="M3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3zm5 4a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"/></symbol><symbol viewBox="0 0 16 16" id="filter" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 6v9l-3.724-1.862A.5.5 0 0 1 6 12.691V6L1.854 1.854A.5.5 0 0 1 2.207 1h11.586a.5.5 0 0 1 .353.854L10 6z"/></symbol><symbol viewBox="0 0 16 16" id="folder" xmlns="http://www.w3.org/2000/svg"><path d="M13 3a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a2 2 0 0 1 2-2h3.81a3 3 0 0 1 2.827 1.995L13 3z"/></symbol><symbol viewBox="0 0 16 16" id="folder-o" xmlns="http://www.w3.org/2000/svg"><path d="M13 5l-4.365-.005a2 2 0 0 1-1.882-1.33A1 1 0 0 0 5.81 3H2v9a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm0-2a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a2 2 0 0 1 2-2h3.81a3 3 0 0 1 2.827 1.995L13 3z"/></symbol><symbol viewBox="0 0 16 16" id="folder-open" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M14 6H5.333a2 2 0 0 0-1.664.89l-3.333 5a2 2 0 0 0-.285.662A3.017 3.017 0 0 1 0 12V3a2 2 0 0 1 2-2h2.838a3 3 0 0 1 2.828 2H11a3 3 0 0 1 3 3zM5.333 7h9.53a1 1 0 0 1 .875 1.486l-2.492 4.485A2 2 0 0 1 11.498 14H2a1 1 0 0 1-.832-1.555l3.333-5A1 1 0 0 1 5.333 7z"/></symbol><symbol viewBox="0 0 16 16" id="fork" xmlns="http://www.w3.org/2000/svg"><path d="M9 12.268a2 2 0 1 1-2 0V8.874A4.002 4.002 0 0 1 4 5V3.732a2 2 0 1 1 2 0V5a2 2 0 1 0 4 0V3.732a2 2 0 1 1 2 0V5a4.002 4.002 0 0 1-3 3.874v3.394zM11 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zM5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="geo-nodes" xmlns="http://www.w3.org/2000/svg"><path d="M9.7 13.1l-.2.2c-.7.8-2 .9-2.8.1-.1 0-.1-.1-.1-.1l-.2-.2c-2 .2-3.4.7-3.4 1.4 0 .8 2.2 1.5 5 1.5s5-.7 5-1.5c0-.7-1.4-1.2-3.3-1.4M7.3 12.7c.4.4 1 .3 1.4-.1C11.6 9.5 13 7 13 5.3 13 2.4 10.8 0 8 0S3 2.4 3 5.3C3 7 4.4 9.5 7.3 12.7M8 2c1.6 0 3 1.4 3 3.3 0 1-1 2.8-3 5.2-2-2.4-3-4.2-3-5.2C5 3.4 6.4 2 8 2"/><circle cx="8" cy="5" r="1"/></symbol><symbol viewBox="0 0 16 16" id="git-merge" xmlns="http://www.w3.org/2000/svg"><path d="M11 12.268V5a1 1 0 0 0-1-1v1a.5.5 0 0 1-.8.4l-2.667-2a.5.5 0 0 1 0-.8L9.2.6a.5.5 0 0 1 .8.4v1a3 3 0 0 1 3 3v7.268a2 2 0 1 1-2 0zm-6 0a2 2 0 1 1-2 0V4.732a2 2 0 1 1 2 0v7.536zM4 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 11a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm8 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="group" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M3.048 11.997C-.377 11.975.013 11.782.013 10.56.013 9.235.653 8 4 8c.444 0 .84.022 1.194.062.164.435.426.82.76 1.132-1.786.389-2.721 1.353-2.906 2.803zm2.94-7.222a2.993 2.993 0 0 0-.976 1.95 2 2 0 1 1 .975-1.95zm6.964 7.222c-.185-1.45-1.12-2.414-2.906-2.803.334-.311.596-.697.76-1.132C11.16 8.022 11.556 8 12 8c3.346 0 3.987 1.235 3.987 2.56 0 1.222.39 1.415-3.035 1.437zm-1.964-5.272a2.993 2.993 0 0 0-.976-1.95 2 2 0 1 1 .976 1.95zM8 9a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm0 5c-2.177 0-3.987-.115-3.987-1.44S4.653 10 8 10c3.346 0 3.987 1.235 3.987 2.56S10.177 14 8 14z"/></symbol><symbol viewBox="0 0 16 16" id="history" xmlns="http://www.w3.org/2000/svg"><path d="M2.868 3.24a7 7 0 1 1-.043 9.475 1 1 0 0 1 1.478-1.348 5 5 0 1 0 .124-6.865l.796.645a.5.5 0 0 1-.193.873l-3.232.814a.5.5 0 0 1-.622-.504L1.3 3a.5.5 0 0 1 .814-.37l.754.61zM9 8h1a1 1 0 0 1 0 2H8a.997.997 0 0 1-1-1V6a1 1 0 1 1 2 0v2z"/></symbol><symbol viewBox="0 0 16 16" id="home" xmlns="http://www.w3.org/2000/svg"><path d="M9 13h3v-3H4v3h3v-1a1 1 0 0 1 2 0v1zm5-3v3.659c0 .729-.657 1.341-1.5 1.341h-9c-.843 0-1.5-.612-1.5-1.341V10h-.88C.502 10 0 9.486 0 8.853c0-.307.12-.601.333-.816l6.405-6.463a1.56 1.56 0 0 1 2.374-.052L15.66 8.03c.444.441.455 1.167.024 1.622a1.108 1.108 0 0 1-.804.348H14zM7.95 3.273l-4.595 4.64h9.264l-4.67-4.64z"/></symbol><symbol viewBox="0 0 16 16" id="hook" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1h4zm0 1H6v1a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V4zM7 8a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v2a3 3 0 0 1-3 3v4a2 2 0 1 0 4 0h-.44a.3.3 0 0 1-.25-.466l1.44-2.16a.3.3 0 0 1 .5 0l1.44 2.16a.3.3 0 0 1-.25.466H15a4 4 0 0 1-7 2.646A4 4 0 0 1 1 12H.56a.3.3 0 0 1-.25-.466l1.44-2.16a.3.3 0 0 1 .5 0l1.44 2.16a.3.3 0 0 1-.25.466H3a2 2 0 1 0 4 0V8z"/></symbol><symbol viewBox="0 0 16 16" id="hourglass" xmlns="http://www.w3.org/2000/svg"><path d="M10.331 4.889A2.988 2.988 0 0 0 11 3V2H5v1c0 .362.064.709.182 1.03l5.15.859zM3 14v-1c0-1.78.93-3.342 2.33-4.228.447-.327.67-.582.67-.764 0-.19-.242-.46-.725-.815A4.996 4.996 0 0 1 3 3V2H2a1 1 0 1 1 0-2h12a1 1 0 0 1 0 2h-1v1a4.997 4.997 0 0 1-2.39 4.266c-.407.3-.61.545-.61.734 0 .19.203.434.61.734A4.997 4.997 0 0 1 13 13v1h1a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2h1zm8 0v-1a3 3 0 0 0-6 0v1h6z"/></symbol><symbol viewBox="0 0 38 38" id="image-comment-dark" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle cx="19" cy="19" r="18" fill="#1F78D1"/><path fill="#FFF" fill-rule="nonzero" d="M19 38C8.507 38 0 29.493 0 19S8.507 0 19 0s19 8.507 19 19-8.507 19-19 19zm0-2c9.389 0 17-7.611 17-17S28.389 2 19 2 2 9.611 2 19s7.611 17 17 17zm-6.293-8.293c-.63.63-1.707.184-1.707-.707V15a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3h-7.586l-3.707 3.707zM13 24.586l2.293-2.293A1 1 0 0 1 16 22h8a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1H14a1 1 0 0 0-1 1v9.586z"/></g></symbol><symbol viewBox="0 0 38 38" id="image-comment-light" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle cx="19" cy="19" r="18" fill="#FFF"/><path fill="#1F78D1" fill-rule="nonzero" d="M19 38C8.507 38 0 29.493 0 19S8.507 0 19 0s19 8.507 19 19-8.507 19-19 19zm0-2c9.389 0 17-7.611 17-17S28.389 2 19 2 2 9.611 2 19s7.611 17 17 17zm-6.293-8.293c-.63.63-1.707.184-1.707-.707V15a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3h-7.586l-3.707 3.707zM13 24.586l2.293-2.293A1 1 0 0 1 16 22h8a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1H14a1 1 0 0 0-1 1v9.586z"/></g></symbol><symbol viewBox="0 0 16 16" id="import" xmlns="http://www.w3.org/2000/svg"><path d="M9 8h1a.5.5 0 0 1 .4.8l-2 2.667a.5.5 0 0 1-.8 0L5.6 8.8A.5.5 0 0 1 6 8h1V1a1 1 0 1 1 2 0v7zM0 8a1 1 0 1 1 2 0 6 6 0 1 0 12 0 1 1 0 0 1 2 0A8 8 0 1 1 0 8z"/></symbol><symbol viewBox="0 0 16 16" id="issue-block" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5.803 8a5.97 5.97 0 0 0-.462 1H4.5a.5.5 0 0 1 0-1h1.303zM4.5 5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1zm7.5.083a6.04 6.04 0 0 0-2 0V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2.083a5.96 5.96 0 0 0 .72 2H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h6a3 3 0 0 1 3 3v2.083zm1.121 3.796zM11 16a5 5 0 1 1 0-10 5 5 0 0 1 0 10zm-1.293-2.292a3 3 0 0 0 4.001-4.001l-4.001 4zm-1.415-1.415l4.001-4a3 3 0 0 0-4.001 4.001z"/></symbol><symbol viewBox="0 0 16 16" id="issue-child" xmlns="http://www.w3.org/2000/svg"><path d="M11 8H5v1h1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1h2V7a.997.997 0 0 1 1-1h3V4H4.5a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H9v2h3a.997.997 0 0 1 1 1v2h2a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1h1V8zm-9 3v2h3v-2H2zm9 0v2h3v-2h-3z"/></symbol><symbol viewBox="0 0 16 16" id="issue-close" xmlns="http://www.w3.org/2000/svg"><path d="M7.536 8.657l2.828-2.829a1 1 0 0 1 1.414 1.415l-3.535 3.535a.997.997 0 0 1-1.415 0l-2.12-2.121A1 1 0 0 1 6.12 7.243l1.415 1.414zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"/></symbol><symbol viewBox="0 0 16 16" id="issue-duplicate" xmlns="http://www.w3.org/2000/svg"><path d="M10.874 2H12a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3h-2c-.918 0-1.74-.413-2.29-1.063a3.987 3.987 0 0 0 1.988-.984A1 1 0 0 0 10 14h2a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1h-1V3c0-.345-.044-.68-.126-1zM4 0h3a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4z"/></symbol><symbol viewBox="0 0 16 16" id="issue-external" xmlns="http://www.w3.org/2000/svg"><path d="M11 4a5.99 5.99 0 0 0-2 .341V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h2.528a6.003 6.003 0 0 0 2.705 1.736A2.99 2.99 0 0 1 8 16H4a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h4a3 3 0 0 1 3 3v1zM8.212 8.97l-.568-.876A.25.25 0 0 1 7.66 7.8l.404-.5a.25.25 0 0 1 .284-.076l.938.36c.256-.182.543-.325.85-.42l.323-.988a.25.25 0 0 1 .237-.173h.643a.25.25 0 0 1 .238.173l.321.989c.308.094.595.237.852.418l.937-.359a.25.25 0 0 1 .284.076l.404.5a.25.25 0 0 1 .016.293l-.568.875c.113.297.18.616.192.95l.9.54a.25.25 0 0 1 .114.27l-.145.627a.25.25 0 0 1-.221.192l-1.115.098a3.015 3.015 0 0 1-.512.608l.165 1.18a.25.25 0 0 1-.138.259l-.577.282a.25.25 0 0 1-.29-.051l-.874-.905a3.035 3.035 0 0 1-.608 0l-.875.905a.25.25 0 0 1-.29.05l-.577-.281a.25.25 0 0 1-.138-.26L9 12.254a3.015 3.015 0 0 1-.512-.607l-1.114-.098a.25.25 0 0 1-.222-.192l-.145-.627a.25.25 0 0 1 .115-.27l.899-.54c.012-.334.08-.653.192-.95zm2.806 2.034a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="issue-new" xmlns="http://www.w3.org/2000/svg"><path d="M10 2V1a1 1 0 0 1 2 0v1h1a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0V4H9a1 1 0 1 1 0-2h1zm0 6a1 1 0 0 1 2 0v5a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h1a1 1 0 1 1 0 2H5a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V8z"/></symbol><symbol viewBox="0 0 16 16" id="issue-open" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zm0-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-2a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="issue-open-m" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"/></symbol><symbol viewBox="0 0 16 16" id="issue-parent" xmlns="http://www.w3.org/2000/svg"><path d="M11 11H5v1h1.5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5H3v-2a.997.997 0 0 1 1-1h3V7H5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H9v2h3a.997.997 0 0 1 1 1v2h2.5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5H11v-1zM6 3v2h4V3H6z"/></symbol><symbol viewBox="0 0 16 16" id="issues" xmlns="http://www.w3.org/2000/svg"><path d="M10.458 15.012l.311.055a3 3 0 0 0 3.476-2.433l1.389-7.879A3 3 0 0 0 13.2 1.28L11.23.933a3.002 3.002 0 0 0-.824-.031c.364.59.58 1.28.593 2.02l1.854.328a1 1 0 0 1 .811 1.158l-1.389 7.879a1 1 0 0 1-1.158.81l-.118-.02a3.98 3.98 0 0 1-.541 1.935zM3 0h4a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3z"/></symbol><symbol viewBox="0 0 16 16" id="italic" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5.5 12l2-8H6a1 1 0 1 1 0-2h6a1 1 0 0 1 0 2h-1.5l-2 8H10a1 1 0 0 1 0 2H4a1 1 0 0 1 0-2h1.5z"/></symbol><symbol viewBox="0 0 16 16" id="key" xmlns="http://www.w3.org/2000/svg"><path d="M7.575 6.689a4.002 4.002 0 0 1 6.274-4.86 4 4 0 0 1-4.86 6.274l-2.21 2.21.706.708a1 1 0 1 1-1.414 1.414l-.707-.707-.707.707.707.707a1 1 0 1 1-1.414 1.414l-.707-.707a1 1 0 0 1-1.414-1.414l5.746-5.746zm2.032-.618a2 2 0 1 0 2.828-2.828A2 2 0 0 0 9.607 6.07z"/></symbol><symbol viewBox="0 0 16 16" id="key-2" xmlns="http://www.w3.org/2000/svg"><path d="M5.172 14.157l-.344.344-2.485.133a.462.462 0 0 1-.497-.503l.14-2.24a.599.599 0 0 1 .177-.382l5.155-5.155a4 4 0 1 1 2.828 2.828l-1.439 1.44-1.06-.354-.708.707.354 1.06-.707.708-1.06-.354-.708.707.354 1.06zm6.01-8.839a1 1 0 1 0 1.414-1.414 1 1 0 0 0-1.414 1.414z"/></symbol><symbol viewBox="0 0 16 16" id="label" xmlns="http://www.w3.org/2000/svg"><path d="M11.782 14.718a3 3 0 0 1-4.242 0L1.652 8.829a2 2 0 0 1-.565-1.702l.54-3.703a2 2 0 0 1 1.69-1.69l3.703-.54a2 2 0 0 1 1.703.564l5.888 5.888a3 3 0 0 1 0 4.243l-2.829 2.829zm1.415-5.657L7.309 3.173l-3.703.54-.54 3.702 5.888 5.888a1 1 0 0 0 1.414 0l2.829-2.828a1 1 0 0 0 0-1.414zM5.732 5.525A1 1 0 1 1 7.146 6.94a1 1 0 0 1-1.414-1.414z"/></symbol><symbol viewBox="0 0 16 16" id="labels" xmlns="http://www.w3.org/2000/svg"><path d="M9.424 2.254l2.08-.905a1 1 0 0 1 1.206.326l3.013 4.12a1 1 0 0 1 .16.849l-1.947 7.264a3 3 0 0 1-3.675 2.122l-.5-.135a3.999 3.999 0 0 0 1.082-1.782 1 1 0 0 0 1.16-.722l1.823-6.802-2.258-3.087-.687.299a2 2 0 0 0-.628-.88l-.829-.667zM.377 3.7L4.4.498a1 1 0 0 1 1.25.003L9.627 3.7a1 1 0 0 1 .373.78V13a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V4.482A1 1 0 0 1 .377 3.7zM2 13a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V4.958L5.02 2.561 2 4.964V13zm3-6a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="leave" xmlns="http://www.w3.org/2000/svg"><path d="M11 7V5.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43V9H7a1 1 0 1 1 0-2h4zm-2 6.256a1 1 0 0 1 2 0A2.744 2.744 0 0 1 8.256 16H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h5.19A2.81 2.81 0 0 1 11 2.81a1 1 0 0 1-2 0A.81.81 0 0 0 8.19 2H3a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h5.256c.41 0 .744-.333.744-.744z"/></symbol><symbol viewBox="0 0 16 16" id="level-up" xmlns="http://www.w3.org/2000/svg"><path fill="#2E2E2E" fill-rule="evenodd" d="M7 6h3.489a.5.5 0 0 0 .373-.832L6.374.117a.5.5 0 0 0-.748 0l-4.488 5.05A.5.5 0 0 0 1.51 6H5v7a3 3 0 0 0 3 3h6a1 1 0 0 0 0-2H8a1 1 0 0 1-1-1V6z"/></symbol><symbol viewBox="0 0 16 16" id="license" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12.56 8.9l2.66 4.606a.3.3 0 0 1-.243.45l-1.678.094a.1.1 0 0 0-.078.044l-.953 1.432a.3.3 0 0 1-.51-.016L9.097 10.9a5.994 5.994 0 0 0 3.464-2zm-5.23 2.063L4.707 15.51a.3.3 0 0 1-.51.016l-.953-1.432a.1.1 0 0 0-.078-.044l-1.678-.094a.3.3 0 0 1-.243-.45l2.48-4.297a5.983 5.983 0 0 0 3.607 1.754zM8 10A5 5 0 1 1 8 0a5 5 0 0 1 0 10zm0-2a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-1a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="link" xmlns="http://www.w3.org/2000/svg"><path d="M6.986 3.35l2.12-2.122a4 4 0 0 1 5.657 5.657l-2.828 2.829a4 4 0 0 1-5.657 0 1 1 0 0 1 1.414-1.415 2 2 0 0 0 2.829 0l2.828-2.828a2 2 0 1 0-2.828-2.828l-1.001 1a5.018 5.018 0 0 0-2.534-.294zm2.12 9.192l-2.12 2.121a4 4 0 1 1-5.658-5.656l2.829-2.829a4 4 0 0 1 5.657 0 1 1 0 1 1-1.415 1.414 2 2 0 0 0-2.828 0l-2.828 2.829a2 2 0 1 0 2.828 2.828l1.001-1.001a5.018 5.018 0 0 0 2.534.294z"/></symbol><symbol viewBox="0 0 16 16" id="list-bulleted" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0 5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4-7h10a1 1 0 0 1 0 2H5a1 1 0 1 1 0-2zm0 5h10a1 1 0 0 1 0 2H5a1 1 0 1 1 0-2zm-4 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4-2h10a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="list-numbered" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2h8a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2zm0 5h8a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2zm0 5h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2zM1.156 5v-.828h.816V2.204h-.72v-.636c.432-.084.708-.192.996-.372h.756v2.976h.684V5H1.156zm-.18 5v-.588c.9-.828 1.596-1.464 1.596-1.98 0-.342-.192-.504-.468-.504-.252 0-.444.18-.624.36l-.552-.552c.396-.42.756-.612 1.32-.612.768 0 1.308.492 1.308 1.248 0 .612-.576 1.284-1.092 1.812.192-.024.468-.048.636-.048h.636V10H.976zm1.26 5.072c-.618 0-1.068-.204-1.356-.54l.468-.648c.234.216.51.36.78.36.336 0 .552-.12.552-.36 0-.288-.15-.456-.948-.456v-.72c.636 0 .828-.168.828-.432 0-.228-.138-.348-.396-.348-.252 0-.432.108-.672.312l-.516-.624c.372-.312.768-.492 1.236-.492.84 0 1.38.384 1.38 1.074 0 .366-.204.642-.612.822v.024c.432.132.732.432.732.912 0 .72-.684 1.116-1.476 1.116z"/></symbol><symbol viewBox="0 0 16 16" id="location" xmlns="http://www.w3.org/2000/svg"><path d="M8.755 15.144a1 1 0 0 1-1.51 0C3.748 11.114 2 8.065 2 6a6 6 0 1 1 12 0c0 2.065-1.748 5.113-5.245 9.144zM12 6a4 4 0 1 0-8 0c0 1.314 1.312 3.71 4 6.944C10.688 9.71 12 7.314 12 6zM8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="location-dot" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6.314 13.087C4.382 13.295 3 13.85 3 14.5c0 .828 2.239 1.5 5 1.5s5-.672 5-1.5c0-.65-1.382-1.205-3.314-1.413l-.202.225a2 2 0 0 1-2.968 0l-.202-.225zm2.428-.445a1 1 0 0 1-1.484 0C4.419 9.5 3 7.037 3 5.252 3 2.353 5.239 0 8 0s5 2.352 5 5.253c0 1.784-1.42 4.247-4.258 7.389zM11 5.252C11 3.436 9.634 2 8 2S5 3.435 5 5.253c0 1.027.974 2.824 3 5.203 2.026-2.38 3-4.176 3-5.203zM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="lock" xmlns="http://www.w3.org/2000/svg"><path d="M10 5V4h2v1a3 3 0 0 1 3 3v5a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V8a3 3 0 0 1 3-3V4h2v1h4zM4 7a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H4zm0-3a4 4 0 1 1 8 0h-2a2 2 0 1 0-4 0H4z"/></symbol><symbol viewBox="0 0 16 16" id="lock-open" xmlns="http://www.w3.org/2000/svg"><path d="M4.044 4a4 4 0 0 1 6.99-2.658 1 1 0 1 1-1.495 1.33A2 2 0 0 0 6.044 4a.998.998 0 0 1-.07.367v.701H12a3 3 0 0 1 3 3v5a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3v-5a3 3 0 0 1 2.974-3V4h.07zM4 7.07a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H4z"/></symbol><symbol viewBox="0 0 16 16" id="log" xmlns="http://www.w3.org/2000/svg"><path d="M4 0h8a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4zm1 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3-5h3a1 1 0 0 1 0 2H8a1 1 0 1 1 0-2zm0 3h3a1 1 0 0 1 0 2H8a1 1 0 1 1 0-2zm-3 5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3-2h3a1 1 0 0 1 0 2H8a1 1 0 0 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="mail" xmlns="http://www.w3.org/2000/svg"><path d="M14 5.6L9.338 9.796a2 2 0 0 1-2.676 0L2 5.6V11a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V5.6zM3 2h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zm.212 2L8 8.31 12.788 4H3.212z"/></symbol><symbol viewBox="0 0 16 16" id="menu" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1.143 2h13.714C15.488 2 16 2.448 16 3s-.512 1-1.143 1H1.143C.512 4 0 3.552 0 3s.512-1 1.143-1zm0 5h13.714C15.488 7 16 7.448 16 8s-.512 1-1.143 1H1.143C.512 9 0 8.552 0 8s.512-1 1.143-1zm0 5h13.714c.631 0 1.143.448 1.143 1s-.512 1-1.143 1H1.143C.512 14 0 13.552 0 13s.512-1 1.143-1z"/></symbol><symbol viewBox="0 0 16 16" id="merge-request-close" xmlns="http://www.w3.org/2000/svg"><path d="M9.414 8l1.414 1.414a1 1 0 1 1-1.414 1.414L8 9.414l-1.414 1.414a1 1 0 1 1-1.414-1.414L6.586 8 5.172 6.586a1 1 0 1 1 1.414-1.414L8 6.586l1.414-1.414a1 1 0 1 1 1.414 1.414L9.414 8zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"/></symbol><symbol viewBox="0 0 16 16" id="messages" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.588 8.942l1.173 5.862A1 1 0 0 1 8.78 16H7.22a1 1 0 0 1-.98-1.196l1.172-5.862a3.014 3.014 0 0 0 1.176 0zM8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4zM4.464 2.464L5.88 3.88a3 3 0 0 0 0 4.242L4.464 9.536a5 5 0 0 1 0-7.072zm7.072 7.072L10.12 8.12a3 3 0 0 0 0-4.242l1.415-1.415a5 5 0 0 1 0 7.072zM2.343.343l1.414 1.414a6 6 0 0 0 0 8.486l-1.414 1.414a8 8 0 0 1 0-11.314zm11.314 11.314l-1.414-1.414a6 6 0 0 0 0-8.486L13.657.343a8 8 0 0 1 0 11.314z"/></symbol><symbol viewBox="0 0 16 16" id="mobile-issue-close" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5.657 10.728L2.12 7.192A1 1 0 1 0 .707 8.607l4.243 4.242a.997.997 0 0 0 1.414 0l8.485-8.485a1 1 0 1 0-1.414-1.414l-7.778 7.778z"/></symbol><symbol viewBox="0 0 16 16" id="monitor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 13v1h3a1 1 0 0 1 0 2H3a1 1 0 0 1 0-2h3v-1H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v7a3 3 0 0 1-3 3h-3zM3 2a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3zm5.723 6.416l-2.66-1.773-1.71 1.71a.5.5 0 1 1-.707-.707l2-2a.5.5 0 0 1 .631-.062l2.66 1.773 2.71-2.71a.5.5 0 0 1 .707.707l-3 3a.5.5 0 0 1-.631.062z"/></symbol><symbol viewBox="0 0 16 16" id="more" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 4a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm0 6a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm0 6a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="notifications" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 14H2.435a2 2 0 0 1-1.761-2.947c.962-1.788 1.521-3.065 1.68-3.832.322-1.566.947-5.501 4.65-6.134a1 1 0 1 1 1.994-.024c3.755.528 4.375 4.27 4.761 6.043.188.86.742 2.188 1.661 3.982A2 2 0 0 1 13.64 14H10a2 2 0 1 1-4 0zm5.805-6.468c-.325-1.492-.37-1.674-.61-2.288C10.6 3.716 9.742 3 8.07 3c-1.608 0-2.49.718-3.103 2.197-.28.676-.356.982-.654 2.428-.208 1.012-.827 2.424-1.877 4.375H13.64c-.993-1.937-1.6-3.396-1.835-4.468z"/></symbol><symbol viewBox="0 0 16 16" id="notifications-off" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M13.26 5.089c.243.757.382 1.478.5 2.017.187.86.74 2.188 1.66 3.982A2 2 0 0 1 13.64 14H10a2 2 0 1 1-4 0H4.35l2-2h7.29c-.993-1.937-1.6-3.396-1.835-4.468-.07-.326-.129-.59-.178-.81l1.634-1.633zM10.943 1.75l-1.48 1.48C9.07 3.076 8.612 3 8.069 3c-1.608 0-2.49.718-3.103 2.197-.28.676-.356.982-.654 2.428-.065.317-.17.673-.317 1.073L.45 12.242a1.99 1.99 0 0 1 .224-1.19c.962-1.787 1.521-3.064 1.68-3.831.322-1.566.947-5.501 4.65-6.134a1 1 0 1 1 1.994-.024 4.867 4.867 0 0 1 1.944.688zm2.932-.105a1 1 0 0 1 0 1.415L2.561 14.374a1 1 0 1 1-1.415-1.414L12.46 1.646a1 1 0 0 1 1.414 0z"/></symbol><symbol viewBox="0 0 16 16" id="overview" xmlns="http://www.w3.org/2000/svg"><path d="M2 0h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 2v3h3V2H2zm9-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-3a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 2v3h3V2h-3zM2 9h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2zm0 2v3h3v-3H2zm9-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-3a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2zm0 2v3h3v-3h-3z"/></symbol><symbol viewBox="0 0 16 16" id="pencil" xmlns="http://www.w3.org/2000/svg"><path d="M13.02 1.293l1.414 1.414a1 1 0 0 1 0 1.414L4.119 14.436a1 1 0 0 1-.704.293l-2.407.008L1 12.316a1 1 0 0 1 .293-.71L11.605 1.292a1 1 0 0 1 1.414 0zm-1.416 1.415l-.707.707L12.31 4.83l.707-.707-1.414-1.415zM3.411 13.73l1.123-1.122H3.12v-1.415L2 12.312l.005 1.422 1.406-.005z"/></symbol><symbol viewBox="0 0 16 16" id="pencil-square" xmlns="http://www.w3.org/2000/svg"><path d="M12 9a1 1 0 0 1 2 0v4a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h4a1 1 0 1 1 0 2H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V9zm.778-7.179l1.414 1.415-6.476 6.476a1 1 0 0 1-.498.27l-1.51.325.323-1.512a1 1 0 0 1 .27-.497l6.477-6.477zM15.607.407a1 1 0 0 1 0 1.414l-.708.707-1.414-1.414.707-.707a1 1 0 0 1 1.415 0z"/></symbol><symbol viewBox="0 0 16 16" id="pipeline" xmlns="http://www.w3.org/2000/svg"><path d="M8.969 7.25a2 2 0 1 1-1.938 0A1.002 1.002 0 0 1 7 7V5.083a.2.2 0 0 1 .06-.142l.877-.87a.1.1 0 0 1 .141 0l.864.87A.2.2 0 0 1 9 5.083V7c0 .086-.01.17-.031.25zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zm4.5-4a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm0-3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-2 6a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm0-9a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-5 9a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm0-9a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-2 6a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm0-3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zM8 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="play" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2.765 15.835c-.545.321-1.258.159-1.593-.363A1.075 1.075 0 0 1 1 14.89V1.11C1 .496 1.518 0 2.158 0c.214 0 .424.057.607.165l11.684 6.89c.544.321.714 1.005.38 1.526a1.135 1.135 0 0 1-.38.364l-11.684 6.89z"/></symbol><symbol viewBox="0 0 16 16" id="plus" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7 7H2a1 1 0 1 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2H9V2a1 1 0 1 0-2 0v5z"/></symbol><symbol viewBox="0 0 16 16" id="plus-square" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M9 7V4a1 1 0 1 0-2 0v3H4a1 1 0 1 0 0 2h3v3a1 1 0 0 0 2 0V9h3a1 1 0 0 0 0-2H9zM3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3z"/></symbol><symbol viewBox="0 0 16 16" id="plus-square-o" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7 7V5a1 1 0 1 1 2 0v2h2a1 1 0 0 1 0 2H9v2a1 1 0 0 1-2 0V9H5a1 1 0 1 1 0-2h2zM3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3z"/></symbol><symbol viewBox="0 0 16 16" id="podcast" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.588 8.942l1.173 5.862a1 1 0 0 1-.785 1.177A1 1 0 0 1 8.78 16H7.22a1 1 0 0 1-1-1 1 1 0 0 1 .02-.196l1.172-5.862a3.014 3.014 0 0 0 1.176 0zM8 7.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM4.464 2.464A1 1 0 0 1 5.88 3.88a3 3 0 0 0 0 4.242 1 1 0 0 1-1.415 1.415 5 5 0 0 1 0-7.072zm7.072 7.072A1 1 0 0 1 10.12 8.12a3 3 0 0 0 0-4.242 1 1 0 0 1 1.415-1.415 5 5 0 0 1 0 7.072zM2.343.343a1 1 0 1 1 1.414 1.414 6 6 0 0 0 0 8.486 1 1 0 1 1-1.414 1.414 8 8 0 0 1 0-11.314zm11.314 11.314a1 1 0 1 1-1.414-1.414 6 6 0 0 0 0-8.486A1 1 0 0 1 13.657.343a8 8 0 0 1 0 11.314z"/></symbol><symbol viewBox="0 0 16 16" id="preferences" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5 12h10a1 1 0 0 1 0 2H5a1 1 0 0 1-2 0v-2a1 1 0 0 1 2 0zm-3 0H1a1 1 0 0 0 0 2h1v-2zm11-5h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-2 0V7a1 1 0 0 1 2 0zm-3 0H1a1 1 0 1 0 0 2h9V7zM6 2h9a1 1 0 0 1 0 2H6a1 1 0 1 1-2 0V2a1 1 0 1 1 2 0zM3 2H1a1 1 0 1 0 0 2h2V2z"/></symbol><symbol viewBox="0 0 16 16" id="profile" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zm-4.274-3.404C4.412 9.709 5.694 9 8 9c2.313 0 3.595.7 4.28 1.586A4.997 4.997 0 0 1 8 13a4.997 4.997 0 0 1-4.274-2.404zM8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="project" xmlns="http://www.w3.org/2000/svg"><path d="M8.462 2.177l-.038.044a.505.505 0 0 0 .038-.044zm-.787 0a.5.5 0 0 0 .038.043l-.038-.043zM3.706 7h8.725L8.069 2.585 3.706 7zM7 13.369V12a1 1 0 0 1 2 0v1.369h3V9H4v4.369h3zM14 9v4.836c0 .833-.657 1.533-1.5 1.533h-9c-.843 0-1.5-.7-1.5-1.533V9h-.448a1.1 1.1 0 0 1-.783-1.873L6.934.887a1.5 1.5 0 0 1 2.269 0l6.165 6.24A1.1 1.1 0 0 1 14.585 9H14z"/></symbol><symbol viewBox="0 0 16 16" id="push-rules" xmlns="http://www.w3.org/2000/svg"><path d="M6.268 9a2 2 0 0 1 3.464 0H11a1 1 0 0 1 0 2H9.732a2 2 0 0 1-3.464 0H5a1 1 0 0 1 0-2h1.268zM7 2H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1h-1v3.515a.3.3 0 0 1-.434.268l-1.432-.716a.3.3 0 0 0-.268 0l-1.432.716A.3.3 0 0 1 7 5.515V2zM4 0h8a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm4 11a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="question" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm-1.46-5.602h2.233a3.97 3.97 0 0 1 .051-.558c.029-.17.073-.326.133-.469.06-.143.14-.28.242-.41.102-.13.228-.263.38-.399.26-.24.504-.467.733-.683a5.03 5.03 0 0 0 .598-.668c.17-.23.302-.477.399-.742a2.66 2.66 0 0 0 .144-.907c0-.505-.083-.95-.25-1.335a2.55 2.55 0 0 0-.723-.97 3.2 3.2 0 0 0-1.152-.589 5.441 5.441 0 0 0-1.531-.2c-.516 0-.998.063-1.445.188a3.19 3.19 0 0 0-1.168.59c-.331.268-.594.61-.79 1.027-.195.417-.295.917-.3 1.5h2.64c.006-.224.04-.416.102-.578.062-.161.142-.293.238-.394a.921.921 0 0 1 .332-.227 1.04 1.04 0 0 1 .39-.074c.34 0 .593.095.763.285.169.19.254.488.254.895 0 .328-.106.63-.317.906-.21.276-.499.565-.863.867-.214.182-.39.374-.531.574-.141.2-.253.42-.336.657a3.656 3.656 0 0 0-.176.777 7.89 7.89 0 0 0-.05.937zm-.321 2.375c0 .188.035.362.105.524.07.161.17.3.301.418.13.117.284.21.46.277.178.068.376.102.595.102.218 0 .416-.034.593-.102.178-.068.331-.16.461-.277a1.2 1.2 0 0 0 .301-.418c.07-.162.106-.336.106-.524a1.3 1.3 0 0 0-.106-.523 1.2 1.2 0 0 0-.3-.418 1.461 1.461 0 0 0-.462-.277 1.651 1.651 0 0 0-.593-.102c-.22 0-.417.034-.594.102a1.46 1.46 0 0 0-.461.277 1.2 1.2 0 0 0-.3.418 1.284 1.284 0 0 0-.106.523z"/></symbol><symbol viewBox="0 0 16 16" id="question-o" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zm-.778-4.151c0-.301.014-.575.044-.82a3.2 3.2 0 0 1 .154-.68c.073-.208.17-.4.294-.575.123-.176.278-.343.465-.503a4.81 4.81 0 0 0 .755-.758c.185-.242.277-.506.277-.793 0-.356-.074-.617-.222-.783-.148-.166-.37-.25-.667-.25a.92.92 0 0 0-.342.065.806.806 0 0 0-.29.199 1.04 1.04 0 0 0-.209.345 1.5 1.5 0 0 0-.088.506H5.082c.005-.51.092-.948.263-1.313.171-.364.401-.664.69-.899.29-.234.63-.406 1.023-.516a4.66 4.66 0 0 1 1.264-.164c.497 0 .944.058 1.34.174.397.117.733.289 1.008.517.276.227.487.51.633.847.146.337.218.727.218 1.17 0 .295-.042.56-.126.792a2.52 2.52 0 0 1-.349.65 4.4 4.4 0 0 1-.523.584c-.2.19-.414.389-.642.598a2.73 2.73 0 0 0-.332.349c-.089.114-.16.233-.212.359a1.868 1.868 0 0 0-.116.41 3.39 3.39 0 0 0-.044.489H7.222zm-.28 2.078c0-.164.03-.317.092-.458a1.05 1.05 0 0 1 .263-.366c.114-.103.248-.183.403-.243a1.45 1.45 0 0 1 .52-.089c.191 0 .364.03.52.09.154.059.289.14.403.242.114.103.201.224.263.366.061.141.092.294.092.458 0 .164-.03.316-.092.458a1.05 1.05 0 0 1-.263.365 1.278 1.278 0 0 1-.404.243 1.43 1.43 0 0 1-.52.089c-.19 0-.364-.03-.519-.089-.155-.06-.29-.14-.403-.243a1.05 1.05 0 0 1-.263-.365 1.135 1.135 0 0 1-.093-.458z"/></symbol><symbol viewBox="0 0 16 16" id="quote" xmlns="http://www.w3.org/2000/svg"><path d="M15 3v8a3 3 0 0 1-3 3 1 1 0 0 1 0-2 1 1 0 0 0 1-1V9h-2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h3a1 1 0 0 1 1 1zM7 3v8a3 3 0 0 1-3 3 1 1 0 0 1 0-2 1 1 0 0 0 1-1V9H3a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h3a1 1 0 0 1 1 1z"/></symbol><symbol viewBox="0 0 16 16" id="redo" xmlns="http://www.w3.org/2000/svg"><path d="M4.625 4.423A4.897 4.897 0 0 1 8.079 3c2.73 0 4.944 2.239 4.944 5s-2.214 5-4.944 5c-1.41 0-2.723-.6-3.655-1.633a.98.98 0 0 0-1.397-.066 1.008 1.008 0 0 0-.064 1.413A6.87 6.87 0 0 0 8.079 15C11.9 15 15 11.866 15 8s-3.099-7-6.921-7A6.866 6.866 0 0 0 3.08 3.158L1.833 2.137a.49.49 0 0 0-.695.074.504.504 0 0 0-.11.311L1 7.26a.497.497 0 0 0 .6.492l4.576-1.013a.5.5 0 0 0 .206-.877L4.625 4.423z"/></symbol><symbol viewBox="0 0 16 16" id="remove" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2 3a1 1 0 1 1 0-2h12a1 1 0 0 1 0 2v10a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V3zm3-2a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1H5zM4 3v10a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V3H4zm2.5 2a.5.5 0 0 1 .5.5v6a.5.5 0 1 1-1 0v-6a.5.5 0 0 1 .5-.5zm3 0a.5.5 0 0 1 .5.5v6a.5.5 0 1 1-1 0v-6a.5.5 0 0 1 .5-.5z"/></symbol><symbol viewBox="0 0 16 16" id="repeat" xmlns="http://www.w3.org/2000/svg"><path d="M11.375 4.423A4.897 4.897 0 0 0 7.921 3c-2.73 0-4.944 2.239-4.944 5s2.214 5 4.944 5c1.41 0 2.723-.6 3.655-1.633a.98.98 0 0 1 1.397-.066c.403.373.432 1.005.064 1.413A6.87 6.87 0 0 1 7.921 15C4.1 15 1 11.866 1 8s3.099-7 6.921-7c1.915 0 3.706.792 4.999 2.158l1.247-1.021a.49.49 0 0 1 .695.074c.07.088.11.198.11.311L15 7.26a.497.497 0 0 1-.6.492L9.824 6.739a.5.5 0 0 1-.206-.877l1.757-1.439z"/></symbol><symbol viewBox="0 0 16 16" id="retry" xmlns="http://www.w3.org/2000/svg"><path d="M4.114 6.958a4 4 0 0 0 5.283 4.775 1 1 0 1 1 .712 1.87A6 6 0 0 1 2.182 6.44l-.741-.2a.5.5 0 0 1-.12-.915l2.195-1.268a.5.5 0 0 1 .683.183l1.268 2.196a.5.5 0 0 1-.563.733l-.79-.212zm7.777 2.084a4 4 0 0 0-5.284-4.775 1 1 0 0 1-.712-1.87 6 6 0 0 1 7.927 7.162l.742.2a.5.5 0 0 1 .12.915l-2.196 1.268a.5.5 0 0 1-.683-.183l-1.267-2.196a.5.5 0 0 1 .562-.733l.79.212z"/></symbol><symbol viewBox="0 0 16 16" id="scale" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M13.99 9a.792.792 0 0 0-.078-.231L13 7l-.912 1.769a.791.791 0 0 0-.077.231h1.978zm-10 0a.792.792 0 0 0-.078-.231L3 7l-.912 1.769A.791.791 0 0 0 2.011 9h1.978zM2 0h12a1 1 0 0 1 0 2H2a1 1 0 1 1 0-2zm3 14h6a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2zM8 4a1 1 0 0 1 1 1v9H7V5a1 1 0 0 1 1-1zm-4.53-.714l2.265 4.735c.68 1.42.006 3.091-1.504 3.73A3.161 3.161 0 0 1 3 12c-1.657 0-3-1.263-3-2.821 0-.4.09-.794.264-1.158L2.53 3.286a.53.53 0 0 1 .94 0zm10 0l2.265 4.735c.68 1.42.006 3.091-1.504 3.73A3.161 3.161 0 0 1 13 12c-1.657 0-3-1.263-3-2.821 0-.4.09-.794.264-1.158l2.266-4.735a.53.53 0 0 1 .94 0z"/></symbol><symbol viewBox="0 0 16 16" id="screen-full" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M14 14v-2a1 1 0 0 1 2 0v3a.997.997 0 0 1-1 1h-3a1 1 0 0 1 0-2h2zM2 14v-2a1 1 0 0 0-2 0v3a1 1 0 0 0 1 1h3a1 1 0 0 0 0-2H2zM15.707.293A.997.997 0 0 1 16 1v3a1 1 0 0 1-2 0V2h-2a1 1 0 0 1 0-2h3c.276 0 .526.112.707.293zM2 2v2a1 1 0 1 1-2 0V1a.997.997 0 0 1 1-1h3a1 1 0 1 1 0 2H2zm4 4h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z"/></symbol><symbol viewBox="0 0 16 16" id="screen-normal" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M3 3V1a1 1 0 1 1 2 0v3a.997.997 0 0 1-1 1H1a1 1 0 1 1 0-2h2zm10 0h2a1 1 0 0 1 0 2h-3a.997.997 0 0 1-1-1V1a1 1 0 0 1 2 0v2zM3 13H1a1 1 0 0 1 0-2h3a.997.997 0 0 1 1 1v3a1 1 0 0 1-2 0v-2zm10 0v2a1 1 0 0 1-2 0v-3a.997.997 0 0 1 1-1h3a1 1 0 0 1 0 2h-2zM6.5 7h3a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/></symbol><symbol viewBox="0 0 12 16" id="scroll_down" xmlns="http://www.w3.org/2000/svg"><path class="fbfirst-triangle" d="M1.048 14.155a.508.508 0 0 0-.32.105c-.091.07-.136.154-.136.25v.71c0 .095.045.178.135.249.09.07.197.105.321.105h10.043a.51.51 0 0 0 .321-.105c.09-.07.136-.154.136-.25v-.71c0-.095-.045-.178-.136-.249a.508.508 0 0 0-.32-.105"/><path class="fbsecond-triangle" d="M.687 8.027c-.09-.087-.122-.16-.093-.22.028-.06.104-.09.228-.09h10.5c.123 0 .2.03.228.09.029.06-.002.133-.093.22L6.393 12.91a.458.458 0 0 1-.136.089h-.37a.626.626 0 0 1-.136-.09"/><path class="fbthird-triangle" d="M.687 1.027C.597.94.565.867.594.807c.028-.06.104-.09.228-.09h10.5c.123 0 .2.03.228.09.029.06-.002.133-.093.22L6.393 5.91a.458.458 0 0 1-.136.09h-.37a.626.626 0 0 1-.136-.09"/></symbol><symbol viewBox="0 0 12 16" id="scroll_up" xmlns="http://www.w3.org/2000/svg"><path d="M1.048 1.845a.508.508 0 0 1-.32-.105c-.091-.07-.136-.154-.136-.25V.78c0-.095.045-.178.135-.249a.508.508 0 0 1 .321-.105h10.043a.51.51 0 0 1 .321.105c.09.07.136.154.136.25v.71c0 .095-.045.178-.136.249a.508.508 0 0 1-.32.105M.687 7.973c-.09.087-.122.16-.093.22.028.06.104.09.228.09h10.5c.123 0 .2-.03.228-.09.029-.06-.002-.133-.093-.22L6.393 3.09A.458.458 0 0 0 6.257 3h-.37a.626.626 0 0 0-.136.09M.687 14.973c-.09.087-.122.16-.093.22.028.06.104.09.228.09h10.5c.123 0 .2-.03.228-.09.029-.06-.002-.133-.093-.22L6.393 10.09a.458.458 0 0 0-.136-.09h-.37a.626.626 0 0 0-.136.09"/></symbol><symbol viewBox="0 0 16 16" id="search" xmlns="http://www.w3.org/2000/svg"><path d="M8.853 8.854a3.5 3.5 0 1 0-4.95-4.95 3.5 3.5 0 0 0 4.95 4.95zm.207 2.328a5.5 5.5 0 1 1 2.121-2.121l3.329 3.328a1.5 1.5 0 0 1-2.121 2.121L9.06 11.182z"/></symbol><symbol viewBox="0 0 16 16" id="settings" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2.415 5.803L1.317 4.084A.5.5 0 0 1 1.35 3.5l.805-.994a.5.5 0 0 1 .564-.153l1.878.704a5.975 5.975 0 0 1 1.65-.797L6.885.342A.5.5 0 0 1 7.36 0h1.28a.5.5 0 0 1 .474.342l.639 1.918a5.97 5.97 0 0 1 1.65.797l1.877-.704a.5.5 0 0 1 .565.153l.805.994a.5.5 0 0 1 .032.584l-1.097 1.719c.217.551.354 1.143.399 1.76l1.731 1.058a.5.5 0 0 1 .227.54l-.288 1.246a.5.5 0 0 1-.44.385l-2.008.19a6.026 6.026 0 0 1-1.142 1.431l.265 1.995a.5.5 0 0 1-.277.516l-1.15.56a.5.5 0 0 1-.576-.1l-1.424-1.452a6.047 6.047 0 0 1-1.804 0l-1.425 1.453a.5.5 0 0 1-.576.1l-1.15-.561a.5.5 0 0 1-.276-.516l.265-1.995a6.026 6.026 0 0 1-1.143-1.43l-2.008-.191a.5.5 0 0 1-.44-.385L.058 9.16a.5.5 0 0 1 .226-.539l1.732-1.058a5.968 5.968 0 0 1 .399-1.76zM8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/></symbol><symbol viewBox="0 0 16 16" id="shield" xmlns="http://www.w3.org/2000/svg"><path d="M4 0h8c1.657 0 3 1.373 3 3.067v7.346c0 1.065-.54 2.053-1.426 2.611l-4 2.52a2.944 2.944 0 0 1-3.148 0l-4-2.52A3.083 3.083 0 0 1 1 10.414V3.066C1 1.373 2.343 0 4 0zm0 2.045c-.552 0-1 .457-1 1.022v7.346c0 .355.18.685.475.87l4 2.52a.981.981 0 0 0 1.05 0l4-2.52c.295-.185.475-.515.475-.87V3.067c0-.565-.448-1.022-1-1.022H4zm0 1.533c0-.282.224-.511.5-.511h4V12.1a.52.52 0 0 1-.069.258.494.494 0 0 1-.684.183l-3.5-2.098a.513.513 0 0 1-.247-.44V3.577z"/></symbol><symbol viewBox="0 0 16 16" id="slight-frown" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zm-2.163-3.275a2.499 2.499 0 0 1 4.343.03.5.5 0 0 1-.871.49 1.5 1.5 0 0 0-2.607-.018.5.5 0 1 1-.865-.502zM5 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm6 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="slight-smile" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zM5 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm6 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-5.163 2.254a.5.5 0 1 1 .865-.502 1.499 1.499 0 0 0 2.607-.018.5.5 0 1 1 .871.49 2.499 2.499 0 0 1-4.343.03z"/></symbol><symbol viewBox="0 0 16 16" id="smile" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zM6.18 6.27a.5.5 0 0 1-.873.487.5.5 0 0 0-.872-.003.5.5 0 1 1-.87-.495 1.5 1.5 0 0 1 2.616.012zm6 0a.5.5 0 1 1-.873.487.5.5 0 0 0-.872-.003.5.5 0 1 1-.87-.495 1.5 1.5 0 0 1 2.616.012zM5 9a3 3 0 0 0 6 0H5z"/></symbol><symbol viewBox="0 0 16 16" id="smiley" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zM5 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm6 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM5 9h6a3 3 0 0 1-6 0z"/></symbol><symbol viewBox="0 0 16 16" id="snippet" xmlns="http://www.w3.org/2000/svg"><path d="M10.67 9.31a3.001 3.001 0 0 1 2.062 5.546 3 3 0 0 1-3.771-4.559 1.007 1.007 0 0 1-.095-.137l-4.5-7.794a1 1 0 0 1 1.732-1l4.5 7.794c.028.05.052.1.071.15zm-3.283.35l-.289.5c-.028.05-.06.095-.095.137a3.001 3.001 0 0 1-3.77 4.56A3 3 0 0 1 5.294 9.31c.02-.051.043-.102.071-.15l.866-1.5 1.155 2zm2.31-4l-1.156-2 1.325-2.294a1 1 0 0 1 1.732 1L9.696 5.66zm-5.465 7.464a1 1 0 1 0 1-1.732 1 1 0 0 0-1 1.732zm7.5 0a1 1 0 1 0-1-1.732 1 1 0 0 0 1 1.732z"/></symbol><symbol viewBox="0 0 16 16" id="spam" xmlns="http://www.w3.org/2000/svg"><path d="M8.75.433l5.428 3.134a1.5 1.5 0 0 1 .75 1.299v6.268a1.5 1.5 0 0 1-.75 1.299L8.75 15.567a1.5 1.5 0 0 1-1.5 0l-5.428-3.134a1.5 1.5 0 0 1-.75-1.299V4.866a1.5 1.5 0 0 1 .75-1.299L7.25.433a1.5 1.5 0 0 1 1.5 0zM3.072 5.155v5.69L8 13.691l4.928-2.846v-5.69L8 2.309 3.072 5.155zM8 4a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0V5a1 1 0 0 1 1-1zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 14 14" id="spinner" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle cx="7" cy="7" r="6" stroke="#000" stroke-opacity=".1" stroke-width="2"/><path fill="#000" fill-opacity=".1" fill-rule="nonzero" d="M7 0a7 7 0 0 1 7 7h-2a5 5 0 0 0-5-5V0z"/></g></symbol><symbol viewBox="0 0 16 16" id="star" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7.609 14.394l-3.465 1.473a1 1 0 0 1-1.39-.989l.276-4.024a1 1 0 0 0-.219-.694L.303 7.037A1 1 0 0 1 .83 5.443l3.715-.964a1 1 0 0 0 .609-.457L7.14.682a1 1 0 0 1 1.72 0l1.985 3.34a1 1 0 0 0 .609.457l3.715.964a1 1 0 0 1 .528 1.594L13.19 10.16a1 1 0 0 0-.219.694l.275 4.024a1 1 0 0 1-1.389.989l-3.465-1.473a1 1 0 0 0-.782 0z"/></symbol><symbol viewBox="0 0 16 16" id="star-o" xmlns="http://www.w3.org/2000/svg"><path d="M10.975 10.99a3 3 0 0 1 .655-2.083l1.54-1.916-2.219-.576a3 3 0 0 1-1.825-1.37L8 3.15 6.874 5.044a3 3 0 0 1-1.825 1.371l-2.218.576 1.54 1.916a3 3 0 0 1 .654 2.083l-.165 2.4 1.965-.836a3 3 0 0 1 2.348 0l1.965.836-.164-2.399zM7.61 14.394l-3.465 1.473a1 1 0 0 1-1.39-.989l.276-4.024a1 1 0 0 0-.219-.694L.303 7.037A1 1 0 0 1 .83 5.443l3.715-.964a1 1 0 0 0 .609-.457L7.14.682a1 1 0 0 1 1.72 0l1.985 3.34a1 1 0 0 0 .609.457l3.715.964a1 1 0 0 1 .528 1.594L13.19 10.16a1 1 0 0 0-.219.694l.275 4.024a1 1 0 0 1-1.389.989l-3.465-1.473a1 1 0 0 0-.782 0z"/></symbol><symbol viewBox="0 0 14 14" id="status_canceled" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M5.2 3.8l4.9 4.9c.2.2.2.5 0 .7l-.7.7c-.2.2-.5.2-.7 0L3.8 5.2c-.2-.2-.2-.5 0-.7l.7-.7c.2-.2.5-.2.7 0"/></g></symbol><symbol viewBox="0 0 22 22" id="status_canceled_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M8.171 5.971l7.7 7.7a.76.76 0 0 1 0 1.1l-1.1 1.1a.76.76 0 0 1-1.1 0l-7.7-7.7a.76.76 0 0 1 0-1.1l1.1-1.1a.76.76 0 0 1 1.1 0"/></symbol><symbol viewBox="0 0 16 16" id="status_closed" xmlns="http://www.w3.org/2000/svg"><path d="M7.536 8.657l2.828-2.83a1 1 0 0 1 1.414 1.416l-3.535 3.535a1 1 0 0 1-1.415.001l-2.12-2.12a1 1 0 1 1 1.413-1.415zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"/></symbol><symbol viewBox="0 0 14 14" id="status_created" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><circle cx="7" cy="7" r="3.25"/></g></symbol><symbol viewBox="0 0 22 22" id="status_created_borderless" xmlns="http://www.w3.org/2000/svg"><circle cx="11" cy="11" r="5.107"/></symbol><symbol viewBox="0 0 14 14" id="status_failed" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M7 5.969L5.599 4.568a.29.29 0 0 0-.413.004l-.614.614a.294.294 0 0 0-.004.413L5.968 7l-1.4 1.401a.29.29 0 0 0 .004.413l.614.614c.113.114.3.117.413.004L7 8.032l1.401 1.4a.29.29 0 0 0 .413-.004l.614-.614a.294.294 0 0 0 .004-.413L8.032 7l1.4-1.401a.29.29 0 0 0-.004-.413l-.614-.614a.294.294 0 0 0-.413-.004L7 5.968z"/></g></symbol><symbol viewBox="0 0 22 22" id="status_failed_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M11 9.38L8.798 7.178a.455.455 0 0 0-.65.006l-.964.965a.462.462 0 0 0-.006.65L9.38 11l-2.202 2.202a.455.455 0 0 0 .006.65l.965.964a.462.462 0 0 0 .65.006L11 12.62l2.202 2.202a.455.455 0 0 0 .65-.006l.964-.965a.462.462 0 0 0 .006-.65L12.62 11l2.202-2.202a.455.455 0 0 0-.006-.65l-.965-.964a.462.462 0 0 0-.65-.006L11 9.38z"/></symbol><symbol viewBox="0 0 14 14" id="status_manual" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M10.5 7.63V6.37l-.787-.13c-.044-.175-.132-.349-.263-.61l.481-.652-.918-.913-.657.478a2.346 2.346 0 0 0-.612-.26L7.656 3.5H6.388l-.132.783c-.219.043-.394.13-.612.26l-.657-.478-.918.913.437.652c-.131.218-.175.392-.262.61l-.744.086v1.261l.787.13c.044.218.132.392.263.61l-.438.651.92.913.655-.434c.175.086.394.173.613.26l.131.783h1.313l.131-.783c.219-.043.394-.13.613-.26l.656.478.918-.913-.48-.652c.13-.218.218-.435.262-.61l.656-.13zM7 8.283a1.285 1.285 0 0 1-1.313-1.305c0-.739.57-1.304 1.313-1.304.744 0 1.313.565 1.313 1.304 0 .74-.57 1.305-1.313 1.305z"/></g></symbol><symbol viewBox="0 0 22 22" id="status_manual_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M16.5 11.99v-1.98l-1.238-.206c-.068-.273-.206-.546-.412-.956l.756-1.025-1.444-1.435-1.03.752a3.686 3.686 0 0 0-.963-.41L12.03 5.5h-1.994l-.206 1.23c-.343.068-.618.205-.962.41l-1.031-.752-1.444 1.435.687 1.025c-.206.341-.275.615-.412.956L5.5 9.941v1.981l1.237.205c.07.342.207.615.413.957l-.688 1.025 1.444 1.434 1.032-.683c.274.137.618.274.962.41l.206 1.23h2.063l.206-1.23c.344-.068.619-.205.963-.41l1.03.752 1.444-1.435-.756-1.025c.207-.341.344-.683.413-.956l1.031-.205zM11 13.017c-1.169 0-2.063-.889-2.063-2.05 0-1.162.894-2.05 2.063-2.05s2.063.888 2.063 2.05c0 1.161-.894 2.05-2.063 2.05z"/></symbol><symbol viewBox="0 0 22 22" id="status_notfound_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M12.822 11.29c.816-.581 1.421-1.348 1.683-2.322.603-2.243-.973-4.553-3.53-4.553-1.15 0-2.085.41-2.775 1.089-.42.413-.672.835-.8 1.167a1.179 1.179 0 0 0 2.2.847c.016-.043.1-.184.252-.334.264-.259.613-.412 1.123-.412.938 0 1.47.78 1.254 1.584-.105.39-.37.726-.773 1.012a3.25 3.25 0 0 1-.945.47 1.179 1.179 0 0 0-.874 1.138v2.234a1.179 1.179 0 1 0 2.358 0v-1.43a5.9 5.9 0 0 0 .827-.492z"/><ellipse cx="10.825" cy="16.711" rx="1.275" ry="1.322"/></symbol><symbol viewBox="0 0 14 14" id="status_open" xmlns="http://www.w3.org/2000/svg"><path d="M0 7c0-3.866 3.142-7 7-7 3.866 0 7 3.142 7 7 0 3.866-3.142 7-7 7-3.866 0-7-3.142-7-7z"/><path d="M1 7c0 3.309 2.69 6 6 6 3.309 0 6-2.69 6-6 0-3.309-2.69-6-6-6-3.309 0-6 2.69-6 6z" fill="#FFF"/><path d="M7 9.219a2.218 2.218 0 1 0 0-4.436A2.218 2.218 0 0 0 7 9.22zm0 1.12a3.338 3.338 0 1 1 0-6.676 3.338 3.338 0 0 1 0 6.676z"/></symbol><symbol viewBox="0 0 14 14" id="status_pending" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M4.7 5.3c0-.2.1-.3.3-.3h.9c.2 0 .3.1.3.3v3.4c0 .2-.1.3-.3.3H5c-.2 0-.3-.1-.3-.3V5.3m3 0c0-.2.1-.3.3-.3h.9c.2 0 .3.1.3.3v3.4c0 .2-.1.3-.3.3H8c-.2 0-.3-.1-.3-.3V5.3"/></g></symbol><symbol viewBox="0 0 22 22" id="status_pending_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M7.386 8.329c0-.315.157-.472.471-.472h1.414c.315 0 .472.157.472.472v5.342c0 .315-.157.472-.472.472H7.857c-.314 0-.471-.157-.471-.472V8.33m4.714 0c0-.315.157-.472.471-.472h1.415c.314 0 .471.157.471.472v5.342c0 .315-.157.472-.471.472H12.57c-.314 0-.471-.157-.471-.472V8.33"/></symbol><symbol viewBox="0 0 14 14" id="status_running" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M7 3c2.2 0 4 1.8 4 4s-1.8 4-4 4c-1.3 0-2.5-.7-3.3-1.7L7 7V3"/></g></symbol><symbol viewBox="0 0 22 22" id="status_running_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M11 4.714c3.457 0 6.286 2.829 6.286 6.286 0 3.457-2.829 6.286-6.286 6.286-2.043 0-3.929-1.1-5.186-2.672L11 11V4.714"/></symbol><symbol viewBox="0 0 14 14" id="status_skipped" xmlns="http://www.w3.org/2000/svg"><path d="M7 14A7 7 0 1 1 7 0a7 7 0 0 1 0 14z"/><path d="M7 13A6 6 0 1 0 7 1a6 6 0 0 0 0 12z" fill="#FFF"/><path d="M6.415 7.04L4.579 5.203a.295.295 0 0 1 .004-.416l.349-.349a.29.29 0 0 1 .416-.004l2.214 2.214a.289.289 0 0 1 .019.021l.132.133c.11.11.108.291 0 .398L5.341 9.573a.282.282 0 0 1-.398 0l-.331-.331a.285.285 0 0 1 0-.399L6.415 7.04zm2.54 0L7.119 5.203a.295.295 0 0 1 .004-.416l.349-.349a.29.29 0 0 1 .416-.004l2.214 2.214a.289.289 0 0 1 .019.021l.132.133c.11.11.108.291 0 .398L7.881 9.573a.282.282 0 0 1-.398 0l-.331-.331a.285.285 0 0 1 0-.399L8.955 7.04z"/></symbol><symbol viewBox="0 0 22 22" id="status_skipped_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M14.072 11.063l-2.82 2.82a.46.46 0 0 0-.001.652l.495.495a.457.457 0 0 0 .653-.001l3.7-3.7a.46.46 0 0 0 .001-.653l-.196-.196a.453.453 0 0 0-.03-.033l-3.479-3.479a.464.464 0 0 0-.654.007l-.548.548a.463.463 0 0 0-.007.654l2.886 2.886z"/><path d="M10.08 11.063l-2.819 2.82a.46.46 0 0 0-.002.652l.496.495a.457.457 0 0 0 .652-.001l3.7-3.7a.46.46 0 0 0 .002-.653l-.196-.196a.453.453 0 0 0-.03-.033l-3.48-3.479a.464.464 0 0 0-.653.007l-.548.548a.463.463 0 0 0-.007.654l2.886 2.886z"/></symbol><symbol viewBox="0 0 14 14" id="status_success" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M6.278 7.697L5.045 6.464a.296.296 0 0 0-.42-.002l-.613.614a.298.298 0 0 0 .002.42l1.91 1.909a.5.5 0 0 0 .703.005l.265-.265L9.997 6.04a.291.291 0 0 0-.009-.408l-.614-.614a.29.29 0 0 0-.408-.009L6.278 7.697z"/></g></symbol><symbol viewBox="0 0 22 22" id="status_success_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M9.866 12.095l-1.95-1.95a.462.462 0 0 0-.647.01l-.964.964a.46.46 0 0 0-.01.646l3.013 3.014a.787.787 0 0 0 1.106.008l.425-.425 4.854-4.853a.462.462 0 0 0 .002-.659l-.964-.964a.468.468 0 0 0-.658.002l-4.207 4.207z"/></symbol><symbol viewBox="0 0 14 14" id="status_success_solid" xmlns="http://www.w3.org/2000/svg"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7zm6.278.697L5.045 6.464a.296.296 0 0 0-.42-.002l-.613.614a.298.298 0 0 0 .002.42l1.91 1.909a.5.5 0 0 0 .703.005l.265-.265L9.997 6.04a.291.291 0 0 0-.009-.408l-.614-.614a.29.29 0 0 0-.408-.009L6.278 7.697z" fill-rule="evenodd"/></symbol><symbol viewBox="0 0 14 14" id="status_warning" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M6 3.5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v4c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-4m0 6c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v1c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-1"/></g></symbol><symbol viewBox="0 0 22 22" id="status_warning_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M9.429 5.5c0-.471.314-.786.785-.786h1.572c.471 0 .785.315.785.786v6.286c0 .471-.314.785-.785.785h-1.572c-.471 0-.785-.314-.785-.785V5.5m0 9.429c0-.472.314-.786.785-.786h1.572c.471 0 .785.314.785.786V16.5c0 .471-.314.786-.785.786h-1.572c-.471 0-.785-.315-.785-.786v-1.571"/></symbol><symbol viewBox="0 0 16 16" id="stop" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2 0h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/></symbol><symbol viewBox="0 0 16 16" id="task-done" xmlns="http://www.w3.org/2000/svg"><path d="M7.536 8.657l2.828-2.829a1 1 0 0 1 1.414 1.415l-3.535 3.535a.997.997 0 0 1-1.415 0l-2.12-2.121A1 1 0 0 1 6.12 7.243l1.415 1.414zM3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3z"/></symbol><symbol viewBox="0 0 16 16" id="template" xmlns="http://www.w3.org/2000/svg"><path d="M3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3zm.8 2h2.4a.8.8 0 0 1 .8.8v1.4a.8.8 0 0 1-.8.8H3.8a.8.8 0 0 1-.8-.8V4.8a.8.8 0 0 1 .8-.8zm4.7 0h4a.5.5 0 1 1 0 1h-4a.5.5 0 0 1 0-1zm0 2h4a.5.5 0 1 1 0 1h-4a.5.5 0 0 1 0-1zm-5 3h9a.5.5 0 1 1 0 1h-9a.5.5 0 0 1 0-1zm0 2h9a.5.5 0 1 1 0 1h-9a.5.5 0 1 1 0-1z"/></symbol><symbol viewBox="0 0 16 16" id="terminal" xmlns="http://www.w3.org/2000/svg"><path d="M7 8a.997.997 0 0 1-.293.707l-1.414 1.414a1 1 0 1 1-1.414-1.414L4.586 8l-.707-.707a1 1 0 1 1 1.414-1.414l1.414 1.414A.997.997 0 0 1 7 8zM4 0h8a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm0 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H4zm5 7h2a1 1 0 0 1 0 2H9a1 1 0 0 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="thumb-down" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.33 11h5.282a2 2 0 0 0 1.963-2.38l-.563-2.905a3 3 0 0 0-.243-.732l-1.103-2.286A3 3 0 0 0 10.964 1H7a3 3 0 0 0-3 3v6.3a2 2 0 0 0 .436 1.247l3.11 3.9a.632.632 0 0 0 .941.053l.137-.137a1 1 0 0 0 .28-.87L8.329 11zM1 10h2V3H1a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1z"/></symbol><symbol viewBox="0 0 16 16" id="thumb-up" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.33 5h5.282a2 2 0 0 1 1.963 2.38l-.563 2.905a3 3 0 0 1-.243.732l-1.103 2.286A3 3 0 0 1 10.964 15H7a3 3 0 0 1-3-3V5.7a2 2 0 0 1 .436-1.247l3.11-3.9A.632.632 0 0 1 8.487.5l.137.137a1 1 0 0 1 .28.87L8.329 5zM1 6h2v7H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z"/></symbol><symbol viewBox="0 0 16 16" id="thumbtack" xmlns="http://www.w3.org/2000/svg"><path d="M7.125 9h-2.19a.5.5 0 0 1-.417-.777L6 6V2L5.362.724A.5.5 0 0 1 5.809 0h4.382a.5.5 0 0 1 .447.724L10 2v4l1.482 2.223a.5.5 0 0 1-.416.777H8.875L8 16l-.875-7z" fill-rule="evenodd"/></symbol><symbol viewBox="0 0 16 16" id="timer" xmlns="http://www.w3.org/2000/svg"><path d="M12.022 3.27l.77-.77a1 1 0 0 1 1.415 1.414l-.728.729a7 7 0 1 1-1.456-1.372zM8 14A5 5 0 1 0 8 4a5 5 0 0 0 0 10zm0-9a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0V6a1 1 0 0 1 1-1zM6 0h4a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="todo-add" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 4V2a1 1 0 0 1 2 0v2h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 0V6H8a1 1 0 1 1 0-2h2zm2 7a1 1 0 0 1 2 0v2a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h2a1 1 0 1 1 0 2H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-2z"/></symbol><symbol viewBox="0 0 16 16" id="todo-done" xmlns="http://www.w3.org/2000/svg"><path d="M8.243 7.485l4.95-4.95a1 1 0 1 1 1.414 1.415L8.95 9.607a.997.997 0 0 1-1.414 0L4.707 6.778a1 1 0 0 1 1.414-1.414l2.122 2.121zM12 11a1 1 0 0 1 2 0v2a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h2a1 1 0 1 1 0 2H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-2z"/></symbol><symbol viewBox="0 0 16 16" id="token" xmlns="http://www.w3.org/2000/svg"><path d="M3 2h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H3zm1 5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="unapproval" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M11.95 8.536l1.06-1.061a1 1 0 0 1 1.415 1.414l-1.061 1.06 1.06 1.061a1 1 0 0 1-1.414 1.415l-1.06-1.061-1.06 1.06a1 1 0 1 1-1.415-1.414l1.06-1.06-1.06-1.06a1 1 0 0 1 1.414-1.415l1.06 1.06zm-3.768-.33c.006.503.201 1.006.586 1.39l.353.354-.353.353a2 2 0 1 0 2.828 2.829l.354-.354.047.048C11.964 14.363 11.527 15 6 15c-5.924 0-6-.78-6-2.52S.964 8 6 8c.834 0 1.557.074 2.182.205zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"/></symbol><symbol viewBox="0 0 16 16" id="unassignee" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M11 5h4a1 1 0 0 1 0 2h-4a1 1 0 0 1 0-2zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM6 15c-5.924 0-6-.78-6-2.52S.964 8 6 8s6 2.692 6 4.48c0 1.788-.076 2.52-6 2.52z"/></symbol><symbol viewBox="0 0 16 16" id="unlink" xmlns="http://www.w3.org/2000/svg"><path d="M11.295 8.845l-.659-1.664a1.78 1.78 0 0 0 .04-.04l1.415-1.414c.586-.586.654-1.468.152-1.97s-1.384-.434-1.97.152L8.859 5.323a1.781 1.781 0 0 0-.04.04l-1.664-.658c.141-.208.305-.408.491-.594l1.415-1.414c1.366-1.367 3.424-1.525 4.596-.354 1.171 1.172 1.013 3.23-.354 4.596L11.89 8.354c-.186.186-.386.35-.594.491zm-2.45 2.45a4.075 4.075 0 0 1-.491.594l-1.415 1.414c-1.366 1.367-3.424 1.525-4.596.354-1.171-1.172-1.013-3.23.354-4.596L4.11 7.646c.186-.186.386-.35.594-.491l.659 1.664a1.781 1.781 0 0 0-.04.04l-1.415 1.414c-.586.586-.654 1.468-.152 1.97s1.384.434 1.97-.152l1.414-1.414a1.78 1.78 0 0 0 .04-.04l1.664.658zm3.812-2.088h2a.5.5 0 0 1 .5.5v.05a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-.05a.5.5 0 0 1 .5-.5zm-.384 2.116l1.415 1.414a.5.5 0 0 1 0 .708l-.037.036a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 0-.707l.036-.037a.5.5 0 0 1 .707 0zm-2.823 1.09a.5.5 0 0 1 .5-.5h.052a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H9.95a.5.5 0 0 1-.5-.5v-2zm-2.748-9.16a.5.5 0 0 1-.5.5h-.05a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h.05a.5.5 0 0 1 .5.5v2zm-2.116.383a.5.5 0 0 1 0 .707l-.036.036a.5.5 0 0 1-.707 0L2.428 2.965a.5.5 0 0 1 0-.707l.037-.036a.5.5 0 0 1 .707 0l1.414 1.414zm-1.09 2.823h-2a.5.5 0 0 1-.5-.5v-.051a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v.05a.5.5 0 0 1-.5.5z"/></symbol><symbol viewBox="0 0 16 16" id="user" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 8c-6.888 0-6.976-.78-6.976-2.52S2.144 8 8 8s6.976 2.692 6.976 4.48c0 1.788-.088 2.52-6.976 2.52z"/></symbol><symbol viewBox="0 0 16 16" id="users" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.521 8.01C15.103 8.19 16 10.755 16 12.48c0 1.533-.056 2.29-3.808 2.475.609-.54.808-1.331.808-2.475 0-1.911-.804-3.503-2.479-4.47zm-1.67-1.228A3.987 3.987 0 0 0 9.976 4a3.987 3.987 0 0 0-1.125-2.782 3 3 0 1 1 0 5.563zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM6 15c-5.924 0-6-.78-6-2.52S.964 8 6 8s6 2.692 6 4.48c0 1.788-.076 2.52-6 2.52z"/></symbol><symbol viewBox="0 0 16 16" id="volume-up" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1 5h1v6H1a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm2 0l4.445-2.964A1 1 0 0 1 9 2.87v10.26a1 1 0 0 1-1.555.833L3 11V5zm10.283 7.89a.5.5 0 0 1-.66-.752A5.485 5.485 0 0 0 14.5 8c0-1.601-.687-3.09-1.865-4.128a.5.5 0 0 1 .661-.75A6.484 6.484 0 0 1 15.5 8a6.485 6.485 0 0 1-2.217 4.89zm-2.002-2.236a.5.5 0 1 1-.652-.758c.55-.472.871-1.157.871-1.896 0-.732-.315-1.411-.856-1.883a.5.5 0 0 1 .658-.753A3.492 3.492 0 0 1 12.5 8c0 1.033-.45 1.994-1.219 2.654z"/></symbol><symbol viewBox="0 0 16 16" id="warning" xmlns="http://www.w3.org/2000/svg"><path d="M15.572 10.506c.867 1.42.375 3.247-1.098 4.082a3.184 3.184 0 0 1-1.57.412h-9.81C1.387 15 0 13.665 0 12.018a2.9 2.9 0 0 1 .427-1.512L5.332 2.47C6.2 1.05 8.096.577 9.57 1.412c.453.257.831.622 1.098 1.059l4.905 8.035zM8.89 3.479a1.014 1.014 0 0 0-.366-.353 1.053 1.053 0 0 0-1.412.353l-4.905 8.035a.967.967 0 0 0-.143.504c0 .549.462.994 1.032.994h9.81c.184 0 .364-.048.523-.137a.974.974 0 0 0 .366-1.361L8.889 3.479zM8 5a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0V6a1 1 0 0 1 1-1zm0 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="work" xmlns="http://www.w3.org/2000/svg"><path d="M12 3h1a3 3 0 0 1 3 3v7a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h1V2a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1zM6 2v1h4V2H6zM3 5a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H3zm1.5 1a.5.5 0 0 1 .5.5v6a.5.5 0 1 1-1 0v-6a.5.5 0 0 1 .5-.5zm7 0a.5.5 0 0 1 .5.5v6a.5.5 0 1 1-1 0v-6a.5.5 0 0 1 .5-.5z"/></symbol></svg>
\ No newline at end of file +<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><symbol viewBox="0 0 16 16" id="abuse" xmlns="http://www.w3.org/2000/svg"><path d="M11.408.328l4.029 3.222A1.5 1.5 0 0 1 16 4.72v6.555a1.5 1.5 0 0 1-.563 1.171l-4.026 3.224a1.5 1.5 0 0 1-.937.329H5.529a1.5 1.5 0 0 1-.937-.328L.563 12.45A1.5 1.5 0 0 1 0 11.28V4.724a1.5 1.5 0 0 1 .563-1.171L4.589.329A1.5 1.5 0 0 1 5.526 0h4.945c.34 0 .67.116.937.328zM10.296 2H5.702L2 4.964v6.074L5.704 14h4.594L14 11.036V4.962L10.296 2zM8 4a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0V5a1 1 0 0 1 1-1zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="account" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M9.195 9.965l-.568-.875a.25.25 0 0 1 .015-.294l.405-.5a.25.25 0 0 1 .283-.075l.938.36c.257-.183.543-.325.851-.42l.322-.988A.25.25 0 0 1 11.679 7h.642a.25.25 0 0 1 .238.173l.322.988c.308.095.594.237.851.42l.938-.36a.25.25 0 0 1 .283.076l.405.5a.25.25 0 0 1 .015.293l-.568.875c.113.297.18.616.193.95l.898.54a.25.25 0 0 1 .115.27l-.144.626a.25.25 0 0 1-.222.193l-1.115.098a3.015 3.015 0 0 1-.512.608l.165 1.18a.25.25 0 0 1-.138.259l-.577.281a.25.25 0 0 1-.29-.05l-.874-.905a3.035 3.035 0 0 1-.608 0l-.875.904a.25.25 0 0 1-.289.051l-.577-.281a.25.25 0 0 1-.138-.26l.165-1.18a3.015 3.015 0 0 1-.512-.607l-1.115-.098a.25.25 0 0 1-.222-.193l-.144-.626a.25.25 0 0 1 .115-.27l.898-.54c.013-.334.08-.653.193-.95zM6.789 8.023A12.845 12.845 0 0 0 6 8c-5.036 0-6 2.74-6 4.48C0 14.22.076 15 6 15c.553 0 1.055-.006 1.51-.02A5.977 5.977 0 0 1 6 11c0-1.083.287-2.1.79-2.977zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM12 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="admin" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M13.162 2.5a3.5 3.5 0 0 1-3.163 5.479L6.08 14.766a1.5 1.5 0 0 1-2.598-1.5L7.4 6.479A3.5 3.5 0 0 1 10.564 1L8.9 3.88l2.599 1.5 1.663-2.88zm-8.63 11.949a.5.5 0 1 0 .5-.866.5.5 0 0 0-.5.866z"/></symbol><symbol viewBox="0 0 16 16" id="angle-double-left" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.414 7.95l4.243-4.243a1 1 0 0 0-1.414-1.414l-4.95 4.95a.997.997 0 0 0 0 1.414l4.95 4.95a1 1 0 1 0 1.414-1.415L10.414 7.95zm-7 0l4.243-4.243a1 1 0 0 0-1.414-1.414l-4.95 4.95a.997.997 0 0 0 0 1.414l4.95 4.95a1 1 0 0 0 1.414-1.415L3.414 7.95z"/></symbol><symbol viewBox="0 0 16 16" id="angle-double-right" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5.536 7.95L1.293 3.707a1 1 0 0 1 1.414-1.414l4.95 4.95a.997.997 0 0 1 0 1.414l-4.95 4.95a1 1 0 1 1-1.414-1.415L5.536 7.95zm7 0L8.293 3.707a1 1 0 0 1 1.414-1.414l4.95 4.95a.997.997 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.414-1.415l4.243-4.242z"/></symbol><symbol viewBox="0 0 16 16" id="angle-down" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 10.243l-4.95-4.95a1 1 0 0 0-1.414 1.414l5.657 5.657a.997.997 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L8 10.243z"/></symbol><symbol viewBox="0 0 16 16" id="angle-left" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5.757 8l4.95-4.95a1 1 0 1 0-1.414-1.414L3.636 7.293a.997.997 0 0 0 0 1.414l5.657 5.657a1 1 0 0 0 1.414-1.414L5.757 8z"/></symbol><symbol viewBox="0 0 16 16" id="angle-right" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.243 8l-4.95-4.95a1 1 0 0 1 1.414-1.414l5.657 5.657a.997.997 0 0 1 0 1.414l-5.657 5.657a1 1 0 0 1-1.414-1.414L10.243 8z"/></symbol><symbol viewBox="0 0 16 16" id="angle-up" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 6.757l-4.95 4.95a1 1 0 1 1-1.414-1.414l5.657-5.657a.997.997 0 0 1 1.414 0l5.657 5.657a1 1 0 0 1-1.414 1.414L8 6.757z"/></symbol><symbol viewBox="0 0 16 16" id="appearance" xmlns="http://www.w3.org/2000/svg"><path d="M11.161 12.456l.232.121c.1.053.175.094.249.137.53.318.844.75.857 1.402.012 1.397-1.116 1.756-3.12 1.858a23.85 23.85 0 0 1-1.38.026A8 8 0 0 1 0 8a8 8 0 0 1 8-8c4.417 0 7.998 3.582 7.998 7.977.06 2.621-1.312 3.586-4.48 3.648-.602.008-1.068.043-1.4.104.228.192.598.47 1.043.727zm-3.287-.943c-.019-1.495 1.228-1.856 3.611-1.888C13.67 9.582 14.028 9.33 13.998 8A6 6 0 1 0 8 14c.603 0 .91-.004 1.277-.023a9.7 9.7 0 0 0 .478-.035c-1.172-.738-1.868-1.47-1.88-2.43zM6 5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm6 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-2-3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM4 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="applications" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1 0h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm0 6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm6-6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm0 1v2h2V1H7zm0 5h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm6-6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1zm0 6h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm0 1v2h2V7h-2zM1 12h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zm0 1v2h2v-2H1zm6-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zm6 0h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/></symbol><symbol viewBox="0 0 16 16" id="approval" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.536 10.657l2.828-2.829a1 1 0 0 1 1.414 1.415l-3.535 3.535a.997.997 0 0 1-1.415 0l-2.12-2.121A1 1 0 1 1 9.12 9.243l1.415 1.414zM7.632 8.109A2 2 0 0 0 7 11.364l2.121 2.121a1.996 1.996 0 0 0 2.807.021C11.686 14.554 10.627 15 6 15c-5.924 0-6-.78-6-2.52S.964 8 6 8c.6 0 1.142.038 1.632.109zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"/></symbol><symbol viewBox="0 0 16 16" id="arrow-down" xmlns="http://www.w3.org/2000/svg"><path d="M10.472 7.282a.862.862 0 0 1 1.26-.006c.357.364.357.958 0 1.285L8.627 11.73A.886.886 0 0 1 8 12a.849.849 0 0 1-.627-.27L4.275 8.561a.904.904 0 0 1-.013-1.285.861.861 0 0 1 1.26-.007l2.486 2.527z"/></symbol><symbol viewBox="0 0 16 16" id="arrow-right" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M9 6H2a2 2 0 1 0 0 4h7v2.586a1 1 0 0 0 1.707.707l4.586-4.586a1 1 0 0 0 0-1.414l-4.586-4.586A1 1 0 0 0 9 3.414V6z"/></symbol><symbol viewBox="0 0 16 16" id="assignee" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12 5V4a1 1 0 0 1 2 0v1h1a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0V7h-1a1 1 0 0 1 0-2h1zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM6 15c-5.924 0-6-.78-6-2.52S.964 8 6 8s6 2.692 6 4.48c0 1.788-.076 2.52-6 2.52z"/></symbol><symbol viewBox="0 0 16 16" id="bold" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M4 12.5v-9A1.5 1.5 0 0 1 5.5 2h2.104c2.182 0 3.879.681 3.879 2.982 0 1.067-.517 2.227-1.374 2.595v.073C11.176 7.963 12 8.865 12 10.466 12 12.914 10.19 14 7.911 14H5.5A1.5 1.5 0 0 1 4 12.5zm2.376-5.696H7.49c1.164 0 1.665-.552 1.665-1.417 0-.94-.534-1.289-1.649-1.289h-1.13v2.706zm0 5.098h1.341c1.293 0 1.956-.515 1.956-1.62 0-1.049-.647-1.472-1.956-1.472H6.376v3.092z"/></symbol><symbol viewBox="0 0 16 16" id="book" xmlns="http://www.w3.org/2000/svg"><path d="M7 2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2v4.191a.5.5 0 0 1-.724.447l-1.052-.526a.5.5 0 0 0-.448 0l-1.052.526A.5.5 0 0 1 7 6.191V2zM5 0h6a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H5a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"/></symbol><symbol viewBox="0 0 16 16" id="bookmark" xmlns="http://www.w3.org/2000/svg"><path d="M6.746 10.505a2 2 0 0 1 2.508 0L11 11.911V3H5v8.91l1.746-1.405zM5 1h6a2 2 0 0 1 2 2v10.999a1 1 0 0 1-1.627.779L8 12.064l-3.373 2.714A1 1 0 0 1 3 13.998V3a2 2 0 0 1 2-2z"/></symbol><symbol viewBox="0 0 16 16" id="branch" xmlns="http://www.w3.org/2000/svg"><path d="M6 11.978v.29a2 2 0 1 1-2 0V3.732a2 2 0 1 1 2 0v3.849c.592-.491 1.31-.854 2.15-1.081 1.308-.353 1.875-.882 1.893-1.743a2 2 0 1 1 2.002-.051C12.053 6.54 10.857 7.84 8.67 8.43 7.056 8.867 6.195 9.98 6 11.978zM5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm6 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2zM5 15a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="bullhorn" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6.143 10H7V4H3a3 3 0 1 0 0 6h.143l.734 5.141a1 1 0 0 0 .99.859h1.556a.5.5 0 0 0 .495-.57L6.143 10zM8 4c1.034.02 2.039-.274 3.014-.883.727-.455 1.836-1.334 3.328-2.637A1 1 0 0 1 16 1.233v10.764a1 1 0 0 1-1.595.803c-1.658-1.227-2.788-1.992-3.392-2.294-.781-.39-1.785-.559-3.013-.506V4z"/></symbol><symbol viewBox="0 0 16 16" id="calendar" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12 2h2a2 2 0 0 1 2 2H0a2 2 0 0 1 2-2h2V1a1 1 0 1 1 2 0v1h4V1a1 1 0 1 1 2 0v1zM0 4h16v9a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V4zm2 2.5V13a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6.5a.5.5 0 0 0-.5-.5h-11a.5.5 0 0 0-.5.5zM5 8h2a1 1 0 1 1 0 2H5a1 1 0 1 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="cancel" xmlns="http://www.w3.org/2000/svg"><path d="M3.11 4.523a6 6 0 0 0 8.367 8.367L3.109 4.524zM4.522 3.11l8.368 8.368A6 6 0 0 0 4.524 3.11zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/></symbol><symbol viewBox="0 0 16 16" id="chart" xmlns="http://www.w3.org/2000/svg"><path d="M15 14a1 1 0 0 1 0 2H2a2 2 0 0 1-2-2V1a1 1 0 1 1 2 0v13h13zM3.142 8.735l2.502-2.561a.5.5 0 0 1 .714-.003L8 7.833l3.592-4.553a.5.5 0 0 1 .796.015l2.516 3.454a.5.5 0 0 1 .096.295V12.5a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5V9.085a.5.5 0 0 1 .142-.35z"/></symbol><symbol viewBox="0 0 16 16" id="chevron-down" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.078 8.2l3.535-3.536a2 2 0 0 1 2.828 2.828l-4.949 4.95c-.39.39-.902.586-1.414.586a1.994 1.994 0 0 1-1.414-.586l-4.95-4.95a2 2 0 1 1 2.828-2.828l3.536 3.535z"/></symbol><symbol viewBox="0 0 16 16" id="chevron-left" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7.977 7.998l3.535-3.535a2 2 0 1 0-2.828-2.828l-4.95 4.949c-.39.39-.586.902-.586 1.414 0 .512.196 1.024.586 1.414l4.95 4.95a2 2 0 1 0 2.828-2.828L7.977 7.998z"/></symbol><symbol viewBox="0 0 16 16" id="chevron-right" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.22 7.998L4.683 4.463a2 2 0 0 1 2.828-2.828l4.95 4.949c.39.39.586.902.586 1.414a1.99 1.99 0 0 1-.586 1.414l-4.95 4.95a2 2 0 0 1-2.828-2.828l3.535-3.536z"/></symbol><symbol viewBox="0 0 16 16" id="chevron-up" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7.778 8.957l3.535 3.535a2 2 0 1 0 2.828-2.828l-4.949-4.95a1.994 1.994 0 0 0-1.414-.586c-.512 0-1.024.196-1.414.586l-4.95 4.95a2 2 0 1 0 2.828 2.828l3.536-3.535z"/></symbol><symbol viewBox="0 0 16 16" id="clock" xmlns="http://www.w3.org/2000/svg"><path d="M9 7h1a1 1 0 0 1 0 2H8a.997.997 0 0 1-1-1V5a1 1 0 1 1 2 0v2zm-1 9A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"/></symbol><symbol viewBox="0 0 16 16" id="close" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M9.414 8l4.95-4.95a1 1 0 0 0-1.414-1.414L8 6.586l-4.95-4.95A1 1 0 0 0 1.636 3.05L6.586 8l-4.95 4.95a1 1 0 1 0 1.414 1.414L8 9.414l4.95 4.95a1 1 0 1 0 1.414-1.414L9.414 8z"/></symbol><symbol viewBox="0 0 16 16" id="code" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M15.871 8.243a.997.997 0 0 0-.293-.707L12.75 4.707a1 1 0 0 0-1.414 1.414l2.12 2.122-2.12 2.121a1 1 0 0 0 1.414 1.414l2.828-2.828a.997.997 0 0 0 .293-.707zm-13.243 0L4.75 6.12a1 1 0 1 0-1.414-1.414L.507 7.536a.997.997 0 0 0 0 1.414l2.829 2.828a1 1 0 1 0 1.414-1.414L2.628 8.243zm6.407-4.107a1 1 0 0 1 .707 1.225L8.19 11.157a1 1 0 1 1-1.931-.518L7.81 4.843a1 1 0 0 1 1.224-.707z"/></symbol><symbol viewBox="0 0 9 13" id="collapse"><path d="M.084.25C.01.18-.015.12.008.071.031.024.093 0 .194 0h8.521c.1 0 .162.024.185.072.023.048-.002.107-.075.177l-4.11 3.935a.372.372 0 0 1-.11.072h-.301a.508.508 0 0 1-.11-.072L.084.249zM.377 6.88a.364.364 0 0 1-.26-.105.334.334 0 0 1-.11-.25v-.709c0-.096.036-.179.11-.249a.364.364 0 0 1 .26-.105h8.15c.101 0 .188.035.261.105.074.07.11.153.11.25v.709c0 .096-.036.179-.11.249a.364.364 0 0 1-.26.105H.377zM.084 12.132c-.074.07-.099.129-.076.177.023.048.085.072.186.072h8.521c.1 0 .162-.024.185-.072.023-.048-.002-.107-.075-.177l-4.11-3.935a.372.372 0 0 0-.11-.072h-.301a.508.508 0 0 0-.11.072l-4.11 3.935z"/></symbol><symbol viewBox="0 0 16 16" id="comment" xmlns="http://www.w3.org/2000/svg"><path d="M1.707 15.707C1.077 16.337 0 15.891 0 15V3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H5.414l-3.707 3.707zM2 12.586l2.293-2.293A1 1 0 0 1 5 10h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v9.586z"/></symbol><symbol viewBox="0 0 16 16" id="comment-dots" xmlns="http://www.w3.org/2000/svg"><path d="M1.707 15.707C1.077 16.337 0 15.891 0 15V3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H5.414l-3.707 3.707zM2 12.586l2.293-2.293A1 1 0 0 1 5 10h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v9.586zM5 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="comment-next" xmlns="http://www.w3.org/2000/svg"><path d="M8 5V4a.5.5 0 0 1 .8-.4l2.667 2a.5.5 0 0 1 0 .8L8.8 8.4A.5.5 0 0 1 8 8V7H6a1 1 0 1 1 0-2h2zM1.707 15.707C1.077 16.337 0 15.891 0 15V3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H5.414l-3.707 3.707zM2 12.586l2.293-2.293A1 1 0 0 1 5 10h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v9.586z"/></symbol><symbol viewBox="0 0 16 16" id="comments" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M3.75 10L0 13V3a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H3.75zM13 5h1a2 2 0 0 1 2 2v8l-2.667-2H8a2 2 0 0 1-2-2h4a3 3 0 0 0 3-3V5z"/></symbol><symbol viewBox="0 0 16 16" id="commit" xmlns="http://www.w3.org/2000/svg"><path d="M8 10a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm3.876-1.008a4.002 4.002 0 0 1-7.752 0A1.01 1.01 0 0 1 4 9H1a1 1 0 1 1 0-2h3c.042 0 .083.003.124.008a4.002 4.002 0 0 1 7.752 0A1.01 1.01 0 0 1 12 7h3a1 1 0 0 1 0 2h-3a1.01 1.01 0 0 1-.124-.008z"/></symbol><symbol viewBox="0 0 16 16" id="credit-card" xmlns="http://www.w3.org/2000/svg"><path d="M14 5a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1h12zm0 3H2v3a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V8zM3 2h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zm6.5 8h3a.5.5 0 1 1 0 1h-3a.5.5 0 1 1 0-1z"/></symbol><symbol viewBox="0 0 16 16" id="cut" xmlns="http://www.w3.org/2000/svg"><rect width="16" height="2" y="7" fill-rule="evenodd" rx="1"/></symbol><symbol viewBox="0 0 16 16" id="dashboard" xmlns="http://www.w3.org/2000/svg"><path d="M7.709 10.021l.696-2.6a.5.5 0 0 1 .966.26l-.657 2.45A2 2 0 0 1 10 12H6a2 2 0 0 1 1.709-1.979zM0 8.9a8 8 0 0 1 15.998 0H16v3.6a2.5 2.5 0 0 1-2.5 2.5h-11A2.5 2.5 0 0 1 0 12.5V8.9zM14 9A6 6 0 1 0 2 9v3.5a.5.5 0 0 0 .5.5h11a.5.5 0 0 0 .5-.5V9zM3.5 9a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm9 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-7-3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm5 0a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1z"/></symbol><symbol viewBox="0 0 16 16" id="disk" xmlns="http://www.w3.org/2000/svg"><path d="M16 11.764V3a3 3 0 0 0-3-3H3a3 3 0 0 0-3 3v8.764A2.989 2.989 0 0 1 2 11V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v8c.768 0 1.47.289 2 .764zM2 12h12a2 2 0 1 1 0 4H2a2 2 0 1 1 0-4zm10 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="doc_code" xmlns="http://www.w3.org/2000/svg"><path d="M8 2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V7h-3a2 2 0 0 1-2-2V2zm2 .414V5h2.586L10 2.414zm1.036 7.607a.498.498 0 0 1-.147.354l-1.414 1.414a.5.5 0 0 1-.707-.707l1.06-1.06-1.06-1.061a.5.5 0 0 1 .707-.707l1.414 1.414a.498.498 0 0 1 .147.353zm-4.822 0l1.06 1.061a.5.5 0 0 1-.706.707l-1.414-1.414a.498.498 0 0 1 0-.707l1.414-1.414a.5.5 0 1 1 .707.707l-1.06 1.06zM5 0h4.586A2 2 0 0 1 11 .586L14.414 4A2 2 0 0 1 15 5.414V12a4 4 0 0 1-4 4H5a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z"/></symbol><symbol viewBox="0 0 16 16" id="doc_image" xmlns="http://www.w3.org/2000/svg"><path d="M8 2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V7h-3a2 2 0 0 1-2-2V2zm2 .414V5h2.586L10 2.414zM7.333 9.667l1.313-1.313a.5.5 0 0 1 .708 0L12 11H4l2.188-1.75a.5.5 0 0 1 .624 0l.521.417zM5 0h4.586A2 2 0 0 1 11 .586L14.414 4A2 2 0 0 1 15 5.414V12a4 4 0 0 1-4 4H5a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm.5 8a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM4 11h8v.7a.3.3 0 0 1-.3.3H4.3a.3.3 0 0 1-.3-.3V11z"/></symbol><symbol viewBox="0 0 16 16" id="doc_text" xmlns="http://www.w3.org/2000/svg"><path d="M8 2H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V7h-3a2 2 0 0 1-2-2V2zm2 .414V5h2.586L10 2.414zM5 0h4.586A2 2 0 0 1 11 .586L14.414 4A2 2 0 0 1 15 5.414V12a4 4 0 0 1-4 4H5a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm.5 11h5a.5.5 0 1 1 0 1h-5a.5.5 0 1 1 0-1zm0-2h5a.5.5 0 1 1 0 1h-5a.5.5 0 0 1 0-1zm0-2h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1 0-1z"/></symbol><symbol viewBox="0 0 105 26" id="double-headed-arrow" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1.018 11.089L15.138.614c1.23-.911 3.086-.795 4.147.26.461.46.715 1.045.715 1.651v20.95C20 24.869 18.684 26 17.06 26a3.238 3.238 0 0 1-1.921-.614L1.019 14.911C-.212 14-.347 12.405.714 11.35c.094-.094.195-.18.303-.261zm102.964 0c.108.08.21.167.303.26 1.061 1.056.925 2.65-.303 3.562l-14.12 10.475A3.238 3.238 0 0 1 87.94 26C86.316 26 85 24.87 85 23.475V2.525c0-.606.254-1.192.715-1.65 1.061-1.056 2.917-1.172 4.146-.26l14.12 10.474zM35 17a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm18 0a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm18 0a4 4 0 1 1 0-8 4 4 0 0 1 0 8z"/></symbol><symbol viewBox="0 0 16 16" id="download" xmlns="http://www.w3.org/2000/svg"><path d="M9 12h1a.5.5 0 0 1 .4.8l-2 2.667a.5.5 0 0 1-.8 0l-2-2.667A.5.5 0 0 1 6 12h1V8a1 1 0 1 1 2 0v4zM4 9a1 1 0 1 1 0 2 4 4 0 0 1-1.971-7.481 4 4 0 0 1 6.633-2.505 3.999 3.999 0 0 1 3.82 2.014A4 4 0 0 1 12 11a1 1 0 0 1 0-2 2 2 0 1 0 0-4h-1a2 2 0 0 0-3.112-1.662A2 2 0 1 0 4.268 5H4a2 2 0 1 0 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="duplicate" xmlns="http://www.w3.org/2000/svg"><path d="M14 10h-3a1 1 0 0 1-1-1V6H8.527A.527.527 0 0 0 8 6.527V13a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1v-3zm-4-7H8.527c-.18 0-.355.013-.527.04V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2v2H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h4a3 3 0 0 1 3 3zM8.527 4h2.323a.5.5 0 0 1 .35.143l4.65 4.551a.5.5 0 0 1 .15.357V13a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V6.527A2.527 2.527 0 0 1 8.527 4z"/></symbol><symbol viewBox="0 0 16 16" id="earth" xmlns="http://www.w3.org/2000/svg"><path d="M8.7 2.04l-.082.177c.283.223.422.413.417.571-.008.237-.311.057-.444.274-.133.218.038.542-.112.637-.15.096-.398-.386-.479-.46-.054-.049-.166-.257-.336-.625l-.216-.225a.844.844 0 0 0-.418-.035c-.177.038-.075.1-.035.132.04.032.32.037.452.2.132.164.03.224-.05.298-.054.05-.157.062-.31.035H5.952l-.402.398.03.325.229.455.324-.463c.008-.206.058-.342.15-.41.14-.1.342-.15.534-.085.191.066-.057.218.011.271.068.053.204-.098.313-.02.11.08.07.155.104.322.036.167.254.114.398.328.144.215.19.29.147.483-.043.195-.168.26-.305.232-.138-.028-.107-.246-.275-.348-.168-.102-.266-.114-.386-.054-.12.06-.016.129.023.235.04.106.274.321.224.43-.05.107-.108.116-.42 0-.21-.077-.414-.007-.615.212l-.76.722c-.153.715-.3 1.13-.44 1.243-.211.17-.177-.483-.483-.656-.306-.174-.494-.047-.8-.07-.307-.023-.42.65-.38.873a.434.434 0 0 0 .221.321c.236-.141.39-.184.465-.128.11.084-.144.267-.074.425.07.158.314.069.386.283.073.213.084.48-.05.706-.135.227-.275.178-.4.053-.127-.126-.033-.375-.255-.704-.223-.329-.381-.337-.63-.787-.158-.287-.35-.743-.575-1.366a6 6 0 0 0 3.21 7.198l.001-.075c0-.577-.004-.944-.012-1.102-.011-.236-.95-.945-1.104-1.2-.154-.256-.34-.595-.355-.746-.016-.151.185-.232.344-.325.16-.093-.11-.367.028-.626.137-.258.395-.438.496-.356.101.081.058.228.267.333.209.104.077-.213.456-.178.38.035.143.201.252.216.11.016.113-.127.299-.143.186-.015.282.445.471.622.19.178.452.008.611.043.159.034.267.09.402.255.136.166-.03.352.073.557.103.205 1.07.22 1.433.255.364.034.371.011.371.324s-.166.314-.453.507c-.286.193-.166.462-.38.762-.212.3-.316.062-.622.14-.306.077-.413.382-.452.568-.039.186-.386.094-.877.232-.29.082-.429.144-.569.204a6.002 6.002 0 0 0 7.682-4.3c-.094-.384-.18-.63-.258-.74-.213-.297-.36.21-.924.49-.564.278-.57-.288-.81-.49-.16-.133-.212-.44-.158-.92-.005-.478.02-.828.077-1.049.057-.221.126-.543.207-.965.351-.373.606-.572.764-.595.237-.034.336.374.658.3a.315.315 0 0 0 .035-.01 5.993 5.993 0 0 0-.475-.824l-.309-.043a.646.646 0 0 0-.332-.117c-.205-.02-.025.128-.089.24-.064.112-.235.724-.437.685-.201-.039-.204-.374-.17-.668.036-.294-.077-.35-.2-.412-.124-.062-.325-.213-.556-.295-.232-.082-.123-.175-.093-.274.03-.1.208-.015.193-.058-.014-.044-.313-.135-.266-.167.03-.02.2-.02.506.003l.216-.012.293-.163a.58.58 0 0 0-.376-.22c-.233-.036-.513-.034-.73-.142-.205-.103-.458-.36-.643-.638A5.965 5.965 0 0 0 8.7 2.04zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16z"/></symbol><symbol viewBox="0 0 1600 1600" id="ellipsis_v" xmlns="http://www.w3.org/2000/svg"><path d="M1088 1248v192q0 40-28 68t-68 28H800q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h192q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28H800q-40 0-68-28t-28-68V736q0-40 28-68t68-28h192q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28H800q-40 0-68-28t-28-68V224q0-40 28-68t68-28h192q40 0 68 28t28 68z"/></symbol><symbol viewBox="0 0 18 18" id="emoji_slightly_smiling_face" xmlns="http://www.w3.org/2000/svg"><path d="M13.29 11.098a4.328 4.328 0 0 1-1.618 2.285c-.79.578-1.68.867-2.672.867-.992 0-1.883-.29-2.672-.867a4.328 4.328 0 0 1-1.617-2.285.721.721 0 0 1 .047-.569.715.715 0 0 1 .445-.369.721.721 0 0 1 .568.047.715.715 0 0 1 .37.445 2.91 2.91 0 0 0 1.084 1.518A2.93 2.93 0 0 0 9 12.75a2.93 2.93 0 0 0 1.775-.58 2.913 2.913 0 0 0 1.084-1.518.711.711 0 0 1 .375-.445.737.737 0 0 1 .575-.047c.195.063.34.186.433.37.094.183.11.372.047.568zM7.5 6c0 .414-.146.768-.44 1.06A1.44 1.44 0 0 1 6 7.5a1.44 1.44 0 0 1-1.06-.44A1.445 1.445 0 0 1 4.5 6c0-.414.146-.768.44-1.06A1.44 1.44 0 0 1 6 4.5c.414 0 .768.146 1.06.44.294.292.44.646.44 1.06zm6 0c0 .414-.146.768-.44 1.06A1.44 1.44 0 0 1 12 7.5a1.44 1.44 0 0 1-1.06-.44A1.445 1.445 0 0 1 10.5 6c0-.414.146-.768.44-1.06A1.44 1.44 0 0 1 12 4.5c.414 0 .768.146 1.06.44.294.292.44.646.44 1.06zm3 3a7.29 7.29 0 0 0-.598-2.912 7.574 7.574 0 0 0-1.6-2.39 7.574 7.574 0 0 0-2.39-1.6A7.29 7.29 0 0 0 9 1.5a7.29 7.29 0 0 0-2.912.598 7.574 7.574 0 0 0-2.39 1.6 7.574 7.574 0 0 0-1.6 2.39A7.29 7.29 0 0 0 1.5 9c0 1.016.2 1.986.598 2.912a7.574 7.574 0 0 0 1.6 2.39 7.574 7.574 0 0 0 2.39 1.6A7.29 7.29 0 0 0 9 16.5a7.29 7.29 0 0 0 2.912-.598 7.574 7.574 0 0 0 2.39-1.6 7.574 7.574 0 0 0 1.6-2.39A7.29 7.29 0 0 0 16.5 9zM18 9a8.804 8.804 0 0 1-1.207 4.518 8.96 8.96 0 0 1-3.275 3.275A8.804 8.804 0 0 1 9 18a8.804 8.804 0 0 1-4.518-1.207 8.96 8.96 0 0 1-3.275-3.275A8.804 8.804 0 0 1 0 9c0-1.633.402-3.139 1.207-4.518a8.96 8.96 0 0 1 3.275-3.275A8.804 8.804 0 0 1 9 0c1.633 0 3.139.402 4.518 1.207a8.96 8.96 0 0 1 3.275 3.275A8.804 8.804 0 0 1 18 9z" fill-rule="evenodd"/></symbol><symbol viewBox="0 0 18 18" id="emoji_smile" xmlns="http://www.w3.org/2000/svg"><path d="M13.29 11.098a4.328 4.328 0 0 1-1.618 2.285c-.79.578-1.68.867-2.672.867-.992 0-1.883-.29-2.672-.867a4.328 4.328 0 0 1-1.617-2.285.721.721 0 0 1 .047-.569.715.715 0 0 1 .445-.369c.195-.062 7.41-.062 7.606 0 .195.063.34.186.433.37.094.183.11.372.047.568zM14 6.37c0 .398-.04.755-.513.755-.473 0-.498-.272-1.237-.272-.74 0-.74.215-1.165.215-.425 0-.585-.3-.585-.698 0-.397.17-.736.513-1.017.341-.281.754-.422 1.237-.422.483 0 .896.14 1.237.422.342.28.513.62.513 1.017zm-6.5 0c0 .398-.04.755-.513.755-.473 0-.498-.272-1.237-.272-.74 0-.74.215-1.165.215-.425 0-.585-.3-.585-.698 0-.397.17-.736.513-1.017.341-.281.754-.422 1.237-.422.483 0 .896.14 1.237.422.342.28.513.62.513 1.017zm9 2.63a7.29 7.29 0 0 0-.598-2.912 7.574 7.574 0 0 0-1.6-2.39 7.574 7.574 0 0 0-2.39-1.6A7.29 7.29 0 0 0 9 1.5a7.29 7.29 0 0 0-2.912.598 7.574 7.574 0 0 0-2.39 1.6 7.574 7.574 0 0 0-1.6 2.39A7.29 7.29 0 0 0 1.5 9c0 1.016.2 1.986.598 2.912a7.574 7.574 0 0 0 1.6 2.39 7.574 7.574 0 0 0 2.39 1.6A7.29 7.29 0 0 0 9 16.5a7.29 7.29 0 0 0 2.912-.598 7.574 7.574 0 0 0 2.39-1.6 7.574 7.574 0 0 0 1.6-2.39A7.29 7.29 0 0 0 16.5 9zM18 9a8.804 8.804 0 0 1-1.207 4.518 8.96 8.96 0 0 1-3.275 3.275A8.804 8.804 0 0 1 9 18a8.804 8.804 0 0 1-4.518-1.207 8.96 8.96 0 0 1-3.275-3.275A8.804 8.804 0 0 1 0 9c0-1.633.402-3.139 1.207-4.518a8.96 8.96 0 0 1 3.275-3.275A8.804 8.804 0 0 1 9 0c1.633 0 3.139.402 4.518 1.207a8.96 8.96 0 0 1 3.275 3.275A8.804 8.804 0 0 1 18 9z" fill-rule="evenodd"/></symbol><symbol viewBox="0 0 18 18" id="emoji_smiley" xmlns="http://www.w3.org/2000/svg"><path d="M13.29 11.098a4.328 4.328 0 0 1-1.618 2.285c-.79.578-1.68.867-2.672.867-.992 0-1.883-.29-2.672-.867a4.328 4.328 0 0 1-1.617-2.285.721.721 0 0 1 .047-.569.715.715 0 0 1 .445-.369c.195-.062 7.41-.062 7.606 0 .195.063.34.186.433.37.094.183.11.372.047.568h.001zM7.5 6c0 .414-.146.768-.44 1.06A1.44 1.44 0 0 1 6 7.5a1.44 1.44 0 0 1-1.06-.44A1.445 1.445 0 0 1 4.5 6c0-.414.146-.768.44-1.06A1.44 1.44 0 0 1 6 4.5c.414 0 .768.146 1.06.44.294.292.44.646.44 1.06zm6 0c0 .414-.146.768-.44 1.06A1.44 1.44 0 0 1 12 7.5a1.44 1.44 0 0 1-1.06-.44A1.445 1.445 0 0 1 10.5 6c0-.414.146-.768.44-1.06A1.44 1.44 0 0 1 12 4.5c.414 0 .768.146 1.06.44.294.292.44.646.44 1.06zm3 3a7.29 7.29 0 0 0-.598-2.912 7.574 7.574 0 0 0-1.6-2.39 7.574 7.574 0 0 0-2.39-1.6A7.29 7.29 0 0 0 9 1.5a7.29 7.29 0 0 0-2.912.598 7.574 7.574 0 0 0-2.39 1.6 7.574 7.574 0 0 0-1.6 2.39A7.29 7.29 0 0 0 1.5 9c0 1.016.2 1.986.598 2.912a7.574 7.574 0 0 0 1.6 2.39 7.574 7.574 0 0 0 2.39 1.6c.92.397 1.91.6 2.912.598a7.29 7.29 0 0 0 2.912-.598 7.574 7.574 0 0 0 2.39-1.6 7.574 7.574 0 0 0 1.6-2.39c.397-.92.6-1.91.598-2.912zM18 9a8.804 8.804 0 0 1-1.207 4.518 8.96 8.96 0 0 1-3.275 3.275A8.804 8.804 0 0 1 9 18a8.804 8.804 0 0 1-4.518-1.207 8.96 8.96 0 0 1-3.275-3.275A8.804 8.804 0 0 1 0 9c0-1.633.402-3.139 1.207-4.518a8.96 8.96 0 0 1 3.275-3.275A8.804 8.804 0 0 1 9 0c1.633 0 3.139.402 4.518 1.207a8.96 8.96 0 0 1 3.275 3.275A8.804 8.804 0 0 1 18 9z"/></symbol><symbol viewBox="0 0 16 16" id="epic" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M14.985 8.044l-.757 2.272a1 1 0 0 1-.949.684H1.618a1 1 0 0 1-.894-1.447l.318-.637A2 2 0 0 0 1.618 9h11.661a2 2 0 0 0 1.706-.956zm0 3l-.757 2.272a1 1 0 0 1-.949.684H1.618a1 1 0 0 1-.894-1.447l.318-.637a2 2 0 0 0 .576.084h11.661a2 2 0 0 0 1.706-.956zM3.618 2h10.995a1 1 0 0 1 .948 1.316l-1.333 4a1 1 0 0 1-.949.684H1.618a1 1 0 0 1-.894-1.447l2-4A1 1 0 0 1 3.618 2zm-.382 4h9.322l.667-2H4.236l-1 2z"/></symbol><symbol viewBox="0 0 16 16" id="external-link" xmlns="http://www.w3.org/2000/svg"><path d="M13.121 4.177l-4.95 4.95a1 1 0 1 1-1.414-1.414l4.95-4.95-1.386-1.386a.5.5 0 0 1 .299-.85l4.709-.524a.5.5 0 0 1 .552.552l-.523 4.71a.5.5 0 0 1-.851.297l-1.386-1.385zM12 8.884a1 1 0 0 1 2 0v4a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3v-8a3 3 0 0 1 3-3h4a1 1 0 1 1 0 2H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-4z"/></symbol><symbol viewBox="0 0 16 16" id="eye" xmlns="http://www.w3.org/2000/svg"><path d="M8 14C4.816 14 2.253 12.284.393 8.981a2 2 0 0 1 0-1.962C2.253 3.716 4.816 2 8 2s5.747 1.716 7.607 5.019a2 2 0 0 1 0 1.962C13.747 12.284 11.184 14 8 14zm0-2c2.41 0 4.338-1.29 5.864-4C12.338 5.29 10.411 4 8 4 5.59 4 3.662 5.29 2.136 8 3.662 10.71 5.589 12 8 12zm0-1a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm1-3a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="eye-slash" xmlns="http://www.w3.org/2000/svg"><path d="M13.618 2.62L1.62 14.619a1 1 0 0 1-.985-1.668l1.525-1.526C1.516 10.742.926 9.927.393 8.981a2 2 0 0 1 0-1.962C2.253 3.716 4.816 2 8 2c1.074 0 2.076.195 3.006.58l.944-.944a1 1 0 0 1 1.668.985zM8.068 11a3 3 0 0 0 2.931-2.932l-2.931 2.931zm-3.02-2.462a3 3 0 0 1 3.49-3.49l.884-.884A6.044 6.044 0 0 0 8 4C5.59 4 3.662 5.29 2.136 8c.445.79.924 1.46 1.439 2.011l1.473-1.473zm.421 5.06l1.658-1.658c.283.04.575.06.873.06 2.41 0 4.338-1.29 5.864-4a11.023 11.023 0 0 0-1.133-1.664l1.418-1.418a12.799 12.799 0 0 1 1.458 2.1 2 2 0 0 1 0 1.963C13.747 12.284 11.184 14 8 14a7.883 7.883 0 0 1-2.53-.402z"/></symbol><symbol viewBox="0 0 16 16" id="file-addition" xmlns="http://www.w3.org/2000/svg"><path d="M7 7V5a1 1 0 1 1 2 0v2h2a1 1 0 0 1 0 2H9v2a1 1 0 0 1-2 0V9H5a1 1 0 1 1 0-2h2zM3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3z"/></symbol><symbol viewBox="0 0 16 16" id="file-deletion" xmlns="http://www.w3.org/2000/svg"><path d="M3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3zm2 6h6a1 1 0 0 1 0 2H5a1 1 0 1 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="file-modified" xmlns="http://www.w3.org/2000/svg"><path d="M3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3zm5 4a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"/></symbol><symbol viewBox="0 0 16 16" id="filter" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 6v9l-3.724-1.862A.5.5 0 0 1 6 12.691V6L1.854 1.854A.5.5 0 0 1 2.207 1h11.586a.5.5 0 0 1 .353.854L10 6z"/></symbol><symbol viewBox="0 0 16 16" id="folder" xmlns="http://www.w3.org/2000/svg"><path d="M13 3a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a2 2 0 0 1 2-2h3.81a3 3 0 0 1 2.827 1.995L13 3z"/></symbol><symbol viewBox="0 0 16 16" id="folder-o" xmlns="http://www.w3.org/2000/svg"><path d="M13 5l-4.365-.005a2 2 0 0 1-1.882-1.33A1 1 0 0 0 5.81 3H2v9a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm0-2a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a2 2 0 0 1 2-2h3.81a3 3 0 0 1 2.827 1.995L13 3z"/></symbol><symbol viewBox="0 0 16 16" id="folder-o-open" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M14.59 5.464a2.998 2.998 0 0 1 1.096 3.845l-1.666 3.436A4 4 0 0 1 10.46 15H3a3 3 0 0 1-3-3V3a2 2 0 0 1 2-2h3.558a2 2 0 0 1 1.898 1.368l.21.632h4.973a2 2 0 0 1 2 2 2 2 0 0 1-.027.329l-.023.135zM5.285 7a1 1 0 0 0-.9.564l-1.939 4a1 1 0 0 0 .9 1.436h7.074a2 2 0 0 0 1.8-1.128l1.665-3.436a1 1 0 0 0-.9-1.436h-7.7z"/></symbol><symbol viewBox="0 0 16 16" id="folder-open" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M14 6H5.333a2 2 0 0 0-1.664.89l-3.333 5a2 2 0 0 0-.285.662A3.017 3.017 0 0 1 0 12V3a2 2 0 0 1 2-2h2.838a3 3 0 0 1 2.828 2H11a3 3 0 0 1 3 3zM5.333 7h9.53a1 1 0 0 1 .875 1.486l-2.492 4.485A2 2 0 0 1 11.498 14H2a1 1 0 0 1-.832-1.555l3.333-5A1 1 0 0 1 5.333 7z"/></symbol><symbol viewBox="0 0 16 16" id="fork" xmlns="http://www.w3.org/2000/svg"><path d="M9 12.268a2 2 0 1 1-2 0V8.874A4.002 4.002 0 0 1 4 5V3.732a2 2 0 1 1 2 0V5a2 2 0 1 0 4 0V3.732a2 2 0 1 1 2 0V5a4.002 4.002 0 0 1-3 3.874v3.394zM11 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zM5 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 12a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="geo-nodes" xmlns="http://www.w3.org/2000/svg"><path d="M9.7 13.1l-.2.2c-.7.8-2 .9-2.8.1-.1 0-.1-.1-.1-.1l-.2-.2c-2 .2-3.4.7-3.4 1.4 0 .8 2.2 1.5 5 1.5s5-.7 5-1.5c0-.7-1.4-1.2-3.3-1.4M7.3 12.7c.4.4 1 .3 1.4-.1C11.6 9.5 13 7 13 5.3 13 2.4 10.8 0 8 0S3 2.4 3 5.3C3 7 4.4 9.5 7.3 12.7M8 2c1.6 0 3 1.4 3 3.3 0 1-1 2.8-3 5.2-2-2.4-3-4.2-3-5.2C5 3.4 6.4 2 8 2"/><circle cx="8" cy="5" r="1"/></symbol><symbol viewBox="0 0 16 16" id="git-merge" xmlns="http://www.w3.org/2000/svg"><path d="M11 12.268V5a1 1 0 0 0-1-1v1a.5.5 0 0 1-.8.4l-2.667-2a.5.5 0 0 1 0-.8L9.2.6a.5.5 0 0 1 .8.4v1a3 3 0 0 1 3 3v7.268a2 2 0 1 1-2 0zm-6 0a2 2 0 1 1-2 0V4.732a2 2 0 1 1 2 0v7.536zM4 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 11a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm8 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="group" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M3.048 11.997C-.377 11.975.013 11.782.013 10.56.013 9.235.653 8 4 8c.444 0 .84.022 1.194.062.164.435.426.82.76 1.132-1.786.389-2.721 1.353-2.906 2.803zm2.94-7.222a2.993 2.993 0 0 0-.976 1.95 2 2 0 1 1 .975-1.95zm6.964 7.222c-.185-1.45-1.12-2.414-2.906-2.803.334-.311.596-.697.76-1.132C11.16 8.022 11.556 8 12 8c3.346 0 3.987 1.235 3.987 2.56 0 1.222.39 1.415-3.035 1.437zm-1.964-5.272a2.993 2.993 0 0 0-.976-1.95 2 2 0 1 1 .976 1.95zM8 9a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm0 5c-2.177 0-3.987-.115-3.987-1.44S4.653 10 8 10c3.346 0 3.987 1.235 3.987 2.56S10.177 14 8 14z"/></symbol><symbol viewBox="0 0 16 16" id="history" xmlns="http://www.w3.org/2000/svg"><path d="M2.868 3.24a7 7 0 1 1-.043 9.475 1 1 0 0 1 1.478-1.348 5 5 0 1 0 .124-6.865l.796.645a.5.5 0 0 1-.193.873l-3.232.814a.5.5 0 0 1-.622-.504L1.3 3a.5.5 0 0 1 .814-.37l.754.61zM9 8h1a1 1 0 0 1 0 2H8a.997.997 0 0 1-1-1V6a1 1 0 1 1 2 0v2z"/></symbol><symbol viewBox="0 0 16 16" id="home" xmlns="http://www.w3.org/2000/svg"><path d="M9 13h3v-3H4v3h3v-1a1 1 0 0 1 2 0v1zm5-3v3.659c0 .729-.657 1.341-1.5 1.341h-9c-.843 0-1.5-.612-1.5-1.341V10h-.88C.502 10 0 9.486 0 8.853c0-.307.12-.601.333-.816l6.405-6.463a1.56 1.56 0 0 1 2.374-.052L15.66 8.03c.444.441.455 1.167.024 1.622a1.108 1.108 0 0 1-.804.348H14zM7.95 3.273l-4.595 4.64h9.264l-4.67-4.64z"/></symbol><symbol viewBox="0 0 16 16" id="hook" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1h4zm0 1H6v1a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V4zM7 8a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v2a3 3 0 0 1-3 3v4a2 2 0 1 0 4 0h-.44a.3.3 0 0 1-.25-.466l1.44-2.16a.3.3 0 0 1 .5 0l1.44 2.16a.3.3 0 0 1-.25.466H15a4 4 0 0 1-7 2.646A4 4 0 0 1 1 12H.56a.3.3 0 0 1-.25-.466l1.44-2.16a.3.3 0 0 1 .5 0l1.44 2.16a.3.3 0 0 1-.25.466H3a2 2 0 1 0 4 0V8z"/></symbol><symbol viewBox="0 0 16 16" id="hourglass" xmlns="http://www.w3.org/2000/svg"><path d="M10.331 4.889A2.988 2.988 0 0 0 11 3V2H5v1c0 .362.064.709.182 1.03l5.15.859zM3 14v-1c0-1.78.93-3.342 2.33-4.228.447-.327.67-.582.67-.764 0-.19-.242-.46-.725-.815A4.996 4.996 0 0 1 3 3V2H2a1 1 0 1 1 0-2h12a1 1 0 0 1 0 2h-1v1a4.997 4.997 0 0 1-2.39 4.266c-.407.3-.61.545-.61.734 0 .19.203.434.61.734A4.997 4.997 0 0 1 13 13v1h1a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2h1zm8 0v-1a3 3 0 0 0-6 0v1h6z"/></symbol><symbol viewBox="0 0 38 38" id="image-comment-dark" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle cx="19" cy="19" r="18" fill="#1F78D1"/><path fill="#FFF" fill-rule="nonzero" d="M19 38C8.507 38 0 29.493 0 19S8.507 0 19 0s19 8.507 19 19-8.507 19-19 19zm0-2c9.389 0 17-7.611 17-17S28.389 2 19 2 2 9.611 2 19s7.611 17 17 17zm-6.293-8.293c-.63.63-1.707.184-1.707-.707V15a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3h-7.586l-3.707 3.707zM13 24.586l2.293-2.293A1 1 0 0 1 16 22h8a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1H14a1 1 0 0 0-1 1v9.586z"/></g></symbol><symbol viewBox="0 0 38 38" id="image-comment-light" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle cx="19" cy="19" r="18" fill="#FFF"/><path fill="#1F78D1" fill-rule="nonzero" d="M19 38C8.507 38 0 29.493 0 19S8.507 0 19 0s19 8.507 19 19-8.507 19-19 19zm0-2c9.389 0 17-7.611 17-17S28.389 2 19 2 2 9.611 2 19s7.611 17 17 17zm-6.293-8.293c-.63.63-1.707.184-1.707-.707V15a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3h-7.586l-3.707 3.707zM13 24.586l2.293-2.293A1 1 0 0 1 16 22h8a1 1 0 0 0 1-1v-6a1 1 0 0 0-1-1H14a1 1 0 0 0-1 1v9.586z"/></g></symbol><symbol viewBox="0 0 16 16" id="import" xmlns="http://www.w3.org/2000/svg"><path d="M9 8h1a.5.5 0 0 1 .4.8l-2 2.667a.5.5 0 0 1-.8 0L5.6 8.8A.5.5 0 0 1 6 8h1V1a1 1 0 1 1 2 0v7zM0 8a1 1 0 1 1 2 0 6 6 0 1 0 12 0 1 1 0 0 1 2 0A8 8 0 1 1 0 8z"/></symbol><symbol viewBox="0 0 16 16" id="issue-block" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5.803 8a5.97 5.97 0 0 0-.462 1H4.5a.5.5 0 0 1 0-1h1.303zM4.5 5h3a.5.5 0 0 1 0 1h-3a.5.5 0 0 1 0-1zm7.5.083a6.04 6.04 0 0 0-2 0V3a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2.083a5.96 5.96 0 0 0 .72 2H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h6a3 3 0 0 1 3 3v2.083zm1.121 3.796zM11 16a5 5 0 1 1 0-10 5 5 0 0 1 0 10zm-1.293-2.292a3 3 0 0 0 4.001-4.001l-4.001 4zm-1.415-1.415l4.001-4a3 3 0 0 0-4.001 4.001z"/></symbol><symbol viewBox="0 0 16 16" id="issue-child" xmlns="http://www.w3.org/2000/svg"><path d="M11 8H5v1h1a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1h2V7a.997.997 0 0 1 1-1h3V4H4.5a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H9v2h3a.997.997 0 0 1 1 1v2h2a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1v-4a1 1 0 0 1 1-1h1V8zm-9 3v2h3v-2H2zm9 0v2h3v-2h-3z"/></symbol><symbol viewBox="0 0 16 16" id="issue-close" xmlns="http://www.w3.org/2000/svg"><path d="M7.536 8.657l2.828-2.829a1 1 0 0 1 1.414 1.415l-3.535 3.535a.997.997 0 0 1-1.415 0l-2.12-2.121A1 1 0 0 1 6.12 7.243l1.415 1.414zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"/></symbol><symbol viewBox="0 0 16 16" id="issue-duplicate" xmlns="http://www.w3.org/2000/svg"><path d="M10.874 2H12a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3h-2c-.918 0-1.74-.413-2.29-1.063a3.987 3.987 0 0 0 1.988-.984A1 1 0 0 0 10 14h2a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1h-1V3c0-.345-.044-.68-.126-1zM4 0h3a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4z"/></symbol><symbol viewBox="0 0 16 16" id="issue-external" xmlns="http://www.w3.org/2000/svg"><path d="M11 4a5.99 5.99 0 0 0-2 .341V3a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h2.528a6.003 6.003 0 0 0 2.705 1.736A2.99 2.99 0 0 1 8 16H4a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h4a3 3 0 0 1 3 3v1zM8.212 8.97l-.568-.876A.25.25 0 0 1 7.66 7.8l.404-.5a.25.25 0 0 1 .284-.076l.938.36c.256-.182.543-.325.85-.42l.323-.988a.25.25 0 0 1 .237-.173h.643a.25.25 0 0 1 .238.173l.321.989c.308.094.595.237.852.418l.937-.359a.25.25 0 0 1 .284.076l.404.5a.25.25 0 0 1 .016.293l-.568.875c.113.297.18.616.192.95l.9.54a.25.25 0 0 1 .114.27l-.145.627a.25.25 0 0 1-.221.192l-1.115.098a3.015 3.015 0 0 1-.512.608l.165 1.18a.25.25 0 0 1-.138.259l-.577.282a.25.25 0 0 1-.29-.051l-.874-.905a3.035 3.035 0 0 1-.608 0l-.875.905a.25.25 0 0 1-.29.05l-.577-.281a.25.25 0 0 1-.138-.26L9 12.254a3.015 3.015 0 0 1-.512-.607l-1.114-.098a.25.25 0 0 1-.222-.192l-.145-.627a.25.25 0 0 1 .115-.27l.899-.54c.012-.334.08-.653.192-.95zm2.806 2.034a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="issue-new" xmlns="http://www.w3.org/2000/svg"><path d="M10 2V1a1 1 0 0 1 2 0v1h1a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0V4H9a1 1 0 1 1 0-2h1zm0 6a1 1 0 0 1 2 0v5a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h1a1 1 0 1 1 0 2H5a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V8z"/></symbol><symbol viewBox="0 0 16 16" id="issue-open" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zm0-2a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-2a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="issue-open-m" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"/></symbol><symbol viewBox="0 0 16 16" id="issue-parent" xmlns="http://www.w3.org/2000/svg"><path d="M11 11H5v1h1.5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5H3v-2a.997.997 0 0 1 1-1h3V7H5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v4a1 1 0 0 1-1 1H9v2h3a.997.997 0 0 1 1 1v2h2.5a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5h-6a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5H11v-1zM6 3v2h4V3H6z"/></symbol><symbol viewBox="0 0 16 16" id="issues" xmlns="http://www.w3.org/2000/svg"><path d="M10.458 15.012l.311.055a3 3 0 0 0 3.476-2.433l1.389-7.879A3 3 0 0 0 13.2 1.28L11.23.933a3.002 3.002 0 0 0-.824-.031c.364.59.58 1.28.593 2.02l1.854.328a1 1 0 0 1 .811 1.158l-1.389 7.879a1 1 0 0 1-1.158.81l-.118-.02a3.98 3.98 0 0 1-.541 1.935zM3 0h4a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3z"/></symbol><symbol viewBox="0 0 16 16" id="italic" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5.5 12l2-8H6a1 1 0 1 1 0-2h6a1 1 0 0 1 0 2h-1.5l-2 8H10a1 1 0 0 1 0 2H4a1 1 0 0 1 0-2h1.5z"/></symbol><symbol viewBox="0 0 16 16" id="key" xmlns="http://www.w3.org/2000/svg"><path d="M7.575 6.689a4.002 4.002 0 0 1 6.274-4.86 4 4 0 0 1-4.86 6.274l-2.21 2.21.706.708a1 1 0 1 1-1.414 1.414l-.707-.707-.707.707.707.707a1 1 0 1 1-1.414 1.414l-.707-.707a1 1 0 0 1-1.414-1.414l5.746-5.746zm2.032-.618a2 2 0 1 0 2.828-2.828A2 2 0 0 0 9.607 6.07z"/></symbol><symbol viewBox="0 0 16 16" id="key-2" xmlns="http://www.w3.org/2000/svg"><path d="M5.172 14.157l-.344.344-2.485.133a.462.462 0 0 1-.497-.503l.14-2.24a.599.599 0 0 1 .177-.382l5.155-5.155a4 4 0 1 1 2.828 2.828l-1.439 1.44-1.06-.354-.708.707.354 1.06-.707.708-1.06-.354-.708.707.354 1.06zm6.01-8.839a1 1 0 1 0 1.414-1.414 1 1 0 0 0-1.414 1.414z"/></symbol><symbol viewBox="0 0 16 16" id="label" xmlns="http://www.w3.org/2000/svg"><path d="M11.782 14.718a3 3 0 0 1-4.242 0L1.652 8.829a2 2 0 0 1-.565-1.702l.54-3.703a2 2 0 0 1 1.69-1.69l3.703-.54a2 2 0 0 1 1.703.564l5.888 5.888a3 3 0 0 1 0 4.243l-2.829 2.829zm1.415-5.657L7.309 3.173l-3.703.54-.54 3.702 5.888 5.888a1 1 0 0 0 1.414 0l2.829-2.828a1 1 0 0 0 0-1.414zM5.732 5.525A1 1 0 1 1 7.146 6.94a1 1 0 0 1-1.414-1.414z"/></symbol><symbol viewBox="0 0 16 16" id="labels" xmlns="http://www.w3.org/2000/svg"><path d="M9.424 2.254l2.08-.905a1 1 0 0 1 1.206.326l3.013 4.12a1 1 0 0 1 .16.849l-1.947 7.264a3 3 0 0 1-3.675 2.122l-.5-.135a3.999 3.999 0 0 0 1.082-1.782 1 1 0 0 0 1.16-.722l1.823-6.802-2.258-3.087-.687.299a2 2 0 0 0-.628-.88l-.829-.667zM.377 3.7L4.4.498a1 1 0 0 1 1.25.003L9.627 3.7a1 1 0 0 1 .373.78V13a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V4.482A1 1 0 0 1 .377 3.7zM2 13a1 1 0 0 0 1 1h4a1 1 0 0 0 1-1V4.958L5.02 2.561 2 4.964V13zm3-6a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="leave" xmlns="http://www.w3.org/2000/svg"><path d="M11 7V5.883a.5.5 0 0 1 .757-.429l3.528 2.117a.5.5 0 0 1 0 .858l-3.528 2.117a.5.5 0 0 1-.757-.43V9H7a1 1 0 1 1 0-2h4zm-2 6.256a1 1 0 0 1 2 0A2.744 2.744 0 0 1 8.256 16H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h5.19A2.81 2.81 0 0 1 11 2.81a1 1 0 0 1-2 0A.81.81 0 0 0 8.19 2H3a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h5.256c.41 0 .744-.333.744-.744z"/></symbol><symbol viewBox="0 0 16 16" id="level-up" xmlns="http://www.w3.org/2000/svg"><path fill="#2E2E2E" fill-rule="evenodd" d="M7 6h3.489a.5.5 0 0 0 .373-.832L6.374.117a.5.5 0 0 0-.748 0l-4.488 5.05A.5.5 0 0 0 1.51 6H5v7a3 3 0 0 0 3 3h6a1 1 0 0 0 0-2H8a1 1 0 0 1-1-1V6z"/></symbol><symbol viewBox="0 0 16 16" id="license" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M12.56 8.9l2.66 4.606a.3.3 0 0 1-.243.45l-1.678.094a.1.1 0 0 0-.078.044l-.953 1.432a.3.3 0 0 1-.51-.016L9.097 10.9a5.994 5.994 0 0 0 3.464-2zm-5.23 2.063L4.707 15.51a.3.3 0 0 1-.51.016l-.953-1.432a.1.1 0 0 0-.078-.044l-1.678-.094a.3.3 0 0 1-.243-.45l2.48-4.297a5.983 5.983 0 0 0 3.607 1.754zM8 10A5 5 0 1 1 8 0a5 5 0 0 1 0 10zm0-2a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-1a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="link" xmlns="http://www.w3.org/2000/svg"><path d="M6.986 3.35l2.12-2.122a4 4 0 0 1 5.657 5.657l-2.828 2.829a4 4 0 0 1-5.657 0 1 1 0 0 1 1.414-1.415 2 2 0 0 0 2.829 0l2.828-2.828a2 2 0 1 0-2.828-2.828l-1.001 1a5.018 5.018 0 0 0-2.534-.294zm2.12 9.192l-2.12 2.121a4 4 0 1 1-5.658-5.656l2.829-2.829a4 4 0 0 1 5.657 0 1 1 0 1 1-1.415 1.414 2 2 0 0 0-2.828 0l-2.828 2.829a2 2 0 1 0 2.828 2.828l1.001-1.001a5.018 5.018 0 0 0 2.534.294z"/></symbol><symbol viewBox="0 0 16 16" id="list-bulleted" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0 5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4-7h10a1 1 0 0 1 0 2H5a1 1 0 1 1 0-2zm0 5h10a1 1 0 0 1 0 2H5a1 1 0 1 1 0-2zm-4 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4-2h10a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="list-numbered" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 2h8a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2zm0 5h8a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2zm0 5h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2zM1.156 5v-.828h.816V2.204h-.72v-.636c.432-.084.708-.192.996-.372h.756v2.976h.684V5H1.156zm-.18 5v-.588c.9-.828 1.596-1.464 1.596-1.98 0-.342-.192-.504-.468-.504-.252 0-.444.18-.624.36l-.552-.552c.396-.42.756-.612 1.32-.612.768 0 1.308.492 1.308 1.248 0 .612-.576 1.284-1.092 1.812.192-.024.468-.048.636-.048h.636V10H.976zm1.26 5.072c-.618 0-1.068-.204-1.356-.54l.468-.648c.234.216.51.36.78.36.336 0 .552-.12.552-.36 0-.288-.15-.456-.948-.456v-.72c.636 0 .828-.168.828-.432 0-.228-.138-.348-.396-.348-.252 0-.432.108-.672.312l-.516-.624c.372-.312.768-.492 1.236-.492.84 0 1.38.384 1.38 1.074 0 .366-.204.642-.612.822v.024c.432.132.732.432.732.912 0 .72-.684 1.116-1.476 1.116z"/></symbol><symbol viewBox="0 0 16 16" id="location" xmlns="http://www.w3.org/2000/svg"><path d="M8.755 15.144a1 1 0 0 1-1.51 0C3.748 11.114 2 8.065 2 6a6 6 0 1 1 12 0c0 2.065-1.748 5.113-5.245 9.144zM12 6a4 4 0 1 0-8 0c0 1.314 1.312 3.71 4 6.944C10.688 9.71 12 7.314 12 6zM8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="location-dot" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6.314 13.087C4.382 13.295 3 13.85 3 14.5c0 .828 2.239 1.5 5 1.5s5-.672 5-1.5c0-.65-1.382-1.205-3.314-1.413l-.202.225a2 2 0 0 1-2.968 0l-.202-.225zm2.428-.445a1 1 0 0 1-1.484 0C4.419 9.5 3 7.037 3 5.252 3 2.353 5.239 0 8 0s5 2.352 5 5.253c0 1.784-1.42 4.247-4.258 7.389zM11 5.252C11 3.436 9.634 2 8 2S5 3.435 5 5.253c0 1.027.974 2.824 3 5.203 2.026-2.38 3-4.176 3-5.203zM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="lock" xmlns="http://www.w3.org/2000/svg"><path d="M10 5V4h2v1a3 3 0 0 1 3 3v5a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V8a3 3 0 0 1 3-3V4h2v1h4zM4 7a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1H4zm0-3a4 4 0 1 1 8 0h-2a2 2 0 1 0-4 0H4z"/></symbol><symbol viewBox="0 0 16 16" id="lock-open" xmlns="http://www.w3.org/2000/svg"><path d="M4.044 4a4 4 0 0 1 6.99-2.658 1 1 0 1 1-1.495 1.33A2 2 0 0 0 6.044 4a.998.998 0 0 1-.07.367v.701H12a3 3 0 0 1 3 3v5a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3v-5a3 3 0 0 1 2.974-3V4h.07zM4 7.07a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H4z"/></symbol><symbol viewBox="0 0 16 16" id="log" xmlns="http://www.w3.org/2000/svg"><path d="M4 0h8a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H4zm1 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm0 3a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3-5h3a1 1 0 0 1 0 2H8a1 1 0 1 1 0-2zm0 3h3a1 1 0 0 1 0 2H8a1 1 0 1 1 0-2zm-3 5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm3-2h3a1 1 0 0 1 0 2H8a1 1 0 0 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="mail" xmlns="http://www.w3.org/2000/svg"><path d="M14 5.6L9.338 9.796a2 2 0 0 1-2.676 0L2 5.6V11a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V5.6zM3 2h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zm.212 2L8 8.31 12.788 4H3.212z"/></symbol><symbol viewBox="0 0 16 16" id="menu" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1.143 2h13.714C15.488 2 16 2.448 16 3s-.512 1-1.143 1H1.143C.512 4 0 3.552 0 3s.512-1 1.143-1zm0 5h13.714C15.488 7 16 7.448 16 8s-.512 1-1.143 1H1.143C.512 9 0 8.552 0 8s.512-1 1.143-1zm0 5h13.714c.631 0 1.143.448 1.143 1s-.512 1-1.143 1H1.143C.512 14 0 13.552 0 13s.512-1 1.143-1z"/></symbol><symbol viewBox="0 0 16 16" id="merge-request-close" xmlns="http://www.w3.org/2000/svg"><path d="M9.414 8l1.414 1.414a1 1 0 1 1-1.414 1.414L8 9.414l-1.414 1.414a1 1 0 1 1-1.414-1.414L6.586 8 5.172 6.586a1 1 0 1 1 1.414-1.414L8 6.586l1.414-1.414a1 1 0 1 1 1.414 1.414L9.414 8zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"/></symbol><symbol viewBox="0 0 16 16" id="messages" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.588 8.942l1.173 5.862A1 1 0 0 1 8.78 16H7.22a1 1 0 0 1-.98-1.196l1.172-5.862a3.014 3.014 0 0 0 1.176 0zM8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4zM4.464 2.464L5.88 3.88a3 3 0 0 0 0 4.242L4.464 9.536a5 5 0 0 1 0-7.072zm7.072 7.072L10.12 8.12a3 3 0 0 0 0-4.242l1.415-1.415a5 5 0 0 1 0 7.072zM2.343.343l1.414 1.414a6 6 0 0 0 0 8.486l-1.414 1.414a8 8 0 0 1 0-11.314zm11.314 11.314l-1.414-1.414a6 6 0 0 0 0-8.486L13.657.343a8 8 0 0 1 0 11.314z"/></symbol><symbol viewBox="0 0 16 16" id="mobile-issue-close" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5.657 10.728L2.12 7.192A1 1 0 1 0 .707 8.607l4.243 4.242a.997.997 0 0 0 1.414 0l8.485-8.485a1 1 0 1 0-1.414-1.414l-7.778 7.778z"/></symbol><symbol viewBox="0 0 16 16" id="monitor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 13v1h3a1 1 0 0 1 0 2H3a1 1 0 0 1 0-2h3v-1H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v7a3 3 0 0 1-3 3h-3zM3 2a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3zm5.723 6.416l-2.66-1.773-1.71 1.71a.5.5 0 1 1-.707-.707l2-2a.5.5 0 0 1 .631-.062l2.66 1.773 2.71-2.71a.5.5 0 0 1 .707.707l-3 3a.5.5 0 0 1-.631.062z"/></symbol><symbol viewBox="0 0 16 16" id="more" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 4a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm0 6a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm0 6a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="notifications" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M6 14H2.435a2 2 0 0 1-1.761-2.947c.962-1.788 1.521-3.065 1.68-3.832.322-1.566.947-5.501 4.65-6.134a1 1 0 1 1 1.994-.024c3.755.528 4.375 4.27 4.761 6.043.188.86.742 2.188 1.661 3.982A2 2 0 0 1 13.64 14H10a2 2 0 1 1-4 0zm5.805-6.468c-.325-1.492-.37-1.674-.61-2.288C10.6 3.716 9.742 3 8.07 3c-1.608 0-2.49.718-3.103 2.197-.28.676-.356.982-.654 2.428-.208 1.012-.827 2.424-1.877 4.375H13.64c-.993-1.937-1.6-3.396-1.835-4.468z"/></symbol><symbol viewBox="0 0 16 16" id="notifications-off" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M13.26 5.089c.243.757.382 1.478.5 2.017.187.86.74 2.188 1.66 3.982A2 2 0 0 1 13.64 14H10a2 2 0 1 1-4 0H4.35l2-2h7.29c-.993-1.937-1.6-3.396-1.835-4.468-.07-.326-.129-.59-.178-.81l1.634-1.633zM10.943 1.75l-1.48 1.48C9.07 3.076 8.612 3 8.069 3c-1.608 0-2.49.718-3.103 2.197-.28.676-.356.982-.654 2.428-.065.317-.17.673-.317 1.073L.45 12.242a1.99 1.99 0 0 1 .224-1.19c.962-1.787 1.521-3.064 1.68-3.831.322-1.566.947-5.501 4.65-6.134a1 1 0 1 1 1.994-.024 4.867 4.867 0 0 1 1.944.688zm2.932-.105a1 1 0 0 1 0 1.415L2.561 14.374a1 1 0 1 1-1.415-1.414L12.46 1.646a1 1 0 0 1 1.414 0z"/></symbol><symbol viewBox="0 0 16 16" id="overview" xmlns="http://www.w3.org/2000/svg"><path d="M2 0h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 2v3h3V2H2zm9-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-3a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 2v3h3V2h-3zM2 9h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2zm0 2v3h3v-3H2zm9-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2h-3a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2zm0 2v3h3v-3h-3z"/></symbol><symbol viewBox="0 0 16 16" id="pencil" xmlns="http://www.w3.org/2000/svg"><path d="M13.02 1.293l1.414 1.414a1 1 0 0 1 0 1.414L4.119 14.436a1 1 0 0 1-.704.293l-2.407.008L1 12.316a1 1 0 0 1 .293-.71L11.605 1.292a1 1 0 0 1 1.414 0zm-1.416 1.415l-.707.707L12.31 4.83l.707-.707-1.414-1.415zM3.411 13.73l1.123-1.122H3.12v-1.415L2 12.312l.005 1.422 1.406-.005z"/></symbol><symbol viewBox="0 0 16 16" id="pencil-square" xmlns="http://www.w3.org/2000/svg"><path d="M12 9a1 1 0 0 1 2 0v4a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h4a1 1 0 1 1 0 2H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V9zm.778-7.179l1.414 1.415-6.476 6.476a1 1 0 0 1-.498.27l-1.51.325.323-1.512a1 1 0 0 1 .27-.497l6.477-6.477zM15.607.407a1 1 0 0 1 0 1.414l-.708.707-1.414-1.414.707-.707a1 1 0 0 1 1.415 0z"/></symbol><symbol viewBox="0 0 16 16" id="pipeline" xmlns="http://www.w3.org/2000/svg"><path d="M8.969 7.25a2 2 0 1 1-1.938 0A1.002 1.002 0 0 1 7 7V5.083a.2.2 0 0 1 .06-.142l.877-.87a.1.1 0 0 1 .141 0l.864.87A.2.2 0 0 1 9 5.083V7c0 .086-.01.17-.031.25zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zm4.5-4a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm0-3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-2 6a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm0-9a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-5 9a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm0-9a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm-2 6a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zm0-3a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1zM8 10a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="play" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2.765 15.835c-.545.321-1.258.159-1.593-.363A1.075 1.075 0 0 1 1 14.89V1.11C1 .496 1.518 0 2.158 0c.214 0 .424.057.607.165l11.684 6.89c.544.321.714 1.005.38 1.526a1.135 1.135 0 0 1-.38.364l-11.684 6.89z"/></symbol><symbol viewBox="0 0 16 16" id="plus" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7 7H2a1 1 0 1 0 0 2h5v5a1 1 0 0 0 2 0V9h5a1 1 0 0 0 0-2H9V2a1 1 0 1 0-2 0v5z"/></symbol><symbol viewBox="0 0 16 16" id="plus-square" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M9 7V4a1 1 0 1 0-2 0v3H4a1 1 0 1 0 0 2h3v3a1 1 0 0 0 2 0V9h3a1 1 0 0 0 0-2H9zM3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3z"/></symbol><symbol viewBox="0 0 16 16" id="plus-square-o" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7 7V5a1 1 0 1 1 2 0v2h2a1 1 0 0 1 0 2H9v2a1 1 0 0 1-2 0V9H5a1 1 0 1 1 0-2h2zM3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3z"/></symbol><symbol viewBox="0 0 16 16" id="podcast" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.588 8.942l1.173 5.862a1 1 0 0 1-.785 1.177A1 1 0 0 1 8.78 16H7.22a1 1 0 0 1-1-1 1 1 0 0 1 .02-.196l1.172-5.862a3.014 3.014 0 0 0 1.176 0zM8 7.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM4.464 2.464A1 1 0 0 1 5.88 3.88a3 3 0 0 0 0 4.242 1 1 0 0 1-1.415 1.415 5 5 0 0 1 0-7.072zm7.072 7.072A1 1 0 0 1 10.12 8.12a3 3 0 0 0 0-4.242 1 1 0 0 1 1.415-1.415 5 5 0 0 1 0 7.072zM2.343.343a1 1 0 1 1 1.414 1.414 6 6 0 0 0 0 8.486 1 1 0 1 1-1.414 1.414 8 8 0 0 1 0-11.314zm11.314 11.314a1 1 0 1 1-1.414-1.414 6 6 0 0 0 0-8.486A1 1 0 0 1 13.657.343a8 8 0 0 1 0 11.314z"/></symbol><symbol viewBox="0 0 16 16" id="preferences" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M5 12h10a1 1 0 0 1 0 2H5a1 1 0 0 1-2 0v-2a1 1 0 0 1 2 0zm-3 0H1a1 1 0 0 0 0 2h1v-2zm11-5h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-2 0V7a1 1 0 0 1 2 0zm-3 0H1a1 1 0 1 0 0 2h9V7zM6 2h9a1 1 0 0 1 0 2H6a1 1 0 1 1-2 0V2a1 1 0 1 1 2 0zM3 2H1a1 1 0 1 0 0 2h2V2z"/></symbol><symbol viewBox="0 0 16 16" id="profile" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zm-4.274-3.404C4.412 9.709 5.694 9 8 9c2.313 0 3.595.7 4.28 1.586A4.997 4.997 0 0 1 8 13a4.997 4.997 0 0 1-4.274-2.404zM8 8a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"/></symbol><symbol viewBox="0 0 16 16" id="project" xmlns="http://www.w3.org/2000/svg"><path d="M8.462 2.177l-.038.044a.505.505 0 0 0 .038-.044zm-.787 0a.5.5 0 0 0 .038.043l-.038-.043zM3.706 7h8.725L8.069 2.585 3.706 7zM7 13.369V12a1 1 0 0 1 2 0v1.369h3V9H4v4.369h3zM14 9v4.836c0 .833-.657 1.533-1.5 1.533h-9c-.843 0-1.5-.7-1.5-1.533V9h-.448a1.1 1.1 0 0 1-.783-1.873L6.934.887a1.5 1.5 0 0 1 2.269 0l6.165 6.24A1.1 1.1 0 0 1 14.585 9H14z"/></symbol><symbol viewBox="0 0 16 16" id="push-rules" xmlns="http://www.w3.org/2000/svg"><path d="M6.268 9a2 2 0 0 1 3.464 0H11a1 1 0 0 1 0 2H9.732a2 2 0 0 1-3.464 0H5a1 1 0 0 1 0-2h1.268zM7 2H4a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1h-1v3.515a.3.3 0 0 1-.434.268l-1.432-.716a.3.3 0 0 0-.268 0l-1.432.716A.3.3 0 0 1 7 5.515V2zM4 0h8a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H4a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm4 11a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="question" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm-1.46-5.602h2.233a3.97 3.97 0 0 1 .051-.558c.029-.17.073-.326.133-.469.06-.143.14-.28.242-.41.102-.13.228-.263.38-.399.26-.24.504-.467.733-.683a5.03 5.03 0 0 0 .598-.668c.17-.23.302-.477.399-.742a2.66 2.66 0 0 0 .144-.907c0-.505-.083-.95-.25-1.335a2.55 2.55 0 0 0-.723-.97 3.2 3.2 0 0 0-1.152-.589 5.441 5.441 0 0 0-1.531-.2c-.516 0-.998.063-1.445.188a3.19 3.19 0 0 0-1.168.59c-.331.268-.594.61-.79 1.027-.195.417-.295.917-.3 1.5h2.64c.006-.224.04-.416.102-.578.062-.161.142-.293.238-.394a.921.921 0 0 1 .332-.227 1.04 1.04 0 0 1 .39-.074c.34 0 .593.095.763.285.169.19.254.488.254.895 0 .328-.106.63-.317.906-.21.276-.499.565-.863.867-.214.182-.39.374-.531.574-.141.2-.253.42-.336.657a3.656 3.656 0 0 0-.176.777 7.89 7.89 0 0 0-.05.937zm-.321 2.375c0 .188.035.362.105.524.07.161.17.3.301.418.13.117.284.21.46.277.178.068.376.102.595.102.218 0 .416-.034.593-.102.178-.068.331-.16.461-.277a1.2 1.2 0 0 0 .301-.418c.07-.162.106-.336.106-.524a1.3 1.3 0 0 0-.106-.523 1.2 1.2 0 0 0-.3-.418 1.461 1.461 0 0 0-.462-.277 1.651 1.651 0 0 0-.593-.102c-.22 0-.417.034-.594.102a1.46 1.46 0 0 0-.461.277 1.2 1.2 0 0 0-.3.418 1.284 1.284 0 0 0-.106.523z"/></symbol><symbol viewBox="0 0 16 16" id="question-o" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zm-.778-4.151c0-.301.014-.575.044-.82a3.2 3.2 0 0 1 .154-.68c.073-.208.17-.4.294-.575.123-.176.278-.343.465-.503a4.81 4.81 0 0 0 .755-.758c.185-.242.277-.506.277-.793 0-.356-.074-.617-.222-.783-.148-.166-.37-.25-.667-.25a.92.92 0 0 0-.342.065.806.806 0 0 0-.29.199 1.04 1.04 0 0 0-.209.345 1.5 1.5 0 0 0-.088.506H5.082c.005-.51.092-.948.263-1.313.171-.364.401-.664.69-.899.29-.234.63-.406 1.023-.516a4.66 4.66 0 0 1 1.264-.164c.497 0 .944.058 1.34.174.397.117.733.289 1.008.517.276.227.487.51.633.847.146.337.218.727.218 1.17 0 .295-.042.56-.126.792a2.52 2.52 0 0 1-.349.65 4.4 4.4 0 0 1-.523.584c-.2.19-.414.389-.642.598a2.73 2.73 0 0 0-.332.349c-.089.114-.16.233-.212.359a1.868 1.868 0 0 0-.116.41 3.39 3.39 0 0 0-.044.489H7.222zm-.28 2.078c0-.164.03-.317.092-.458a1.05 1.05 0 0 1 .263-.366c.114-.103.248-.183.403-.243a1.45 1.45 0 0 1 .52-.089c.191 0 .364.03.52.09.154.059.289.14.403.242.114.103.201.224.263.366.061.141.092.294.092.458 0 .164-.03.316-.092.458a1.05 1.05 0 0 1-.263.365 1.278 1.278 0 0 1-.404.243 1.43 1.43 0 0 1-.52.089c-.19 0-.364-.03-.519-.089-.155-.06-.29-.14-.403-.243a1.05 1.05 0 0 1-.263-.365 1.135 1.135 0 0 1-.093-.458z"/></symbol><symbol viewBox="0 0 16 16" id="quote" xmlns="http://www.w3.org/2000/svg"><path d="M15 3v8a3 3 0 0 1-3 3 1 1 0 0 1 0-2 1 1 0 0 0 1-1V9h-2a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h3a1 1 0 0 1 1 1zM7 3v8a3 3 0 0 1-3 3 1 1 0 0 1 0-2 1 1 0 0 0 1-1V9H3a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h3a1 1 0 0 1 1 1z"/></symbol><symbol viewBox="0 0 16 16" id="redo" xmlns="http://www.w3.org/2000/svg"><path d="M4.625 4.423A4.897 4.897 0 0 1 8.079 3c2.73 0 4.944 2.239 4.944 5s-2.214 5-4.944 5c-1.41 0-2.723-.6-3.655-1.633a.98.98 0 0 0-1.397-.066 1.008 1.008 0 0 0-.064 1.413A6.87 6.87 0 0 0 8.079 15C11.9 15 15 11.866 15 8s-3.099-7-6.921-7A6.866 6.866 0 0 0 3.08 3.158L1.833 2.137a.49.49 0 0 0-.695.074.504.504 0 0 0-.11.311L1 7.26a.497.497 0 0 0 .6.492l4.576-1.013a.5.5 0 0 0 .206-.877L4.625 4.423z"/></symbol><symbol viewBox="0 0 16 16" id="remove" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2 3a1 1 0 1 1 0-2h12a1 1 0 0 1 0 2v10a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V3zm3-2a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1H5zM4 3v10a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V3H4zm2.5 2a.5.5 0 0 1 .5.5v6a.5.5 0 1 1-1 0v-6a.5.5 0 0 1 .5-.5zm3 0a.5.5 0 0 1 .5.5v6a.5.5 0 1 1-1 0v-6a.5.5 0 0 1 .5-.5z"/></symbol><symbol viewBox="0 0 16 16" id="repeat" xmlns="http://www.w3.org/2000/svg"><path d="M11.375 4.423A4.897 4.897 0 0 0 7.921 3c-2.73 0-4.944 2.239-4.944 5s2.214 5 4.944 5c1.41 0 2.723-.6 3.655-1.633a.98.98 0 0 1 1.397-.066c.403.373.432 1.005.064 1.413A6.87 6.87 0 0 1 7.921 15C4.1 15 1 11.866 1 8s3.099-7 6.921-7c1.915 0 3.706.792 4.999 2.158l1.247-1.021a.49.49 0 0 1 .695.074c.07.088.11.198.11.311L15 7.26a.497.497 0 0 1-.6.492L9.824 6.739a.5.5 0 0 1-.206-.877l1.757-1.439z"/></symbol><symbol viewBox="0 0 16 16" id="retry" xmlns="http://www.w3.org/2000/svg"><path d="M4.114 6.958a4 4 0 0 0 5.283 4.775 1 1 0 1 1 .712 1.87A6 6 0 0 1 2.182 6.44l-.741-.2a.5.5 0 0 1-.12-.915l2.195-1.268a.5.5 0 0 1 .683.183l1.268 2.196a.5.5 0 0 1-.563.733l-.79-.212zm7.777 2.084a4 4 0 0 0-5.284-4.775 1 1 0 0 1-.712-1.87 6 6 0 0 1 7.927 7.162l.742.2a.5.5 0 0 1 .12.915l-2.196 1.268a.5.5 0 0 1-.683-.183l-1.267-2.196a.5.5 0 0 1 .562-.733l.79.212z"/></symbol><symbol viewBox="0 0 16 16" id="scale" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M13.99 9a.792.792 0 0 0-.078-.231L13 7l-.912 1.769a.791.791 0 0 0-.077.231h1.978zm-10 0a.792.792 0 0 0-.078-.231L3 7l-.912 1.769A.791.791 0 0 0 2.011 9h1.978zM2 0h12a1 1 0 0 1 0 2H2a1 1 0 1 1 0-2zm3 14h6a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2zM8 4a1 1 0 0 1 1 1v9H7V5a1 1 0 0 1 1-1zm-4.53-.714l2.265 4.735c.68 1.42.006 3.091-1.504 3.73A3.161 3.161 0 0 1 3 12c-1.657 0-3-1.263-3-2.821 0-.4.09-.794.264-1.158L2.53 3.286a.53.53 0 0 1 .94 0zm10 0l2.265 4.735c.68 1.42.006 3.091-1.504 3.73A3.161 3.161 0 0 1 13 12c-1.657 0-3-1.263-3-2.821 0-.4.09-.794.264-1.158l2.266-4.735a.53.53 0 0 1 .94 0z"/></symbol><symbol viewBox="0 0 16 16" id="screen-full" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M14 14v-2a1 1 0 0 1 2 0v3a.997.997 0 0 1-1 1h-3a1 1 0 0 1 0-2h2zM2 14v-2a1 1 0 0 0-2 0v3a1 1 0 0 0 1 1h3a1 1 0 0 0 0-2H2zM15.707.293A.997.997 0 0 1 16 1v3a1 1 0 0 1-2 0V2h-2a1 1 0 0 1 0-2h3c.276 0 .526.112.707.293zM2 2v2a1 1 0 1 1-2 0V1a.997.997 0 0 1 1-1h3a1 1 0 1 1 0 2H2zm4 4h4a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z"/></symbol><symbol viewBox="0 0 16 16" id="screen-normal" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M3 3V1a1 1 0 1 1 2 0v3a.997.997 0 0 1-1 1H1a1 1 0 1 1 0-2h2zm10 0h2a1 1 0 0 1 0 2h-3a.997.997 0 0 1-1-1V1a1 1 0 0 1 2 0v2zM3 13H1a1 1 0 0 1 0-2h3a.997.997 0 0 1 1 1v3a1 1 0 0 1-2 0v-2zm10 0v2a1 1 0 0 1-2 0v-3a.997.997 0 0 1 1-1h3a1 1 0 0 1 0 2h-2zM6.5 7h3a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5z"/></symbol><symbol viewBox="0 0 12 16" id="scroll_down" xmlns="http://www.w3.org/2000/svg"><path class="fcfirst-triangle" d="M1.048 14.155a.508.508 0 0 0-.32.105c-.091.07-.136.154-.136.25v.71c0 .095.045.178.135.249.09.07.197.105.321.105h10.043a.51.51 0 0 0 .321-.105c.09-.07.136-.154.136-.25v-.71c0-.095-.045-.178-.136-.249a.508.508 0 0 0-.32-.105"/><path class="fcsecond-triangle" d="M.687 8.027c-.09-.087-.122-.16-.093-.22.028-.06.104-.09.228-.09h10.5c.123 0 .2.03.228.09.029.06-.002.133-.093.22L6.393 12.91a.458.458 0 0 1-.136.089h-.37a.626.626 0 0 1-.136-.09"/><path class="fcthird-triangle" d="M.687 1.027C.597.94.565.867.594.807c.028-.06.104-.09.228-.09h10.5c.123 0 .2.03.228.09.029.06-.002.133-.093.22L6.393 5.91a.458.458 0 0 1-.136.09h-.37a.626.626 0 0 1-.136-.09"/></symbol><symbol viewBox="0 0 12 16" id="scroll_up" xmlns="http://www.w3.org/2000/svg"><path d="M1.048 1.845a.508.508 0 0 1-.32-.105c-.091-.07-.136-.154-.136-.25V.78c0-.095.045-.178.135-.249a.508.508 0 0 1 .321-.105h10.043a.51.51 0 0 1 .321.105c.09.07.136.154.136.25v.71c0 .095-.045.178-.136.249a.508.508 0 0 1-.32.105M.687 7.973c-.09.087-.122.16-.093.22.028.06.104.09.228.09h10.5c.123 0 .2-.03.228-.09.029-.06-.002-.133-.093-.22L6.393 3.09A.458.458 0 0 0 6.257 3h-.37a.626.626 0 0 0-.136.09M.687 14.973c-.09.087-.122.16-.093.22.028.06.104.09.228.09h10.5c.123 0 .2-.03.228-.09.029-.06-.002-.133-.093-.22L6.393 10.09a.458.458 0 0 0-.136-.09h-.37a.626.626 0 0 0-.136.09"/></symbol><symbol viewBox="0 0 16 16" id="search" xmlns="http://www.w3.org/2000/svg"><path d="M8.853 8.854a3.5 3.5 0 1 0-4.95-4.95 3.5 3.5 0 0 0 4.95 4.95zm.207 2.328a5.5 5.5 0 1 1 2.121-2.121l3.329 3.328a1.5 1.5 0 0 1-2.121 2.121L9.06 11.182z"/></symbol><symbol viewBox="0 0 16 16" id="settings" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2.415 5.803L1.317 4.084A.5.5 0 0 1 1.35 3.5l.805-.994a.5.5 0 0 1 .564-.153l1.878.704a5.975 5.975 0 0 1 1.65-.797L6.885.342A.5.5 0 0 1 7.36 0h1.28a.5.5 0 0 1 .474.342l.639 1.918a5.97 5.97 0 0 1 1.65.797l1.877-.704a.5.5 0 0 1 .565.153l.805.994a.5.5 0 0 1 .032.584l-1.097 1.719c.217.551.354 1.143.399 1.76l1.731 1.058a.5.5 0 0 1 .227.54l-.288 1.246a.5.5 0 0 1-.44.385l-2.008.19a6.026 6.026 0 0 1-1.142 1.431l.265 1.995a.5.5 0 0 1-.277.516l-1.15.56a.5.5 0 0 1-.576-.1l-1.424-1.452a6.047 6.047 0 0 1-1.804 0l-1.425 1.453a.5.5 0 0 1-.576.1l-1.15-.561a.5.5 0 0 1-.276-.516l.265-1.995a6.026 6.026 0 0 1-1.143-1.43l-2.008-.191a.5.5 0 0 1-.44-.385L.058 9.16a.5.5 0 0 1 .226-.539l1.732-1.058a5.968 5.968 0 0 1 .399-1.76zM8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"/></symbol><symbol viewBox="0 0 16 16" id="shield" xmlns="http://www.w3.org/2000/svg"><path d="M4 0h8c1.657 0 3 1.373 3 3.067v7.346c0 1.065-.54 2.053-1.426 2.611l-4 2.52a2.944 2.944 0 0 1-3.148 0l-4-2.52A3.083 3.083 0 0 1 1 10.414V3.066C1 1.373 2.343 0 4 0zm0 2.045c-.552 0-1 .457-1 1.022v7.346c0 .355.18.685.475.87l4 2.52a.981.981 0 0 0 1.05 0l4-2.52c.295-.185.475-.515.475-.87V3.067c0-.565-.448-1.022-1-1.022H4zm0 1.533c0-.282.224-.511.5-.511h4V12.1a.52.52 0 0 1-.069.258.494.494 0 0 1-.684.183l-3.5-2.098a.513.513 0 0 1-.247-.44V3.577z"/></symbol><symbol viewBox="0 0 16 16" id="slight-frown" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zm-2.163-3.275a2.499 2.499 0 0 1 4.343.03.5.5 0 0 1-.871.49 1.5 1.5 0 0 0-2.607-.018.5.5 0 1 1-.865-.502zM5 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm6 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="slight-smile" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zM5 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm6 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-5.163 2.254a.5.5 0 1 1 .865-.502 1.499 1.499 0 0 0 2.607-.018.5.5 0 1 1 .871.49 2.499 2.499 0 0 1-4.343.03z"/></symbol><symbol viewBox="0 0 16 16" id="smile" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zM6.18 6.27a.5.5 0 0 1-.873.487.5.5 0 0 0-.872-.003.5.5 0 1 1-.87-.495 1.5 1.5 0 0 1 2.616.012zm6 0a.5.5 0 1 1-.873.487.5.5 0 0 0-.872-.003.5.5 0 1 1-.87-.495 1.5 1.5 0 0 1 2.616.012zM5 9a3 3 0 0 0 6 0H5z"/></symbol><symbol viewBox="0 0 16 16" id="smiley" xmlns="http://www.w3.org/2000/svg"><path d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12zM5 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm6 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zM5 9h6a3 3 0 0 1-6 0z"/></symbol><symbol viewBox="0 0 16 16" id="snippet" xmlns="http://www.w3.org/2000/svg"><path d="M10.67 9.31a3.001 3.001 0 0 1 2.062 5.546 3 3 0 0 1-3.771-4.559 1.007 1.007 0 0 1-.095-.137l-4.5-7.794a1 1 0 0 1 1.732-1l4.5 7.794c.028.05.052.1.071.15zm-3.283.35l-.289.5c-.028.05-.06.095-.095.137a3.001 3.001 0 0 1-3.77 4.56A3 3 0 0 1 5.294 9.31c.02-.051.043-.102.071-.15l.866-1.5 1.155 2zm2.31-4l-1.156-2 1.325-2.294a1 1 0 0 1 1.732 1L9.696 5.66zm-5.465 7.464a1 1 0 1 0 1-1.732 1 1 0 0 0-1 1.732zm7.5 0a1 1 0 1 0-1-1.732 1 1 0 0 0 1 1.732z"/></symbol><symbol viewBox="0 0 16 16" id="spam" xmlns="http://www.w3.org/2000/svg"><path d="M8.75.433l5.428 3.134a1.5 1.5 0 0 1 .75 1.299v6.268a1.5 1.5 0 0 1-.75 1.299L8.75 15.567a1.5 1.5 0 0 1-1.5 0l-5.428-3.134a1.5 1.5 0 0 1-.75-1.299V4.866a1.5 1.5 0 0 1 .75-1.299L7.25.433a1.5 1.5 0 0 1 1.5 0zM3.072 5.155v5.69L8 13.691l4.928-2.846v-5.69L8 2.309 3.072 5.155zM8 4a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0V5a1 1 0 0 1 1-1zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 14 14" id="spinner" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><circle cx="7" cy="7" r="6" stroke="#000" stroke-opacity=".1" stroke-width="2"/><path fill="#000" fill-opacity=".1" fill-rule="nonzero" d="M7 0a7 7 0 0 1 7 7h-2a5 5 0 0 0-5-5V0z"/></g></symbol><symbol viewBox="0 0 16 16" id="staged" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M11.828 3.536l1.415-1.415a1 1 0 1 1 1.414 1.415l-2.121 2.12a.997.997 0 0 1-1.415 0L9.707 4.244a1 1 0 0 1 1.414-1.415l.707.708zM2 3h5a1 1 0 1 1 0 2H2a1 1 0 1 1 0-2zm0 4h12a1 1 0 0 1 0 2H2a1 1 0 1 1 0-2zm0 4h12a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="star" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M7.609 14.394l-3.465 1.473a1 1 0 0 1-1.39-.989l.276-4.024a1 1 0 0 0-.219-.694L.303 7.037A1 1 0 0 1 .83 5.443l3.715-.964a1 1 0 0 0 .609-.457L7.14.682a1 1 0 0 1 1.72 0l1.985 3.34a1 1 0 0 0 .609.457l3.715.964a1 1 0 0 1 .528 1.594L13.19 10.16a1 1 0 0 0-.219.694l.275 4.024a1 1 0 0 1-1.389.989l-3.465-1.473a1 1 0 0 0-.782 0z"/></symbol><symbol viewBox="0 0 16 16" id="star-o" xmlns="http://www.w3.org/2000/svg"><path d="M10.975 10.99a3 3 0 0 1 .655-2.083l1.54-1.916-2.219-.576a3 3 0 0 1-1.825-1.37L8 3.15 6.874 5.044a3 3 0 0 1-1.825 1.371l-2.218.576 1.54 1.916a3 3 0 0 1 .654 2.083l-.165 2.4 1.965-.836a3 3 0 0 1 2.348 0l1.965.836-.164-2.399zM7.61 14.394l-3.465 1.473a1 1 0 0 1-1.39-.989l.276-4.024a1 1 0 0 0-.219-.694L.303 7.037A1 1 0 0 1 .83 5.443l3.715-.964a1 1 0 0 0 .609-.457L7.14.682a1 1 0 0 1 1.72 0l1.985 3.34a1 1 0 0 0 .609.457l3.715.964a1 1 0 0 1 .528 1.594L13.19 10.16a1 1 0 0 0-.219.694l.275 4.024a1 1 0 0 1-1.389.989l-3.465-1.473a1 1 0 0 0-.782 0z"/></symbol><symbol viewBox="0 0 14 14" id="status_canceled" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M5.2 3.8l4.9 4.9c.2.2.2.5 0 .7l-.7.7c-.2.2-.5.2-.7 0L3.8 5.2c-.2-.2-.2-.5 0-.7l.7-.7c.2-.2.5-.2.7 0"/></g></symbol><symbol viewBox="0 0 22 22" id="status_canceled_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M8.171 5.971l7.7 7.7a.76.76 0 0 1 0 1.1l-1.1 1.1a.76.76 0 0 1-1.1 0l-7.7-7.7a.76.76 0 0 1 0-1.1l1.1-1.1a.76.76 0 0 1 1.1 0"/></symbol><symbol viewBox="0 0 16 16" id="status_closed" xmlns="http://www.w3.org/2000/svg"><path d="M7.536 8.657l2.828-2.83a1 1 0 0 1 1.414 1.416l-3.535 3.535a1 1 0 0 1-1.415.001l-2.12-2.12a1 1 0 1 1 1.413-1.415zM8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-2A6 6 0 1 0 8 2a6 6 0 0 0 0 12z"/></symbol><symbol viewBox="0 0 14 14" id="status_created" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><circle cx="7" cy="7" r="3.25"/></g></symbol><symbol viewBox="0 0 22 22" id="status_created_borderless" xmlns="http://www.w3.org/2000/svg"><circle cx="11" cy="11" r="5.107"/></symbol><symbol viewBox="0 0 14 14" id="status_failed" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M7 5.969L5.599 4.568a.29.29 0 0 0-.413.004l-.614.614a.294.294 0 0 0-.004.413L5.968 7l-1.4 1.401a.29.29 0 0 0 .004.413l.614.614c.113.114.3.117.413.004L7 8.032l1.401 1.4a.29.29 0 0 0 .413-.004l.614-.614a.294.294 0 0 0 .004-.413L8.032 7l1.4-1.401a.29.29 0 0 0-.004-.413l-.614-.614a.294.294 0 0 0-.413-.004L7 5.968z"/></g></symbol><symbol viewBox="0 0 22 22" id="status_failed_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M11 9.38L8.798 7.178a.455.455 0 0 0-.65.006l-.964.965a.462.462 0 0 0-.006.65L9.38 11l-2.202 2.202a.455.455 0 0 0 .006.65l.965.964a.462.462 0 0 0 .65.006L11 12.62l2.202 2.202a.455.455 0 0 0 .65-.006l.964-.965a.462.462 0 0 0 .006-.65L12.62 11l2.202-2.202a.455.455 0 0 0-.006-.65l-.965-.964a.462.462 0 0 0-.65-.006L11 9.38z"/></symbol><symbol viewBox="0 0 14 14" id="status_manual" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M10.5 7.63V6.37l-.787-.13c-.044-.175-.132-.349-.263-.61l.481-.652-.918-.913-.657.478a2.346 2.346 0 0 0-.612-.26L7.656 3.5H6.388l-.132.783c-.219.043-.394.13-.612.26l-.657-.478-.918.913.437.652c-.131.218-.175.392-.262.61l-.744.086v1.261l.787.13c.044.218.132.392.263.61l-.438.651.92.913.655-.434c.175.086.394.173.613.26l.131.783h1.313l.131-.783c.219-.043.394-.13.613-.26l.656.478.918-.913-.48-.652c.13-.218.218-.435.262-.61l.656-.13zM7 8.283a1.285 1.285 0 0 1-1.313-1.305c0-.739.57-1.304 1.313-1.304.744 0 1.313.565 1.313 1.304 0 .74-.57 1.305-1.313 1.305z"/></g></symbol><symbol viewBox="0 0 22 22" id="status_manual_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M16.5 11.99v-1.98l-1.238-.206c-.068-.273-.206-.546-.412-.956l.756-1.025-1.444-1.435-1.03.752a3.686 3.686 0 0 0-.963-.41L12.03 5.5h-1.994l-.206 1.23c-.343.068-.618.205-.962.41l-1.031-.752-1.444 1.435.687 1.025c-.206.341-.275.615-.412.956L5.5 9.941v1.981l1.237.205c.07.342.207.615.413.957l-.688 1.025 1.444 1.434 1.032-.683c.274.137.618.274.962.41l.206 1.23h2.063l.206-1.23c.344-.068.619-.205.963-.41l1.03.752 1.444-1.435-.756-1.025c.207-.341.344-.683.413-.956l1.031-.205zM11 13.017c-1.169 0-2.063-.889-2.063-2.05 0-1.162.894-2.05 2.063-2.05s2.063.888 2.063 2.05c0 1.161-.894 2.05-2.063 2.05z"/></symbol><symbol viewBox="0 0 22 22" id="status_notfound_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M12.822 11.29c.816-.581 1.421-1.348 1.683-2.322.603-2.243-.973-4.553-3.53-4.553-1.15 0-2.085.41-2.775 1.089-.42.413-.672.835-.8 1.167a1.179 1.179 0 0 0 2.2.847c.016-.043.1-.184.252-.334.264-.259.613-.412 1.123-.412.938 0 1.47.78 1.254 1.584-.105.39-.37.726-.773 1.012a3.25 3.25 0 0 1-.945.47 1.179 1.179 0 0 0-.874 1.138v2.234a1.179 1.179 0 1 0 2.358 0v-1.43a5.9 5.9 0 0 0 .827-.492z"/><ellipse cx="10.825" cy="16.711" rx="1.275" ry="1.322"/></symbol><symbol viewBox="0 0 14 14" id="status_open" xmlns="http://www.w3.org/2000/svg"><path d="M0 7c0-3.866 3.142-7 7-7 3.866 0 7 3.142 7 7 0 3.866-3.142 7-7 7-3.866 0-7-3.142-7-7z"/><path d="M1 7c0 3.309 2.69 6 6 6 3.309 0 6-2.69 6-6 0-3.309-2.69-6-6-6-3.309 0-6 2.69-6 6z" fill="#FFF"/><path d="M7 9.219a2.218 2.218 0 1 0 0-4.436A2.218 2.218 0 0 0 7 9.22zm0 1.12a3.338 3.338 0 1 1 0-6.676 3.338 3.338 0 0 1 0 6.676z"/></symbol><symbol viewBox="0 0 14 14" id="status_pending" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M4.7 5.3c0-.2.1-.3.3-.3h.9c.2 0 .3.1.3.3v3.4c0 .2-.1.3-.3.3H5c-.2 0-.3-.1-.3-.3V5.3m3 0c0-.2.1-.3.3-.3h.9c.2 0 .3.1.3.3v3.4c0 .2-.1.3-.3.3H8c-.2 0-.3-.1-.3-.3V5.3"/></g></symbol><symbol viewBox="0 0 22 22" id="status_pending_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M7.386 8.329c0-.315.157-.472.471-.472h1.414c.315 0 .472.157.472.472v5.342c0 .315-.157.472-.472.472H7.857c-.314 0-.471-.157-.471-.472V8.33m4.714 0c0-.315.157-.472.471-.472h1.415c.314 0 .471.157.471.472v5.342c0 .315-.157.472-.471.472H12.57c-.314 0-.471-.157-.471-.472V8.33"/></symbol><symbol viewBox="0 0 14 14" id="status_running" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M7 3c2.2 0 4 1.8 4 4s-1.8 4-4 4c-1.3 0-2.5-.7-3.3-1.7L7 7V3"/></g></symbol><symbol viewBox="0 0 22 22" id="status_running_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M11 4.714c3.457 0 6.286 2.829 6.286 6.286 0 3.457-2.829 6.286-6.286 6.286-2.043 0-3.929-1.1-5.186-2.672L11 11V4.714"/></symbol><symbol viewBox="0 0 14 14" id="status_skipped" xmlns="http://www.w3.org/2000/svg"><path d="M7 14A7 7 0 1 1 7 0a7 7 0 0 1 0 14z"/><path d="M7 13A6 6 0 1 0 7 1a6 6 0 0 0 0 12z" fill="#FFF"/><path d="M6.415 7.04L4.579 5.203a.295.295 0 0 1 .004-.416l.349-.349a.29.29 0 0 1 .416-.004l2.214 2.214a.289.289 0 0 1 .019.021l.132.133c.11.11.108.291 0 .398L5.341 9.573a.282.282 0 0 1-.398 0l-.331-.331a.285.285 0 0 1 0-.399L6.415 7.04zm2.54 0L7.119 5.203a.295.295 0 0 1 .004-.416l.349-.349a.29.29 0 0 1 .416-.004l2.214 2.214a.289.289 0 0 1 .019.021l.132.133c.11.11.108.291 0 .398L7.881 9.573a.282.282 0 0 1-.398 0l-.331-.331a.285.285 0 0 1 0-.399L8.955 7.04z"/></symbol><symbol viewBox="0 0 22 22" id="status_skipped_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M14.072 11.063l-2.82 2.82a.46.46 0 0 0-.001.652l.495.495a.457.457 0 0 0 .653-.001l3.7-3.7a.46.46 0 0 0 .001-.653l-.196-.196a.453.453 0 0 0-.03-.033l-3.479-3.479a.464.464 0 0 0-.654.007l-.548.548a.463.463 0 0 0-.007.654l2.886 2.886z"/><path d="M10.08 11.063l-2.819 2.82a.46.46 0 0 0-.002.652l.496.495a.457.457 0 0 0 .652-.001l3.7-3.7a.46.46 0 0 0 .002-.653l-.196-.196a.453.453 0 0 0-.03-.033l-3.48-3.479a.464.464 0 0 0-.653.007l-.548.548a.463.463 0 0 0-.007.654l2.886 2.886z"/></symbol><symbol viewBox="0 0 14 14" id="status_success" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M6.278 7.697L5.045 6.464a.296.296 0 0 0-.42-.002l-.613.614a.298.298 0 0 0 .002.42l1.91 1.909a.5.5 0 0 0 .703.005l.265-.265L9.997 6.04a.291.291 0 0 0-.009-.408l-.614-.614a.29.29 0 0 0-.408-.009L6.278 7.697z"/></g></symbol><symbol viewBox="0 0 22 22" id="status_success_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M9.866 12.095l-1.95-1.95a.462.462 0 0 0-.647.01l-.964.964a.46.46 0 0 0-.01.646l3.013 3.014a.787.787 0 0 0 1.106.008l.425-.425 4.854-4.853a.462.462 0 0 0 .002-.659l-.964-.964a.468.468 0 0 0-.658.002l-4.207 4.207z"/></symbol><symbol viewBox="0 0 14 14" id="status_success_solid" xmlns="http://www.w3.org/2000/svg"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7zm6.278.697L5.045 6.464a.296.296 0 0 0-.42-.002l-.613.614a.298.298 0 0 0 .002.42l1.91 1.909a.5.5 0 0 0 .703.005l.265-.265L9.997 6.04a.291.291 0 0 0-.009-.408l-.614-.614a.29.29 0 0 0-.408-.009L6.278 7.697z" fill-rule="evenodd"/></symbol><symbol viewBox="0 0 14 14" id="status_warning" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd"><path d="M0 7a7 7 0 1 1 14 0A7 7 0 0 1 0 7z"/><path d="M13 7A6 6 0 1 0 1 7a6 6 0 0 0 12 0z" fill="#FFF"/><path d="M6 3.5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v4c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-4m0 6c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v1c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-1"/></g></symbol><symbol viewBox="0 0 22 22" id="status_warning_borderless" xmlns="http://www.w3.org/2000/svg"><path d="M9.429 5.5c0-.471.314-.786.785-.786h1.572c.471 0 .785.315.785.786v6.286c0 .471-.314.785-.785.785h-1.572c-.471 0-.785-.314-.785-.785V5.5m0 9.429c0-.472.314-.786.785-.786h1.572c.471 0 .785.314.785.786V16.5c0 .471-.314.786-.785.786h-1.572c-.471 0-.785-.315-.785-.786v-1.571"/></symbol><symbol viewBox="0 0 16 16" id="stop" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2 0h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z"/></symbol><symbol viewBox="0 0 16 16" id="task-done" xmlns="http://www.w3.org/2000/svg"><path d="M7.536 8.657l2.828-2.829a1 1 0 0 1 1.414 1.415l-3.535 3.535a.997.997 0 0 1-1.415 0l-2.12-2.121A1 1 0 0 1 6.12 7.243l1.415 1.414zM3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3z"/></symbol><symbol viewBox="0 0 16 16" id="template" xmlns="http://www.w3.org/2000/svg"><path d="M3 0h10a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H3zm.8 2h2.4a.8.8 0 0 1 .8.8v1.4a.8.8 0 0 1-.8.8H3.8a.8.8 0 0 1-.8-.8V4.8a.8.8 0 0 1 .8-.8zm4.7 0h4a.5.5 0 1 1 0 1h-4a.5.5 0 0 1 0-1zm0 2h4a.5.5 0 1 1 0 1h-4a.5.5 0 0 1 0-1zm-5 3h9a.5.5 0 1 1 0 1h-9a.5.5 0 0 1 0-1zm0 2h9a.5.5 0 1 1 0 1h-9a.5.5 0 1 1 0-1z"/></symbol><symbol viewBox="0 0 16 16" id="terminal" xmlns="http://www.w3.org/2000/svg"><path d="M7 8a.997.997 0 0 1-.293.707l-1.414 1.414a1 1 0 1 1-1.414-1.414L4.586 8l-.707-.707a1 1 0 1 1 1.414-1.414l1.414 1.414A.997.997 0 0 1 7 8zM4 0h8a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm0 2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H4zm5 7h2a1 1 0 0 1 0 2H9a1 1 0 0 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="thumb-down" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.33 11h5.282a2 2 0 0 0 1.963-2.38l-.563-2.905a3 3 0 0 0-.243-.732l-1.103-2.286A3 3 0 0 0 10.964 1H7a3 3 0 0 0-3 3v6.3a2 2 0 0 0 .436 1.247l3.11 3.9a.632.632 0 0 0 .941.053l.137-.137a1 1 0 0 0 .28-.87L8.329 11zM1 10h2V3H1a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1z"/></symbol><symbol viewBox="0 0 16 16" id="thumb-up" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.33 5h5.282a2 2 0 0 1 1.963 2.38l-.563 2.905a3 3 0 0 1-.243.732l-1.103 2.286A3 3 0 0 1 10.964 15H7a3 3 0 0 1-3-3V5.7a2 2 0 0 1 .436-1.247l3.11-3.9A.632.632 0 0 1 8.487.5l.137.137a1 1 0 0 1 .28.87L8.329 5zM1 6h2v7H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1z"/></symbol><symbol viewBox="0 0 16 16" id="thumbtack" xmlns="http://www.w3.org/2000/svg"><path d="M7.125 9h-2.19a.5.5 0 0 1-.417-.777L6 6V2L5.362.724A.5.5 0 0 1 5.809 0h4.382a.5.5 0 0 1 .447.724L10 2v4l1.482 2.223a.5.5 0 0 1-.416.777H8.875L8 16l-.875-7z" fill-rule="evenodd"/></symbol><symbol viewBox="0 0 16 16" id="timer" xmlns="http://www.w3.org/2000/svg"><path d="M12.022 3.27l.77-.77a1 1 0 0 1 1.415 1.414l-.728.729a7 7 0 1 1-1.456-1.372zM8 14A5 5 0 1 0 8 4a5 5 0 0 0 0 10zm0-9a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0V6a1 1 0 0 1 1-1zM6 0h4a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="todo-add" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10 4V2a1 1 0 0 1 2 0v2h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 0V6H8a1 1 0 1 1 0-2h2zm2 7a1 1 0 0 1 2 0v2a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h2a1 1 0 1 1 0 2H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-2z"/></symbol><symbol viewBox="0 0 16 16" id="todo-done" xmlns="http://www.w3.org/2000/svg"><path d="M8.243 7.485l4.95-4.95a1 1 0 1 1 1.414 1.415L8.95 9.607a.997.997 0 0 1-1.414 0L4.707 6.778a1 1 0 0 1 1.414-1.414l2.122 2.121zM12 11a1 1 0 0 1 2 0v2a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3h2a1 1 0 1 1 0 2H3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1v-2z"/></symbol><symbol viewBox="0 0 16 16" id="token" xmlns="http://www.w3.org/2000/svg"><path d="M3 2h10a3 3 0 0 1 3 3v6a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V5a3 3 0 0 1 3-3zm0 2a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H3zm1 5a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm4 0a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="unapproval" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M11.95 8.536l1.06-1.061a1 1 0 0 1 1.415 1.414l-1.061 1.06 1.06 1.061a1 1 0 0 1-1.414 1.415l-1.06-1.061-1.06 1.06a1 1 0 1 1-1.415-1.414l1.06-1.06-1.06-1.06a1 1 0 0 1 1.414-1.415l1.06 1.06zm-3.768-.33c.006.503.201 1.006.586 1.39l.353.354-.353.353a2 2 0 1 0 2.828 2.829l.354-.354.047.048C11.964 14.363 11.527 15 6 15c-5.924 0-6-.78-6-2.52S.964 8 6 8c.834 0 1.557.074 2.182.205zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6z"/></symbol><symbol viewBox="0 0 16 16" id="unassignee" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M11 5h4a1 1 0 0 1 0 2h-4a1 1 0 0 1 0-2zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM6 15c-5.924 0-6-.78-6-2.52S.964 8 6 8s6 2.692 6 4.48c0 1.788-.076 2.52-6 2.52z"/></symbol><symbol viewBox="0 0 16 16" id="unlink" xmlns="http://www.w3.org/2000/svg"><path d="M11.295 8.845l-.659-1.664a1.78 1.78 0 0 0 .04-.04l1.415-1.414c.586-.586.654-1.468.152-1.97s-1.384-.434-1.97.152L8.859 5.323a1.781 1.781 0 0 0-.04.04l-1.664-.658c.141-.208.305-.408.491-.594l1.415-1.414c1.366-1.367 3.424-1.525 4.596-.354 1.171 1.172 1.013 3.23-.354 4.596L11.89 8.354c-.186.186-.386.35-.594.491zm-2.45 2.45a4.075 4.075 0 0 1-.491.594l-1.415 1.414c-1.366 1.367-3.424 1.525-4.596.354-1.171-1.172-1.013-3.23.354-4.596L4.11 7.646c.186-.186.386-.35.594-.491l.659 1.664a1.781 1.781 0 0 0-.04.04l-1.415 1.414c-.586.586-.654 1.468-.152 1.97s1.384.434 1.97-.152l1.414-1.414a1.78 1.78 0 0 0 .04-.04l1.664.658zm3.812-2.088h2a.5.5 0 0 1 .5.5v.05a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1-.5-.5v-.05a.5.5 0 0 1 .5-.5zm-.384 2.116l1.415 1.414a.5.5 0 0 1 0 .708l-.037.036a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 0-.707l.036-.037a.5.5 0 0 1 .707 0zm-2.823 1.09a.5.5 0 0 1 .5-.5h.052a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.5.5H9.95a.5.5 0 0 1-.5-.5v-2zm-2.748-9.16a.5.5 0 0 1-.5.5h-.05a.5.5 0 0 1-.5-.5v-2a.5.5 0 0 1 .5-.5h.05a.5.5 0 0 1 .5.5v2zm-2.116.383a.5.5 0 0 1 0 .707l-.036.036a.5.5 0 0 1-.707 0L2.428 2.965a.5.5 0 0 1 0-.707l.037-.036a.5.5 0 0 1 .707 0l1.414 1.414zm-1.09 2.823h-2a.5.5 0 0 1-.5-.5v-.051a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 .5.5v.05a.5.5 0 0 1-.5.5z"/></symbol><symbol viewBox="0 0 16 16" id="unstaged" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M2 3h12a1 1 0 0 1 0 2H2a1 1 0 1 1 0-2zm0 4h12a1 1 0 0 1 0 2H2a1 1 0 1 1 0-2zm0 4h12a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2z"/></symbol><symbol viewBox="0 0 16 16" id="user" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 8c-6.888 0-6.976-.78-6.976-2.52S2.144 8 8 8s6.976 2.692 6.976 4.48c0 1.788-.088 2.52-6.976 2.52z"/></symbol><symbol viewBox="0 0 16 16" id="users" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M10.521 8.01C15.103 8.19 16 10.755 16 12.48c0 1.533-.056 2.29-3.808 2.475.609-.54.808-1.331.808-2.475 0-1.911-.804-3.503-2.479-4.47zm-1.67-1.228A3.987 3.987 0 0 0 9.976 4a3.987 3.987 0 0 0-1.125-2.782 3 3 0 1 1 0 5.563zM5.976 7a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM6 15c-5.924 0-6-.78-6-2.52S.964 8 6 8s6 2.692 6 4.48c0 1.788-.076 2.52-6 2.52z"/></symbol><symbol viewBox="0 0 16 16" id="volume-up" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M1 5h1v6H1a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1zm2 0l4.445-2.964A1 1 0 0 1 9 2.87v10.26a1 1 0 0 1-1.555.833L3 11V5zm10.283 7.89a.5.5 0 0 1-.66-.752A5.485 5.485 0 0 0 14.5 8c0-1.601-.687-3.09-1.865-4.128a.5.5 0 0 1 .661-.75A6.484 6.484 0 0 1 15.5 8a6.485 6.485 0 0 1-2.217 4.89zm-2.002-2.236a.5.5 0 1 1-.652-.758c.55-.472.871-1.157.871-1.896 0-.732-.315-1.411-.856-1.883a.5.5 0 0 1 .658-.753A3.492 3.492 0 0 1 12.5 8c0 1.033-.45 1.994-1.219 2.654z"/></symbol><symbol viewBox="0 0 16 16" id="warning" xmlns="http://www.w3.org/2000/svg"><path d="M15.572 10.506c.867 1.42.375 3.247-1.098 4.082a3.184 3.184 0 0 1-1.57.412h-9.81C1.387 15 0 13.665 0 12.018a2.9 2.9 0 0 1 .427-1.512L5.332 2.47C6.2 1.05 8.096.577 9.57 1.412c.453.257.831.622 1.098 1.059l4.905 8.035zM8.89 3.479a1.014 1.014 0 0 0-.366-.353 1.053 1.053 0 0 0-1.412.353l-4.905 8.035a.967.967 0 0 0-.143.504c0 .549.462.994 1.032.994h9.81c.184 0 .364-.048.523-.137a.974.974 0 0 0 .366-1.361L8.889 3.479zM8 5a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0V6a1 1 0 0 1 1-1zm0 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/></symbol><symbol viewBox="0 0 16 16" id="work" xmlns="http://www.w3.org/2000/svg"><path d="M12 3h1a3 3 0 0 1 3 3v7a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h1V2a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v1zM6 2v1h4V2H6zM3 5a1 1 0 0 0-1 1v7a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H3zm1.5 1a.5.5 0 0 1 .5.5v6a.5.5 0 1 1-1 0v-6a.5.5 0 0 1 .5-.5zm7 0a.5.5 0 0 1 .5.5v6a.5.5 0 1 1-1 0v-6a.5.5 0 0 1 .5-.5z"/></symbol></svg>
\ No newline at end of file diff --git a/app/assets/images/illustrations/multi_file_editor_empty.svg b/app/assets/images/illustrations/multi_file_editor_empty.svg new file mode 100644 index 00000000000..bd376f0a050 --- /dev/null +++ b/app/assets/images/illustrations/multi_file_editor_empty.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="430" height="300"><g fill="none" fill-rule="evenodd" transform="translate(35 29)"><path fill="#EEE" fill-rule="nonzero" d="M90 23a2 2 0 1 1 0-4h10a2 2 0 0 1 0 4H90zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h10a2 2 0 0 1 0 4h-10zm20 0a2 2 0 0 1 0-4h1a11.98 11.98 0 0 1 9.457 4.612 2 2 0 0 1-3.151 2.464A7.981 7.981 0 0 0 331 23h-1zm9 11.39a2 2 0 0 1 4 0v10a2 2 0 0 1-4 0v-10zm0 180a2 2 0 1 1 4 0V223c0 .56-.038 1.114-.114 1.662a2 2 0 0 1-3.962-.55A8.21 8.21 0 0 0 339 223v-8.61zm-4.769 15.931a2 2 0 0 1 1.618 3.658A11.967 11.967 0 0 1 331 235h-5.782a2 2 0 0 1 0-4H331c1.13 0 2.224-.233 3.231-.679zm-19.013.679a2 2 0 1 1 0 4h-10a2 2 0 0 1 0-4h10zm-20 0a2 2 0 1 1 0 4h-10a2 2 0 0 1 0-4h10zm-20 0a2 2 0 1 1 0 4h-10a2 2 0 0 1 0-4h10zm-20 0a2 2 0 1 1 0 4h-10a2 2 0 0 1 0-4h10zm-20 0a2 2 0 1 1 0 4h-10a2 2 0 0 1 0-4h10zm-20 0a2 2 0 1 1 0 4h-10a2 2 0 0 1 0-4h10zm-20 0a2 2 0 1 1 0 4h-10a2 2 0 0 1 0-4h10zm-20 0a2 2 0 1 1 0 4h-10a2 2 0 0 1 0-4h10zm-20 0a2 2 0 1 1 0 4h-10a2 2 0 0 1 0-4h10zm-20 0a2 2 0 1 1 0 4h-10a2 2 0 0 1 0-4h10zM115 231a2 2 0 0 1 0 4h-10a2 2 0 0 1 0-4h10zm-26.2 4c.131-.646.2-1.315.2-2v-2h4a2 2 0 0 1 0 4h-4.2z"/><path fill="#EEE" fill-rule="nonzero" d="M103 211h258a6 6 0 0 0 6-6V63a6 6 0 0 0-6-6H166a5 5 0 0 1-5-5v-8.5a5.5 5.5 0 0 0-5.5-5.5H109a6 6 0 0 0-6 6v167zm62-167.5V52a1 1 0 0 0 1 1h195c5.523 0 10 4.477 10 10v142c0 5.523-4.477 10-10 10H99V44c0-5.523 4.477-10 10-10h46.5a9.5 9.5 0 0 1 9.5 9.5z"/><rect width="40" height="4" x="118" y="78" fill="#6B4FBB" rx="2"/><rect width="30" height="4" x="118" y="90" fill="#EFEDF8" rx="2"/><rect width="30" height="4" x="153" y="90" fill="#E1DBF1" rx="2"/><rect width="150" height="4" x="118" y="102" fill="#EFEDF8" rx="2"/><rect width="90" height="4" x="118" y="114" fill="#E1DBF1" rx="2"/><rect width="60" height="4" x="118" y="138" fill="#EFEDF8" rx="2"/><rect width="20" height="4" x="118" y="150" fill="#6B4FBB" rx="2"/><rect width="20" height="4" x="144" y="150" fill="#C3B8E3" rx="2"/><rect width="20" height="4" x="170" y="150" fill="#E1DBF1" rx="2"/><rect width="130" height="4" x="118" y="162" fill="#EFEDF8" rx="2"/><rect width="30" height="4" x="118" y="174" fill="#C3B8E3" rx="2"/><rect width="30" height="4" x="154" y="174" fill="#EFEDF8" rx="2"/><rect width="30" height="4" x="190" y="174" fill="#EFEDF8" rx="2"/><rect width="40" height="4" x="118" y="186" fill="#E1DBF1" rx="2"/><path fill="#F9F9F9" d="M89 24.292l11.434 19.326v170.326L89 226.336V24.292z"/><path fill="#EEE" fill-rule="nonzero" d="M89 229.286v-5.9l9.434-10.223V44.165L89 28.22v-7.856l13.434 22.707v171.655L89 229.286zM10 4a6 6 0 0 0-6 6v223a6 6 0 0 0 6 6h69a6 6 0 0 0 6-6V10a6 6 0 0 0-6-6H10zm0-4h69c5.523 0 10 4.477 10 10v223c0 5.523-4.477 10-10 10H10c-5.523 0-10-4.477-10-10V10C0 4.477 4.477 0 10 0z"/><circle cx="25" cy="23" r="11" fill="#FEF0E8"/><path fill="#FEE1D3" d="M46 17h16a2 2 0 1 1 0 4H46a2 2 0 1 1 0-4zm0 8h27a2 2 0 1 1 0 4H46a2 2 0 1 1 0-4z"/><path fill="#EEE" d="M16 50h4a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2zm14 2h24a2 2 0 1 1 0 4H30a2 2 0 1 1 0-4zm-4 12h4a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2zm14 2h24a2 2 0 1 1 0 4H40a2 2 0 1 1 0-4zM26 78h4a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2zm14 2h24a2 2 0 1 1 0 4H40a2 2 0 1 1 0-4z"/><g transform="translate(14 110)"><rect width="8" height="8" fill="#FEE1D3" rx="2"/><rect width="28" height="4" x="14" y="2" fill="#FEF0E8" rx="2"/></g><path fill="#EEE" d="M16 140h4a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2zm14 2h24a2 2 0 1 1 0 4H30a2 2 0 1 1 0-4zm-14 14h4a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2zm14 2h24a2 2 0 1 1 0 4H30a2 2 0 1 1 0-4zm-14 14h4a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2zm14 2h24a2 2 0 1 1 0 4H30a2 2 0 1 1 0-4zm-14 14h4a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2zm14 2h24a2 2 0 1 1 0 4H30a2 2 0 1 1 0-4z"/><g transform="translate(24 124)"><rect width="8" height="8" fill="#FEE1D3" rx="2"/><rect width="28" height="4" x="14" y="2" fill="#FEF0E8" rx="2"/></g><g fill="#FC6D26" transform="translate(24 92)"><rect width="8" height="8" rx="2"/><rect width="28" height="4" x="14" y="2" rx="2"/></g><path fill="#FDC4A8" fill-rule="nonzero" d="M152 50.5a4.5 4.5 0 1 1 0-9 4.5 4.5 0 0 1 0 9zm0-3a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3z"/></g></svg>
\ No newline at end of file diff --git a/app/assets/images/illustrations/wiki_login_empty.svg b/app/assets/images/illustrations/wiki_login_empty.svg new file mode 100644 index 00000000000..1cfa47220a5 --- /dev/null +++ b/app/assets/images/illustrations/wiki_login_empty.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="386" height="298" viewBox="0 0 386 298" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M4 51h16v15.997A5.003 5.003 0 0 1 15.003 72H8.997A5.005 5.005 0 0 1 4 66.997V51z"/><rect id="b" width="24" height="10" y="44" rx="3"/></defs><g fill="none" fill-rule="evenodd" transform="translate(0 3)"><g transform="rotate(15 23.151 968.24)"><rect width="53" height="44" fill="#FFF" stroke="#FDE5D8" stroke-width="3" stroke-linecap="round" rx="5"/><path fill="#FDE5D8" d="M29.5 28.3l2.758-3.861c.962-1.347 2.527-1.34 3.484 0l6.516 9.122c.962 1.347.399 2.439-1.252 2.439H17.994c-1.653 0-2.21-1.099-1.252-2.439l6.516-9.122c.962-1.347 2.527-1.34 3.484 0L29.5 28.3z" opacity=".6"/><circle cx="16" cy="16" r="6" fill="#FDB997"/></g><g transform="scale(-1 1) rotate(25 -75.08 -334.15)"><rect width="3" height="11" x="12.45" y="23.45" fill="#6B4FBB" transform="rotate(45 13.95 28.95)" rx="1.5"/><rect width="3" height="14" x="9.45" y="15.45" fill="#6B4FBB" transform="rotate(45 10.95 22.45)" rx="1.5"/><path fill="#FFF" stroke="#E1DCF1" stroke-width="3" d="M16 39.6C6.871 37.747 0 29.676 0 20 0 8.954 8.954 0 20 0s20 8.954 20 20c0 8.955-5.886 16.536-14 19.084v15.91A5.007 5.007 0 0 1 21 60c-2.761 0-5-2.244-5-5.006V39.6zm4-7.6c6.627 0 12-5.373 12-12S26.627 8 20 8 8 13.373 8 20s5.373 12 12 12z"/></g><g transform="scale(1 -1) rotate(-15 -383.616 -172.407)"><path stroke="#FDE5D8" stroke-width="3" d="M1.5 38.5h9V4c0-1.378-1.12-2.5-2.496-2.5H3.996A2.503 2.503 0 0 0 1.5 4v34.5z"/><rect width="2" height="27" x="5" y="7" fill="#FDA77D" opacity=".8" rx="1"/><path stroke="#FDE5D8" stroke-width="3" d="M2.427 41.553h7.146L6 48.699l-3.573-7.146z"/></g><g transform="rotate(-30 420.145 -545.422)"><path fill="#FFF" stroke="#FDE5D8" stroke-width="3" d="M9 3c0-1.657 1.347-3 3-3 1.657 0 3 1.352 3 3v43H9V3z"/><use fill="#FFF" xlink:href="#a"/><path stroke="#FDE5D8" stroke-width="3" d="M5.5 52.5v14.497A3.505 3.505 0 0 0 8.997 70.5h6.006a3.503 3.503 0 0 0 3.497-3.503V52.5h-13z"/><rect width="2" height="14" x="9" y="51" fill="#FDA77D" rx="1"/><rect width="2" height="14" x="13" y="51" fill="#FDA77D" rx="1"/><use fill="#FFF" xlink:href="#b"/><rect width="21" height="7" x="1.5" y="45.5" stroke="#FDE5D8" stroke-width="3" rx="3"/></g><g transform="translate(72 97.488)"><rect width="125" height="160" fill="#FFF" stroke="#E5E5E5" stroke-width="4" stroke-linecap="round" rx="10"/><rect width="125" height="160" x="125" fill="#FFF" stroke="#E5E5E5" stroke-width="4" stroke-linecap="round" rx="10"/><path fill="#FFF" stroke="#E5E5E5" stroke-width="4" d="M7 12.008C7 8.69 9.686 6 12.993 6H125v148H12.993C9.683 154 7 151.305 7 147.992V12.008zm236 0C243 8.69 240.314 6 237.007 6H125v148h112.007c3.31 0 5.993-2.695 5.993-6.008V12.008z" stroke-linecap="round"/><rect width="84" height="42" x="142" y="29" stroke="#EEE" stroke-width="4" rx="3"/><rect width="88" height="4" x="141" y="93" fill="#E5E5E5" rx="2"/><rect width="88" height="4" x="141" y="107" fill="#BFBFBF" rx="2"/><rect width="56" height="4" x="141" y="121" fill="#E5E5E5" rx="2"/><rect width="56" height="4" x="22" y="93" fill="#E5E5E5" rx="2"/><rect width="26" height="4" x="22" y="27" fill="#BFBFBF" rx="2"/><rect width="56" height="4" x="22" y="41" fill="#E5E5E5" rx="2"/><rect width="36" height="4" x="22" y="55" fill="#BFBFBF" rx="2"/><rect width="56" height="4" x="22" y="69" fill="#E5E5E5" rx="2"/><rect width="36" height="4" x="22" y="107" fill="#E5E5E5" rx="2"/><rect width="56" height="4" x="22" y="121" fill="#BFBFBF" rx="2"/></g><path stroke="#B5A7DD" stroke-width="2.5" d="M23.139 182.922l-1.347-.6a2.004 2.004 0 0 1-1.02-2.64l.815-1.831a1.995 1.995 0 0 1 2.645-1.01l1.308.583a9.959 9.959 0 0 1 2.177-1.876l-.376-1.402a2.004 2.004 0 0 1 1.41-2.455l1.937-.519a1.995 1.995 0 0 1 2.449 1.421l.375 1.402a9.959 9.959 0 0 1 2.824.536l.84-1.158a2.004 2.004 0 0 1 2.796-.448l1.622 1.178a1.995 1.995 0 0 1 .437 2.797l-.867 1.193a9.946 9.946 0 0 1 1.341 2.541l1.461-.05a2.004 2.004 0 0 1 2.075 1.926l.07 2.003a1.995 1.995 0 0 1-1.935 2.067l-1.445.05c-.256.93-.644 1.817-1.15 2.632l.944 1.087a2.004 2.004 0 0 1-.191 2.825l-1.513 1.315a1.995 1.995 0 0 1-2.824-.204l-.963-1.108a10.084 10.084 0 0 1-2.776.744l-.28 1.441a2.004 2.004 0 0 1-2.344 1.588l-1.967-.382a1.995 1.995 0 0 1-1.579-2.35l.275-1.414a10.044 10.044 0 0 1-2.312-1.704l-1.277.678a2.004 2.004 0 0 1-2.709-.822l-.94-1.77a1.995 1.995 0 0 1 .833-2.705l1.29-.687a9.946 9.946 0 0 1-.11-2.872zm10.98 4.93a4 4 0 1 0-2.07-7.727 4 4 0 0 0 2.07 7.728z"/><ellipse cx="197" cy="289.988" fill="#F9F9F9" rx="125" ry="4.5"/><path fill="#6B4FBB" d="M164 100.492a3.002 3.002 0 0 1 3.001-3.004H183a3.006 3.006 0 0 1 3.001 3.004v34.988c0 2.213-1.45 2.954-3.24 1.651l-7.76-5.643-7.76 5.643c-1.789 1.302-3.24.566-3.24-1.651v-34.988z"/><g opacity=".2"><path fill="#FC8A51" d="M5.747 234.768l-2.688 1.114c-1.017.422-1.803-.134-1.754-1.228l.128-2.907-1.115-2.688c-.422-1.017.135-1.803 1.229-1.754l2.907.128 2.687-1.115c1.018-.422 1.803.135 1.755 1.229l-.128 2.907 1.114 2.687c.422 1.018-.134 1.803-1.228 1.755l-2.907-.128zM191.564 37.953l-3.72.164c-1.326.059-1.992-.88-1.48-2.115l1.426-3.438-.164-3.72c-.059-1.326.88-1.992 2.115-1.48l3.438 1.426 3.72-.164c1.326-.059 1.992.88 1.48 2.114l-1.426 3.44.164 3.719c.059 1.326-.88 1.992-2.114 1.48l-3.44-1.426z"/><path fill="#6B4FBB" d="M348.789 75.876l-1.967-2.144c-.744-.812-.49-1.74.555-2.07l2.775-.873 2.144-1.967c.812-.744 1.74-.49 2.07.555l.873 2.775 1.967 2.144c.744.812.49 1.74-.555 2.07l-2.775.873-2.144 1.967c-.812.745-1.74.49-2.07-.555l-.873-2.775zm9.261 164.735l-2.907-.125c-1.1-.048-1.577-.884-1.07-1.855l1.344-2.58.126-2.908c.047-1.1.883-1.577 1.855-1.07l2.58 1.344 2.907.126c1.1.047 1.577.883 1.07 1.855l-1.344 2.58-.125 2.907c-.048 1.1-.884 1.577-1.856 1.07l-2.58-1.344zM88.789 75.876l-1.967-2.144c-.744-.812-.49-1.74.555-2.07l2.775-.873 2.144-1.967c.812-.744 1.74-.49 2.07.555l.873 2.775 1.967 2.144c.744.812.49 1.74-.555 2.07l-2.775.873-2.144 1.967c-.812.745-1.74.49-2.07-.555l-.873-2.775z"/></g></g></svg>
\ No newline at end of file diff --git a/app/assets/images/illustrations/wiki_logout_empty.svg b/app/assets/images/illustrations/wiki_logout_empty.svg new file mode 100644 index 00000000000..c71841f72e5 --- /dev/null +++ b/app/assets/images/illustrations/wiki_logout_empty.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="412" height="260" viewBox="0 0 412 260" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><path id="a" d="M6.447.894L12 12H0L5.553.894a.5.5 0 0 1 .894 0z"/></defs><g fill="none" fill-rule="evenodd"><path fill="#FEF0E8" fill-rule="nonzero" d="M338 50.287C322.695 41.45 303.124 46.694 294.287 62c-8.836 15.305-3.592 34.876 11.713 43.712 15.306 8.837 34.877 3.593 43.713-11.712 8.837-15.306 3.593-34.877-11.713-43.713zm2-3.464C357.22 56.763 363.118 78.78 353.177 96c-9.941 17.218-31.958 23.118-49.177 13.176-17.218-9.94-23.118-31.958-13.177-49.176C300.764 42.78 322.782 36.88 340 46.823z"/><g transform="rotate(-150 171.003 8.53)"><path fill="#FC6D26" fill-rule="nonzero" d="M4 16v25a2 2 0 1 0 4 0V16H4zm8-4v29a6 6 0 1 1-12 0V12h12z"/><use fill="#D8D8D8" xlink:href="#a"/><path stroke="#FDC4A8" stroke-width="4" d="M6 4.472L3.236 10h5.528L6 4.472z"/><path fill="#FC6D26" d="M9 6L6.447.894a.5.5 0 0 0-.894 0L3 6c.836.628 1.874 1 3 1a4.978 4.978 0 0 0 3-1z"/></g><path fill="#F9F9F9" d="M263.116 237.116A10.002 10.002 0 0 1 254 243h-86c-11.046 0-20-8.954-20-20V121c0-4.056 2.414-7.547 5.884-9.116A9.964 9.964 0 0 0 153 116v106c0 8.837 7.163 16 16 16h90c1.467 0 2.86-.316 4.116-.884z"/><path fill="#EEE" fill-rule="nonzero" d="M214.5 106H163c-5.523 0-10 4.477-10 10v106c0 8.837 7.163 16 16 16h90c5.523 0 10-4.477 10-10v-17.999a10.036 10.036 0 0 1-4 3.167V228a6 6 0 0 1-6 6h-90c-6.627 0-12-5.373-12-12V116a6 6 0 0 1 6-6h7v-4h44.5z"/><path fill="#EEE" fill-rule="nonzero" d="M260 218.268V214h-90a6 6 0 0 0 0 12h86a4 4 0 0 0 4-4v-.268a1.99 1.99 0 0 1-1 .268h-50a2 2 0 0 1 0-4h50c.364 0 .706.097 1 .268zM170 210h90.5a3.5 3.5 0 0 1 3.5 3.5v8.5a8 8 0 0 1-8 8h-86c-5.523 0-10-4.477-10-10s4.477-10 10-10z"/><path fill="#EEE" fill-rule="nonzero" d="M174 110v100h87a6 6 0 0 0 6-6v-88a6 6 0 0 0-6-6h-87zm-4-4h91c5.523 0 10 4.477 10 10v88c0 5.523-4.477 10-10 10h-91V106z"/><path fill="#EFEDF8" d="M230 99h18a6 6 0 0 1 6 6v31.35a3 3 0 0 1-4.68 2.484l-9.277-6.274a1.5 1.5 0 0 0-1.664-.01l-9.731 6.395a3 3 0 0 1-4.648-2.507V105a6 6 0 0 1 6-6z"/><path fill="#C3B8E3" fill-rule="nonzero" d="M236.182 129.207a5.5 5.5 0 0 1 6.102.04l7.716 5.219V105a2 2 0 0 0-2-2h-18a2 2 0 0 0-2 2v29.584l8.182-5.377zM230 99h18a6 6 0 0 1 6 6v31.35a3 3 0 0 1-4.68 2.484l-9.277-6.274a1.5 1.5 0 0 0-1.664-.01l-9.731 6.395a3 3 0 0 1-4.648-2.507V105a6 6 0 0 1 6-6z"/><g fill-rule="nonzero"><path fill="#EFEDF8" d="M156 74c14.912 0 27-12.088 27-27s-12.088-27-27-27-27 12.088-27 27 12.088 27 27 27zm0 4c-17.12 0-31-13.88-31-31s13.88-31 31-31 31 13.88 31 31-13.88 31-31 31z"/><path fill="#6B4FBB" d="M147.535 44.916l-.116 1.086a8.446 8.446 0 0 0 .093 2.44l.2 1.08-2.262 1.202a.495.495 0 0 0-.213.678l.941 1.77c.128.239.434.332.68.201l2.25-1.196.785.775a8.544 8.544 0 0 0 1.967 1.45l.975.522-.486 2.5a.495.495 0 0 0 .392.59l1.968.383a.504.504 0 0 0 .585-.401l.489-2.515 1.086-.13a8.584 8.584 0 0 0 2.363-.633l1.005-.43 1.68 1.933a.495.495 0 0 0 .708.055l1.513-1.315a.504.504 0 0 0 .044-.708l-1.67-1.922.583-.94c.431-.696.761-1.45.978-2.239l.292-1.063 2.547-.089a.495.495 0 0 0 .488-.515l-.07-2.003a.504.504 0 0 0-.523-.48l-2.56.09-.367-1.037a8.446 8.446 0 0 0-1.139-2.159l-.644-.882 1.509-2.076a.495.495 0 0 0-.106-.702l-1.621-1.178a.504.504 0 0 0-.7.116l-1.494 2.057-1.05-.362a8.459 8.459 0 0 0-2.398-.455l-1.1-.047-.66-2.466a.495.495 0 0 0-.613-.36l-1.936.519a.504.504 0 0 0-.35.617l.661 2.466-.93.59a8.459 8.459 0 0 0-1.848 1.594l-.728.838-2.322-1.034a.495.495 0 0 0-.665.25l-.815 1.83a.504.504 0 0 0 .26.661l2.344 1.044zm-3.565 1.697a3.504 3.504 0 0 1-1.78-4.622l.815-1.83a3.495 3.495 0 0 1 4.626-1.77l.346.154c.259-.245.529-.477.81-.697l-.106-.394a3.504 3.504 0 0 1 2.471-4.292l1.936-.519a3.495 3.495 0 0 1 4.286 2.481l.106.395c.353.05.703.116 1.05.198l.222-.306a3.504 3.504 0 0 1 4.89-.78l1.622 1.178a3.495 3.495 0 0 1 .769 4.892l-.258.355c.184.312.354.633.508.962l.42-.014a3.504 3.504 0 0 1 3.625 3.373l.07 2.003a3.495 3.495 0 0 1-3.382 3.618l-.4.014c-.127.332-.27.659-.426.978l.256.294a3.504 3.504 0 0 1-.34 4.941l-1.512 1.315a3.495 3.495 0 0 1-4.94-.351l-.283-.325a11.669 11.669 0 0 1-1.05.28l-.082.424a3.504 3.504 0 0 1-4.103 2.774l-1.967-.382a3.495 3.495 0 0 1-2.765-4.11l.075-.383a11.547 11.547 0 0 1-.858-.633l-.354.188a3.504 3.504 0 0 1-4.738-1.442l-.94-1.77a3.495 3.495 0 0 1 1.453-4.734l.37-.197a11.436 11.436 0 0 1-.041-1.088l-.4-.178zm13.326 5.608a5.5 5.5 0 1 1-2.847-10.625 5.5 5.5 0 0 1 2.847 10.625zm-.776-2.898a2.5 2.5 0 1 0-1.294-4.83 2.5 2.5 0 0 0 1.294 4.83z"/></g><g fill-rule="nonzero"><path fill="#EFEDF8" d="M326.979 222.047c14.403 3.86 29.209-4.688 33.068-19.092 3.86-14.403-4.688-29.209-19.092-33.068-14.403-3.86-29.209 4.688-33.068 19.092-3.86 14.404 4.688 29.209 19.092 33.068zm-1.035 3.864c-16.538-4.431-26.352-21.43-21.92-37.967 4.43-16.538 21.429-26.352 37.966-21.92 16.538 4.43 26.352 21.429 21.92 37.966-4.43 16.538-21.429 26.352-37.966 21.92z"/><path fill="#6B4FBB" d="M329.376 201.598c-4.668-2.621-7.155-8.157-5.706-13.566 1.715-6.402 8.295-10.201 14.697-8.486 6.402 1.716 10.2 8.296 8.485 14.697-1.45 5.41-6.371 8.96-11.725 8.897a3.03 3.03 0 0 1-.074.365l-1.812 6.761a3 3 0 0 1-5.795-1.552l1.812-6.762a3.03 3.03 0 0 1 .118-.354zm3.815-2.733a8 8 0 1 0 4.14-15.455 8 8 0 0 0-4.14 15.455z"/></g><path fill="#FEF0E8" fill-rule="nonzero" d="M91.373 193c17.071-4.574 27.202-22.12 22.628-39.191-4.575-17.071-22.121-27.202-39.192-22.628-17.071 4.574-27.202 22.121-22.628 39.192 4.574 17.071 22.121 27.202 39.192 22.627zm1.035 3.864c-19.204 5.146-38.945-6.25-44.09-25.456-5.146-19.204 6.25-38.945 25.455-44.09 19.205-5.146 38.945 6.25 44.091 25.455 5.146 19.205-6.25 38.945-25.456 44.091z"/><path fill="#FDC4A8" fill-rule="nonzero" d="M70.067 152.122l6.73 25.114 19.318-5.176-6.73-25.114-19.318 5.176zm-1.035-3.864l19.318-5.176a4 4 0 0 1 4.9 2.828l6.729 25.114a4 4 0 0 1-2.829 4.9L77.832 181.1a4 4 0 0 1-4.9-2.829l-6.729-25.114a4 4 0 0 1 2.829-4.899z"/><path fill="#FC6D26" d="M76.898 154.433l7.727-2.07a2 2 0 0 1 1.036 3.863l-7.728 2.07a2 2 0 1 1-1.035-3.863zm1.812 6.761l5.795-1.553a2 2 0 0 1 1.035 3.864l-5.795 1.553a2 2 0 1 1-1.035-3.864zm1.811 6.762l7.728-2.07a2 2 0 0 1 1.035 3.863l-7.727 2.07a2 2 0 1 1-1.036-3.863z"/></g></svg>
\ No newline at end of file diff --git a/app/assets/javascripts/gfm_auto_complete.js b/app/assets/javascripts/gfm_auto_complete.js index d918d80df8d..df20e1e9c88 100644 --- a/app/assets/javascripts/gfm_auto_complete.js +++ b/app/assets/javascripts/gfm_auto_complete.js @@ -57,12 +57,12 @@ class GfmAutoComplete { displayTpl(value) { if (GfmAutoComplete.isLoading(value)) return GfmAutoComplete.Loading.template; // eslint-disable-next-line no-template-curly-in-string - let tpl = '<li>/${name}'; + let tpl = '<li><span class="name">/${name}</span>'; if (value.aliases.length > 0) { - tpl += ' <small>(or /<%- aliases.join(", /") %>)</small>'; + tpl += ' <small class="aliases">(or /<%- aliases.join(", /") %>)</small>'; } if (value.params.length > 0) { - tpl += ' <small><%- params.join(" ") %></small>'; + tpl += ' <small class="params"><%- params.join(" ") %></small>'; } if (value.description !== '') { tpl += '<small class="description"><i><%- description %></i></small>'; diff --git a/app/assets/javascripts/groups/components/group_item.vue b/app/assets/javascripts/groups/components/group_item.vue index 0d795f50d16..42e79a9e17a 100644 --- a/app/assets/javascripts/groups/components/group_item.vue +++ b/app/assets/javascripts/groups/components/group_item.vue @@ -1,72 +1,72 @@ <script> - import { visitUrl } from '../../lib/utils/url_utility'; - import tooltip from '../../vue_shared/directives/tooltip'; - import identicon from '../../vue_shared/components/identicon.vue'; - import eventHub from '../event_hub'; +import { visitUrl } from '../../lib/utils/url_utility'; +import tooltip from '../../vue_shared/directives/tooltip'; +import identicon from '../../vue_shared/components/identicon.vue'; +import eventHub from '../event_hub'; - import itemCaret from './item_caret.vue'; - import itemTypeIcon from './item_type_icon.vue'; - import itemStats from './item_stats.vue'; - import itemActions from './item_actions.vue'; +import itemCaret from './item_caret.vue'; +import itemTypeIcon from './item_type_icon.vue'; +import itemStats from './item_stats.vue'; +import itemActions from './item_actions.vue'; - export default { - directives: { - tooltip, +export default { + directives: { + tooltip, + }, + components: { + identicon, + itemCaret, + itemTypeIcon, + itemStats, + itemActions, + }, + props: { + parentGroup: { + type: Object, + required: false, + default: () => ({}), }, - components: { - identicon, - itemCaret, - itemTypeIcon, - itemStats, - itemActions, + group: { + type: Object, + required: true, }, - props: { - parentGroup: { - type: Object, - required: false, - default: () => ({}), - }, - group: { - type: Object, - required: true, - }, + }, + computed: { + groupDomId() { + return `group-${this.group.id}`; }, - computed: { - groupDomId() { - return `group-${this.group.id}`; - }, - rowClass() { - return { - 'is-open': this.group.isOpen, - 'has-children': this.hasChildren, - 'has-description': this.group.description, - 'being-removed': this.group.isBeingRemoved, - }; - }, - hasChildren() { - return this.group.childrenCount > 0; - }, - hasAvatar() { - return this.group.avatarUrl !== null; - }, - isGroup() { - return this.group.type === 'group'; - }, + rowClass() { + return { + 'is-open': this.group.isOpen, + 'has-children': this.hasChildren, + 'has-description': this.group.description, + 'being-removed': this.group.isBeingRemoved, + }; }, - methods: { - onClickRowGroup(e) { - const NO_EXPAND_CLS = 'no-expand'; - if (!(e.target.classList.contains(NO_EXPAND_CLS) || - e.target.parentElement.classList.contains(NO_EXPAND_CLS))) { - if (this.hasChildren) { - eventHub.$emit('toggleChildren', this.group); - } else { - visitUrl(this.group.relativePath); - } + hasChildren() { + return this.group.childrenCount > 0; + }, + hasAvatar() { + return this.group.avatarUrl !== null; + }, + isGroup() { + return this.group.type === 'group'; + }, + }, + methods: { + onClickRowGroup(e) { + const NO_EXPAND_CLS = 'no-expand'; + if (!(e.target.classList.contains(NO_EXPAND_CLS) || + e.target.parentElement.classList.contains(NO_EXPAND_CLS))) { + if (this.hasChildren) { + eventHub.$emit('toggleChildren', this.group); + } else { + visitUrl(this.group.relativePath); } - }, + } }, - }; + }, +}; </script> <template> @@ -75,7 +75,7 @@ :id="groupDomId" :class="rowClass" class="group-row" - > + > <div class="group-row-contents" :class="{ 'project-row-contents': !isGroup }"> @@ -84,11 +84,14 @@ :group="group" :parent-group="parentGroup" /> - <item-stats :item="group" /> + <item-stats + :item="group" + /> <div - class="folder-toggle-wrap" - > - <item-caret :is-group-open="group.isOpen" /> + class="folder-toggle-wrap"> + <item-caret + :is-group-open="group.isOpen" + /> <item-type-icon :item-type="group.type" :is-group-open="group.isOpen" @@ -110,14 +113,13 @@ <identicon v-else size-class="s24" - :entity-id="group.id" + :entity-id=group.id :entity-name="group.name" /> </a> </div> <div - class="title namespace-title" - > + class="title namespace-title"> <a v-tooltip :href="group.relativePath" @@ -133,13 +135,14 @@ v-if="group.permission" class="user-access-role" > - {{ group.permission }} + {{group.permission}} </span> </div> <div v-if="group.description" class="description"> - {{ group.description }} + <span v-html="group.description"> + </span> </div> </div> <group-folder diff --git a/app/assets/javascripts/groups/store/groups_store.js b/app/assets/javascripts/groups/store/groups_store.js index ffc86175548..4a7569078a1 100644 --- a/app/assets/javascripts/groups/store/groups_store.js +++ b/app/assets/javascripts/groups/store/groups_store.js @@ -71,7 +71,7 @@ export default class GroupsStore { id: rawGroupItem.id, name: rawGroupItem.name, fullName: rawGroupItem.full_name, - description: rawGroupItem.description, + description: rawGroupItem.markdown_description, visibility: rawGroupItem.visibility, avatarUrl: rawGroupItem.avatar_url, relativePath: rawGroupItem.relative_path, diff --git a/app/assets/javascripts/ide/components/ide.vue b/app/assets/javascripts/ide/components/ide.vue index 46c3224d582..b2a9437e93e 100644 --- a/app/assets/javascripts/ide/components/ide.vue +++ b/app/assets/javascripts/ide/components/ide.vue @@ -9,14 +9,11 @@ import repoPreview from './repo_preview.vue'; import repoEditor from './repo_editor.vue'; export default { - components: { - ideSidebar, - ideContextbar, - repoTabs, - repoFileButtons, - ideStatusBar, - repoEditor, - repoPreview, + props: { + emptyStateSvgPath: { + type: String, + required: true, + }, }, computed: { ...mapState([ @@ -28,6 +25,15 @@ export default { 'activeFile', ]), }, + components: { + ideSidebar, + ideContextbar, + repoTabs, + repoFileButtons, + ideStatusBar, + repoEditor, + repoPreview, + }, mounted() { const returnValue = 'Are you sure you want to lose unsaved changes?'; window.onbeforeunload = (e) => { @@ -51,26 +57,39 @@ export default { class="multi-file-edit-pane" > <template - v-if="activeFile" - > - <repo-tabs /> + v-if="activeFile"> + <repo-tabs/> <component class="multi-file-edit-pane-content" :is="currentBlobView" /> - <repo-file-buttons /> + <repo-file-buttons/> <ide-status-bar - :file="selectedFile" - /> + :file="selectedFile"/> </template> <template - v-else - > + v-else> <div class="ide-empty-state"> - <h2 class="clgray">Welcome to the GitLab IDE</h2> + <div class="row js-empty-state"> + <div class="col-xs-12"> + <div class="svg-content svg-250"> + <img :src="emptyStateSvgPath"> + </div> + </div> + <div class="col-xs-12"> + <div class="text-content text-center"> + <h4> + Welcome to the GitLab IDE + </h4> + <p> + You can select a file in the left sidebar to begin editing and use the right sidebar to commit your changes. + </p> + </div> + </div> + </div> </div> </template> </div> - <ide-contextbar /> + <ide-contextbar/> </div> </template> diff --git a/app/assets/javascripts/ide/components/ide_repo_tree.vue b/app/assets/javascripts/ide/components/ide_repo_tree.vue index 35d21fae086..bd89ebe47d9 100644 --- a/app/assets/javascripts/ide/components/ide_repo_tree.vue +++ b/app/assets/javascripts/ide/components/ide_repo_tree.vue @@ -1,68 +1,71 @@ <script> - import { mapState } from 'vuex'; - import RepoPreviousDirectory from './repo_prev_directory.vue'; - import RepoFile from './repo_file.vue'; - import RepoLoadingFile from './repo_loading_file.vue'; - import { treeList } from '../stores/utils'; +import { mapState } from 'vuex'; +import repoPreviousDirectory from './repo_prev_directory.vue'; +import repoFile from './repo_file.vue'; +import skeletonLoadingContainer from '../../vue_shared/components/skeleton_loading_container.vue'; +import { treeList } from '../stores/utils'; - export default { - components: { - 'repo-previous-directory': RepoPreviousDirectory, - 'repo-file': RepoFile, - 'repo-loading-file': RepoLoadingFile, +export default { + components: { + repoPreviousDirectory, + repoFile, + skeletonLoadingContainer, + }, + props: { + treeId: { + type: String, + required: true, }, - props: { - treeId: { - type: String, - required: true, + }, + computed: { + ...mapState([ + 'trees', + 'isRoot', + ]), + ...mapState({ + projectName(state) { + return state.project.name; }, + }), + fetchedList() { + return treeList(this.$store.state, this.treeId); }, - computed: { - ...mapState([ - 'loading', - 'isRoot', - ]), - ...mapState({ - projectName(state) { - return state.project.name; - }, - }), - fetchedList() { - return treeList(this.$store.state, this.treeId); - }, - hasPreviousDirectory() { - return !this.isRoot && this.fetchedList.length; - }, - showLoading() { - return this.loading; - }, + hasPreviousDirectory() { + return !this.isRoot && this.fetchedList.length; + }, + showLoading() { + if (this.trees[this.treeId]) { + return this.trees[this.treeId].loading; + } + return true; }, - }; + }, +}; </script> <template> - <div> - <div class="ide-file-list"> - <table class="table"> - <tbody - v-if="treeId" - > - <repo-previous-directory - v-if="hasPreviousDirectory" - /> - <template v-if="showLoading"> - <repo-loading-file - v-for="n in 5" - :key="n" - /> - </template> - <repo-file - v-for="file in fetchedList" - :key="file.key" - :file="file" - /> - </tbody> - </table> - </div> +<div> + <div class="ide-file-list"> + <table class="table"> + <tbody + v-if="treeId"> + <repo-previous-directory + v-if="hasPreviousDirectory" + /> + <div + class="multi-file-loading-container" + v-if="showLoading" + v-for="n in 3" + :key="n"> + <skeleton-loading-container/> + </div> + <repo-file + v-for="file in fetchedList" + :key="file.key" + :file="file" + /> + </tbody> + </table> </div> +</div> </template> diff --git a/app/assets/javascripts/ide/components/ide_side_bar.vue b/app/assets/javascripts/ide/components/ide_side_bar.vue index d88cde8adfe..e404a838ac4 100644 --- a/app/assets/javascripts/ide/components/ide_side_bar.vue +++ b/app/assets/javascripts/ide/components/ide_side_bar.vue @@ -3,12 +3,14 @@ import { mapState, mapActions } from 'vuex'; import projectTree from './ide_project_tree.vue'; import icon from '../../vue_shared/components/icon.vue'; import panelResizer from '../../vue_shared/components/panel_resizer.vue'; +import skeletonLoadingContainer from '../../vue_shared/components/skeleton_loading_container.vue'; export default { components: { projectTree, icon, panelResizer, + skeletonLoadingContainer, }, data() { return { @@ -17,6 +19,7 @@ export default { }, computed: { ...mapState([ + 'loading', 'projects', 'leftPanelCollapsed', ]), @@ -32,6 +35,9 @@ export default { } return {}; }, + showLoading() { + return this.loading; + }, }, methods: { ...mapActions([ @@ -63,6 +69,13 @@ export default { :style="panelStyle" > <div class="multi-file-commit-panel-inner"> + <div + class="multi-file-loading-container" + v-if="showLoading" + v-for="n in 3" + :key="n"> + <skeleton-loading-container/> + </div> <project-tree v-for="project in projects" :key="project.id" diff --git a/app/assets/javascripts/ide/stores/actions/project.js b/app/assets/javascripts/ide/stores/actions/project.js index 75e332090cb..02d4bd87ab0 100644 --- a/app/assets/javascripts/ide/stores/actions/project.js +++ b/app/assets/javascripts/ide/stores/actions/project.js @@ -8,9 +8,11 @@ export const getProjectData = ( { namespace, projectId, force = false } = {}, ) => new Promise((resolve, reject) => { if (!state.projects[`${namespace}/${projectId}`] || force) { + commit(types.TOGGLE_LOADING, state); service.getProjectData(namespace, projectId) .then(res => res.data) .then((data) => { + commit(types.TOGGLE_LOADING, state); commit(types.SET_PROJECT, { projectPath: `${namespace}/${projectId}`, project: data }); if (!state.currentProjectId) commit(types.SET_CURRENT_PROJECT, `${namespace}/${projectId}`); resolve(data); diff --git a/app/assets/javascripts/jobs/components/header.vue b/app/assets/javascripts/jobs/components/header.vue index fb47881d422..9e3f659db5f 100644 --- a/app/assets/javascripts/jobs/components/header.vue +++ b/app/assets/javascripts/jobs/components/header.vue @@ -30,6 +30,9 @@ shouldRenderContent() { return !this.isLoading && Object.keys(this.job).length; }, + jobStarted() { + return this.job.started; + }, }, watch: { job() { @@ -64,6 +67,7 @@ :user="job.user" :actions="actions" :has-sidebar-button="true" + :should-render-triggered-label="jobStarted" /> <loading-icon v-if="isLoading" diff --git a/app/assets/javascripts/monitoring/components/graph.vue b/app/assets/javascripts/monitoring/components/graph.vue index 05e6e7829d6..61f06486d95 100644 --- a/app/assets/javascripts/monitoring/components/graph.vue +++ b/app/assets/javascripts/monitoring/components/graph.vue @@ -3,10 +3,10 @@ import { axisLeft, axisBottom } from 'd3-axis'; import { max, extent } from 'd3-array'; import { select } from 'd3-selection'; - import graphLegend from './graph/legend.vue'; - import graphFlag from './graph/flag.vue'; - import graphDeployment from './graph/deployment.vue'; - import graphPath from './graph/path.vue'; + import GraphLegend from './graph/legend.vue'; + import GraphFlag from './graph/flag.vue'; + import GraphDeployment from './graph/deployment.vue'; + import GraphPath from './graph/path.vue'; import MonitoringMixin from '../mixins/monitoring_mixins'; import eventHub from '../event_hub'; import measurements from '../utils/measurements'; @@ -17,15 +17,6 @@ const d3 = { scaleLinear, scaleTime, axisLeft, axisBottom, max, extent, select }; export default { - components: { - graphLegend, - graphFlag, - graphDeployment, - graphPath, - }, - - mixins: [MonitoringMixin], - props: { graphData: { type: Object, @@ -54,6 +45,8 @@ }, }, + mixins: [MonitoringMixin], + data() { return { baseGraphHeight: 450, @@ -76,21 +69,25 @@ currentFlagPosition: 0, showFlag: false, showFlagContent: false, - showDeployInfo: true, timeSeries: [], + realPixelRatio: 1, }; }, + components: { + GraphLegend, + GraphFlag, + GraphDeployment, + GraphPath, + }, + computed: { outerViewBox() { return `0 0 ${this.baseGraphWidth} ${this.baseGraphHeight}`; }, innerViewBox() { - if ((this.baseGraphWidth - 150) > 0) { - return `0 0 ${this.baseGraphWidth - 150} ${this.baseGraphHeight}`; - } - return '0 0 0 0'; + return `0 0 ${this.baseGraphWidth - 150} ${this.baseGraphHeight}`; }, axisTransform() { @@ -102,28 +99,12 @@ paddingBottom: `${(Math.ceil(this.baseGraphHeight * 100) / this.baseGraphWidth) || 0}%`, }; }, - }, - watch: { - updateAspectRatio() { - if (this.updateAspectRatio) { - this.graphHeight = 450; - this.graphWidth = 600; - this.measurements = measurements.large; - this.draw(); - eventHub.$emit('toggleAspectRatio'); - } - }, - - hoverData() { - this.positionFlag(); + deploymentFlagData() { + return this.reducedDeploymentData.find(deployment => deployment.showDeploymentFlag); }, }, - mounted() { - this.draw(); - }, - methods: { draw() { const breakpointSize = bp.getBreakpointSize(); @@ -142,6 +123,10 @@ this.graphHeight = this.graphHeight - this.margin.top - this.margin.bottom; this.baseGraphHeight = this.graphHeight; this.baseGraphWidth = this.graphWidth; + + // pixel offsets inside the svg and outside are not 1:1 + this.realPixelRatio = (this.$refs.baseSvg.clientWidth / this.baseGraphWidth); + this.renderAxesPaths(); this.formatDeployments(); }, @@ -212,6 +197,26 @@ }); // This will select all of the ticks once they're rendered }, }, + + watch: { + updateAspectRatio() { + if (this.updateAspectRatio) { + this.graphHeight = 450; + this.graphWidth = 600; + this.measurements = measurements.large; + this.draw(); + eventHub.$emit('toggleAspectRatio'); + } + }, + + hoverData() { + this.positionFlag(); + }, + }, + + mounted() { + this.draw(); + }, }; </script> @@ -221,7 +226,7 @@ @mouseover="showFlagContent = true" @mouseleave="showFlagContent = false"> <h5 class="text-center graph-title"> - {{ graphData.title }} + {{graphData.title}} </h5> <div class="prometheus-svg-container" @@ -231,12 +236,12 @@ ref="baseSvg"> <g class="x-axis" - :transform="axisTransform" - /> + :transform="axisTransform"> + </g> <g class="y-axis" - transform="translate(70, 20)" - /> + transform="translate(70, 20)"> + </g> <graph-legend :graph-width="graphWidth" :graph-height="graphHeight" @@ -251,43 +256,44 @@ <svg class="graph-data" :viewBox="innerViewBox" - ref="graphData" - > - <graph-path - v-for="(path, index) in timeSeries" - :key="index" - :generated-line-path="path.linePath" - :generated-area-path="path.areaPath" - :line-style="path.lineStyle" - :line-color="path.lineColor" - :area-color="path.areaColor" - /> - <rect - class="prometheus-graph-overlay" - :width="(graphWidth - 70)" - :height="(graphHeight - 100)" - transform="translate(-5, 20)" - ref="graphOverlay" - @mousemove="handleMouseOverGraph($event)" - /> - <graph-deployment - :show-deploy-info="showDeployInfo" - :deployment-data="reducedDeploymentData" - :graph-width="graphWidth" - :graph-height="graphHeight" - :graph-height-offset="graphHeightOffset" - /> - <graph-flag - v-if="showFlag" - :current-x-coordinate="currentXCoordinate" - :current-data="currentData" - :current-flag-position="currentFlagPosition" - :graph-height="graphHeight" - :graph-height-offset="graphHeightOffset" - :show-flag-content="showFlagContent" - /> + ref="graphData"> + <graph-path + v-for="(path, index) in timeSeries" + :key="index" + :generated-line-path="path.linePath" + :generated-area-path="path.areaPath" + :line-style="path.lineStyle" + :line-color="path.lineColor" + :area-color="path.areaColor" + /> + <graph-deployment + :deployment-data="reducedDeploymentData" + :graph-height="graphHeight" + :graph-height-offset="graphHeightOffset" + /> + <rect + class="prometheus-graph-overlay" + :width="(graphWidth - 70)" + :height="(graphHeight - 100)" + transform="translate(-5, 20)" + ref="graphOverlay" + @mousemove="handleMouseOverGraph($event)"> + </rect> </svg> </svg> + <graph-flag + :real-pixel-ratio="realPixelRatio" + :current-x-coordinate="currentXCoordinate" + :current-data="currentData" + :graph-height="graphHeight" + :graph-height-offset="graphHeightOffset" + :show-flag-content="showFlagContent" + :time-series="timeSeries" + :unit-of-display="unitOfDisplay" + :current-data-index="currentDataIndex" + :legend-title="legendTitle" + :deployment-flag-data="deploymentFlagData" + /> </div> </div> </template> diff --git a/app/assets/javascripts/monitoring/components/graph/deployment.vue b/app/assets/javascripts/monitoring/components/graph/deployment.vue index 0ce5464dd1e..8d6393d4ce5 100644 --- a/app/assets/javascripts/monitoring/components/graph/deployment.vue +++ b/app/assets/javascripts/monitoring/components/graph/deployment.vue @@ -1,16 +1,6 @@ <script> - import { dateFormatWithName, timeFormat } from '../../utils/date_time_formatters'; - import icon from '../../../vue_shared/components/icon.vue'; - export default { - components: { - icon, - }, props: { - showDeployInfo: { - type: Boolean, - required: true, - }, deploymentData: { type: Array, required: true, @@ -23,10 +13,6 @@ type: Number, required: true, }, - graphWidth: { - type: Number, - required: true, - }, }, computed: { @@ -36,165 +22,50 @@ }, methods: { - refText(d) { - return d.tag ? d.ref : d.sha.slice(0, 8); - }, - - formatTime(deploymentTime) { - return timeFormat(deploymentTime); - }, - - formatDate(deploymentTime) { - return dateFormatWithName(deploymentTime); - }, - - nameDeploymentClass(deployment) { - return `deploy-info-${deployment.id}`; - }, - transformDeploymentGroup(deployment) { - return `translate(${Math.floor(deployment.xPos) + 1}, 20)`; - }, - - positionFlag(deployment) { - let xPosition = 3; - if (deployment.xPos > (this.graphWidth - 225)) { - xPosition = -142; - } - return xPosition; - }, - - svgContainerHeight(tag) { - let svgHeight = 80; - if (!tag) { - svgHeight -= 20; - } - return svgHeight; + return `translate(${Math.floor(deployment.xPos) - 5}, 20)`; }, }, }; </script> <template> - <g - class="deploy-info" - v-if="showDeployInfo"> + <g class="deploy-info"> <g v-for="(deployment, index) in deploymentData" :key="index" - :class="nameDeploymentClass(deployment)" - :transform="transformDeploymentGroup(deployment)" - > + :transform="transformDeploymentGroup(deployment)"> <rect x="0" y="0" :height="calculatedHeight" width="3" - fill="url(#shadow-gradient)" - /> + fill="url(#shadow-gradient)"> + </rect> <line class="deployment-line" x1="0" y1="0" x2="0" :y2="calculatedHeight" - stroke="#000" - /> - <svg - v-if="deployment.showDeploymentFlag" - class="js-deploy-info-box" - :x="positionFlag(deployment)" - y="0" - width="134" - :height="svgContainerHeight(deployment.tag)" - > - <rect - class="rect-text-metric deploy-info-rect rect-metric" - x="1" - y="1" - rx="2" - width="132" - :height="svgContainerHeight(deployment.tag) - 2" - /> - <text - class="deploy-info-text text-metric-bold" - transform="translate(5, 2)" - > - Deployed - </text> - <!--The date info--> - <g transform="translate(5, 20)"> - <text class="deploy-info-text"> - {{ formatDate(deployment.time) }} - </text> - <text - class="deploy-info-text text-metric-bold" - x="62" - > - {{ formatTime(deployment.time) }} - </text> - </g> - <line - class="divider-line" - x1="0" - y1="38" - x2="132" - :y2="38" - stroke="#000" - /> - <!--Commit information--> - <g transform="translate(5, 40)"> - <icon - name="commit" - :width="12" - :height="12" - :y="3" - /> - <a :xlink:href="deployment.commitUrl"> - <text - class="deploy-info-text deploy-info-text-link" - transform="translate(20, 2)"> - {{ refText(deployment) }} - </text> - </a> - </g> - <!--Tag information--> - <g - transform="translate(5, 55)" - v-if="deployment.tag"> - <icon - name="label" - :width="12" - :height="12" - :y="5" - /> - <a :xlink:href="deployment.tagUrl"> - <text - class="deploy-info-text deploy-info-text-link" - transform="translate(20, 2)" - y="2" - > - {{ deployment.tag }} - </text> - </a> - </g> - </svg> + stroke="#000"> + </line> </g> <svg height="0" - width="0" - > + width="0"> <defs> - <linearGradient id="shadow-gradient"> + <linearGradient + id="shadow-gradient"> <stop offset="0%" stop-color="#000" - stop-opacity="0.4" - /> + stop-opacity="0.4"> + </stop> <stop offset="100%" stop-color="#000" - stop-opacity="0" - /> + stop-opacity="0"> + </stop> </linearGradient> </defs> </svg> diff --git a/app/assets/javascripts/monitoring/components/graph/flag.vue b/app/assets/javascripts/monitoring/components/graph/flag.vue index f57dc787d3a..62ebc3f419c 100644 --- a/app/assets/javascripts/monitoring/components/graph/flag.vue +++ b/app/assets/javascripts/monitoring/components/graph/flag.vue @@ -1,5 +1,7 @@ <script> import { dateFormat, timeFormat } from '../../utils/date_time_formatters'; + import { formatRelevantDigits } from '../../../lib/utils/number_utils'; + import Icon from '../../../vue_shared/components/icon.vue'; export default { props: { @@ -7,14 +9,15 @@ type: Number, required: true, }, - currentFlagPosition: { - type: Number, - required: true, - }, currentData: { type: Object, required: true, }, + deploymentFlagData: { + type: Object, + required: false, + default: null, + }, graphHeight: { type: Number, required: true, @@ -23,74 +26,173 @@ type: Number, required: true, }, + realPixelRatio: { + type: Number, + required: true, + }, showFlagContent: { type: Boolean, required: true, }, + timeSeries: { + type: Array, + required: true, + }, + unitOfDisplay: { + type: String, + required: true, + }, + currentDataIndex: { + type: Number, + required: true, + }, + legendTitle: { + type: String, + required: true, + }, }, - data() { - return { - circleColorRgb: '#8fbce8', - }; + components: { + Icon, }, computed: { formatTime() { - return timeFormat(this.currentData.time); + return this.deploymentFlagData ? + timeFormat(this.deploymentFlagData.time) : + timeFormat(this.currentData.time); }, formatDate() { - return dateFormat(this.currentData.time); + return this.deploymentFlagData ? + dateFormat(this.deploymentFlagData.time) : + dateFormat(this.currentData.time); + }, + + cursorStyle() { + const xCoordinate = this.deploymentFlagData ? + this.deploymentFlagData.xPos : + this.currentXCoordinate; + + const offsetTop = 20 * this.realPixelRatio; + const offsetLeft = (70 + xCoordinate) * this.realPixelRatio; + const height = (this.graphHeight - this.graphHeightOffset) * this.realPixelRatio; + + return { + top: `${offsetTop}px`, + left: `${offsetLeft}px`, + height: `${height}px`, + }; }, - calculatedHeight() { - return this.graphHeight - this.graphHeightOffset; + flagOrientation() { + if (this.currentXCoordinate * this.realPixelRatio > 120) { + return 'left'; + } + return 'right'; + }, + }, + + methods: { + seriesMetricValue(series) { + const index = this.deploymentFlagData ? + this.deploymentFlagData.seriesIndex : + this.currentDataIndex; + const value = series.values[index] && + series.values[index].value; + if (isNaN(value)) { + return '-'; + } + return `${formatRelevantDigits(value)}${this.unitOfDisplay}`; + }, + + seriesMetricLabel(index, series) { + if (this.timeSeries.length < 2) { + return this.legendTitle; + } + if (series.metricTag) { + return series.metricTag; + } + return `series ${index + 1}`; + }, + + strokeDashArray(type) { + if (type === 'dashed') return '6, 3'; + if (type === 'dotted') return '3, 3'; + return null; }, }, }; </script> + <template> - <g class="mouse-over-flag"> - <line - class="selected-metric-line" - :x1="currentXCoordinate" - :y1="0" - :x2="currentXCoordinate" - :y2="calculatedHeight" - transform="translate(-5, 20)" - /> - <svg + <div + class="prometheus-graph-cursor" + :style="cursorStyle" + > + <div v-if="showFlagContent" - class="rect-text-metric" - :x="currentFlagPosition" - y="0" + class="prometheus-graph-flag popover" + :class="flagOrientation" > - <rect - class="rect-metric" - x="4" - y="1" - rx="2" - width="90" - height="40" - transform="translate(-3, 20)" - /> - <text - class="text-metric text-metric-bold" - x="16" - y="35" - transform="translate(-5, 20)" - > - {{ formatTime }} - </text> - <text - class="text-metric" - x="16" - y="15" - transform="translate(-5, 20)" + <div class="arrow"></div> + <div class="popover-title"> + <h5 v-if="this.deploymentFlagData"> + Deployed + </h5> + {{formatDate}} at + <strong>{{formatTime}}</strong> + </div> + <div + v-if="this.deploymentFlagData" + class="popover-content deploy-meta-content" > - {{ formatDate }} - </text> - </svg> - </g> + <div> + <icon + name="commit" + :size="12"> + </icon> + <a :href="deploymentFlagData.commitUrl"> + {{deploymentFlagData.sha.slice(0, 8)}} + </a> + </div> + <div + v-if="deploymentFlagData.tag"> + <icon + name="label" + :size="12"> + </icon> + <a :href="deploymentFlagData.tagUrl"> + {{deploymentFlagData.ref}} + </a> + </div> + </div> + <div class="popover-content"> + <table> + <tr + v-for="(series, index) in timeSeries" + :key="index" + > + <td> + <svg width="15" height="6"> + <line + :stroke="series.lineColor" + :stroke-dasharray="strokeDashArray(series.lineStyle)" + stroke-width="4" + x1="0" + x2="15" + y1="2" + y2="2"> + </line> + </svg> + </td> + <td>{{seriesMetricLabel(index, series)}}</td> + <td> + <strong>{{seriesMetricValue(series)}}</strong> + </td> + </tr> + </table> + </div> + </div> + </div> </template> diff --git a/app/assets/javascripts/monitoring/mixins/monitoring_mixins.js b/app/assets/javascripts/monitoring/mixins/monitoring_mixins.js index cbca14ede02..6cc67ba57ee 100644 --- a/app/assets/javascripts/monitoring/mixins/monitoring_mixins.js +++ b/app/assets/javascripts/monitoring/mixins/monitoring_mixins.js @@ -29,15 +29,18 @@ const mixins = { time.setSeconds(this.timeSeries[0].values[0].time.getSeconds()); if (xPos >= 0) { + const seriesIndex = bisectDate(this.timeSeries[0].values, time, 1); + deploymentDataArray.push({ id: deployment.id, time, sha: deployment.sha, commitUrl: `${this.projectPath}/commit/${deployment.sha}`, tag: deployment.tag, - tagUrl: `${this.tagsPath}/${deployment.tag}`, + tagUrl: deployment.tag ? `${this.tagsPath}/${deployment.ref.name}` : null, ref: deployment.ref.name, xPos, + seriesIndex, showDeploymentFlag: false, }); } diff --git a/app/assets/javascripts/monitoring/utils/date_time_formatters.js b/app/assets/javascripts/monitoring/utils/date_time_formatters.js index 068813ddee6..f3c9acdd93e 100644 --- a/app/assets/javascripts/monitoring/utils/date_time_formatters.js +++ b/app/assets/javascripts/monitoring/utils/date_time_formatters.js @@ -14,7 +14,7 @@ const d3 = { timeYear, }; -export const dateFormat = d3.time('%b %-d, %Y'); +export const dateFormat = d3.time('%a, %b %-d'); export const timeFormat = d3.time('%-I:%M%p'); export const dateFormatWithName = d3.time('%a, %b %-d'); export const bisectDate = d3.bisector(d => d.time).left; diff --git a/app/assets/javascripts/pipelines/components/nav_controls.vue b/app/assets/javascripts/pipelines/components/nav_controls.vue index 632fc167f2b..f31a91c3403 100644 --- a/app/assets/javascripts/pipelines/components/nav_controls.vue +++ b/app/assets/javascripts/pipelines/components/nav_controls.vue @@ -17,6 +17,11 @@ export default { required: true, }, + resetCachePath: { + type: String, + required: true, + }, + ciLintPath: { type: String, required: true, @@ -46,6 +51,14 @@ export default { </a> <a + data-method="post" + rel="nofollow" + :href="resetCachePath" + class="btn btn-default"> + Clear runner caches + </a> + + <a :href="ciLintPath" class="btn btn-default"> CI Lint diff --git a/app/assets/javascripts/pipelines/components/pipelines.vue b/app/assets/javascripts/pipelines/components/pipelines.vue index 698d7dfe736..a1e065148f5 100644 --- a/app/assets/javascripts/pipelines/components/pipelines.vue +++ b/app/assets/javascripts/pipelines/components/pipelines.vue @@ -50,6 +50,7 @@ canCreatePipeline: pipelinesData.canCreatePipeline, hasCi: pipelinesData.hasCi, ciLintPath: pipelinesData.ciLintPath, + resetCachePath: pipelinesData.resetCachePath, state: this.store.state, scope: getParameterByName('scope') || 'all', page: getParameterByName('page') || '1', @@ -220,6 +221,7 @@ :new-pipeline-path="newPipelinePath" :has-ci-enabled="hasCiEnabled" :help-page-path="helpPagePath" + :resetCachePath="resetCachePath" :ci-lint-path="ciLintPath" :can-create-pipeline="canCreatePipelineParsed " /> diff --git a/app/assets/javascripts/users_select.js b/app/assets/javascripts/users_select.js index 759cc9925f4..f249bd036d6 100644 --- a/app/assets/javascripts/users_select.js +++ b/app/assets/javascripts/users_select.js @@ -541,7 +541,6 @@ function UsersSelect(currentUser, els, options = {}) { options.projectId = $(select).data('project-id'); options.groupId = $(select).data('group-id'); options.showCurrentUser = $(select).data('current-user'); - options.pushCodeToProtectedBranches = $(select).data('push-code-to-protected-branches'); options.authorId = $(select).data('author-id'); options.skipUsers = $(select).data('skip-users'); showNullUser = $(select).data('null-user'); @@ -688,7 +687,6 @@ UsersSelect.prototype.users = function(query, options, callback) { todo_filter: options.todoFilter || null, todo_state_filter: options.todoStateFilter || null, current_user: options.showCurrentUser || null, - push_code_to_protected_branches: options.pushCodeToProtectedBranches || null, author_id: options.authorId || null, skip_users: options.skipUsers || null }, diff --git a/app/assets/javascripts/vue_shared/components/header_ci_component.vue b/app/assets/javascripts/vue_shared/components/header_ci_component.vue index 79d240bdbba..2209bc0f9cf 100644 --- a/app/assets/javascripts/vue_shared/components/header_ci_component.vue +++ b/app/assets/javascripts/vue_shared/components/header_ci_component.vue @@ -1,74 +1,80 @@ <script> - import ciIconBadge from './ci_badge_link.vue'; - import loadingIcon from './loading_icon.vue'; - import timeagoTooltip from './time_ago_tooltip.vue'; - import tooltip from '../directives/tooltip'; - import userAvatarImage from './user_avatar/user_avatar_image.vue'; - - /** - * Renders header component for job and pipeline page based on UI mockups - * - * Used in: - * - job show page - * - pipeline show page - */ - export default { - directives: { - tooltip, +import ciIconBadge from './ci_badge_link.vue'; +import loadingIcon from './loading_icon.vue'; +import timeagoTooltip from './time_ago_tooltip.vue'; +import tooltip from '../directives/tooltip'; +import userAvatarImage from './user_avatar/user_avatar_image.vue'; + +/** + * Renders header component for job and pipeline page based on UI mockups + * + * Used in: + * - job show page + * - pipeline show page + */ +export default { + props: { + status: { + type: Object, + required: true, }, - - components: { - ciIconBadge, - loadingIcon, - timeagoTooltip, - userAvatarImage, + itemName: { + type: String, + required: true, }, - props: { - status: { - type: Object, - required: true, - }, - itemName: { - type: String, - required: true, - }, - itemId: { - type: Number, - required: true, - }, - time: { - type: String, - required: true, - }, - user: { - type: Object, - required: false, - default: () => ({}), - }, - actions: { - type: Array, - required: false, - default: () => [], - }, - hasSidebarButton: { - type: Boolean, - required: false, - default: false, - }, + itemId: { + type: Number, + required: true, }, - - computed: { - userAvatarAltText() { - return `${this.user.name}'s avatar`; - }, + time: { + type: String, + required: true, + }, + user: { + type: Object, + required: false, + default: () => ({}), + }, + actions: { + type: Array, + required: false, + default: () => [], + }, + hasSidebarButton: { + type: Boolean, + required: false, + default: false, + }, + shouldRenderTriggeredLabel: { + type: Boolean, + required: false, + default: true, }, + }, + + directives: { + tooltip, + }, + + components: { + ciIconBadge, + loadingIcon, + timeagoTooltip, + userAvatarImage, + }, + + computed: { + userAvatarAltText() { + return `${this.user.name}'s avatar`; + }, + }, - methods: { - onClickAction(action) { - this.$emit('actionClicked', action); - }, + methods: { + onClickAction(action) { + this.$emit('actionClicked', action); }, - }; + }, +}; </script> <template> @@ -78,10 +84,15 @@ <ci-icon-badge :status="status" /> <strong> - {{ itemName }} #{{ itemId }} + {{itemName}} #{{itemId}} </strong> - triggered + <template v-if="shouldRenderTriggeredLabel"> + triggered + </template> + <template v-else> + created + </template> <timeago-tooltip :time="time" /> @@ -92,35 +103,30 @@ v-tooltip :href="user.path" :title="user.email" - class="js-user-link commit-committer-link" - > + class="js-user-link commit-committer-link"> <user-avatar-image :img-src="user.avatar_url" :img-alt="userAvatarAltText" :tooltip-text="user.name" :img-size="24" - /> + /> - {{ user.name }} + {{user.name}} </a> </template> </section> <section class="header-action-buttons" - v-if="actions.length" - > + v-if="actions.length"> <template - v-for="(action, i) in actions" - > + v-for="action in actions"> <a v-if="action.type === 'link'" :href="action.path" - :class="action.cssClass" - :key="i" - > - {{ action.label }} + :class="action.cssClass"> + {{action.label}} </a> <a @@ -128,10 +134,8 @@ :href="action.path" data-method="post" rel="nofollow" - :class="action.cssClass" - :key="i" - > - {{ action.label }} + :class="action.cssClass"> + {{action.label}} </a> <button @@ -139,15 +143,12 @@ @click="onClickAction(action)" :disabled="action.isLoading" :class="action.cssClass" - type="button" - :key="i" - > - {{ action.label }} + type="button"> + {{action.label}} <i v-show="action.isLoading" class="fa fa-spin fa-spinner" - aria-hidden="true" - > + aria-hidden="true"> </i> </button> </template> @@ -156,13 +157,11 @@ type="button" class="btn btn-default visible-xs-block visible-sm-block sidebar-toggle-btn js-sidebar-build-toggle js-sidebar-build-toggle-header" aria-label="Toggle Sidebar" - id="toggleSidebar" - > + id="toggleSidebar"> <i class="fa fa-angle-double-left" aria-hidden="true" - aria-labelledby="toggleSidebar" - > + aria-labelledby="toggleSidebar"> </i> </button> </section> diff --git a/app/assets/stylesheets/framework/images.scss b/app/assets/stylesheets/framework/images.scss index aa2d30a3cef..fd5c3c81a53 100644 --- a/app/assets/stylesheets/framework/images.scss +++ b/app/assets/stylesheets/framework/images.scss @@ -20,10 +20,13 @@ width: 100%; } - &.svg-250 { - img, - svg { - width: 250px; + $image-widths: 250 306 394; + @each $width in $image-widths { + &.svg-#{$width} { + img, + svg { + width: #{$width + 'px'}; + } } } } diff --git a/app/assets/stylesheets/framework/markdown_area.scss b/app/assets/stylesheets/framework/markdown_area.scss index 6b07ffdbd61..938f5f49c09 100644 --- a/app/assets/stylesheets/framework/markdown_area.scss +++ b/app/assets/stylesheets/framework/markdown_area.scss @@ -192,6 +192,17 @@ overflow-y: auto; overflow-x: hidden; + .name, + small.aliases, + small.params { + float: left; + } + + small.aliases, + small.params { + padding: 2px 5px; + } + small.description { float: right; padding: 3px 5px; @@ -209,6 +220,7 @@ } ul > li { + @include clearfix; white-space: nowrap; } diff --git a/app/assets/stylesheets/pages/environments.scss b/app/assets/stylesheets/pages/environments.scss index f4882305c57..794bc668562 100644 --- a/app/assets/stylesheets/pages/environments.scss +++ b/app/assets/stylesheets/pages/environments.scss @@ -248,6 +248,73 @@ } } +.prometheus-graph-cursor { + position: absolute; + background: $theme-gray-600; + width: 1px; +} + +.prometheus-graph-flag { + display: block; + min-width: 160px; + + h5 { + padding: 0; + margin: 0; + font-size: 14px; + line-height: 1.2; + } + + table { + border-collapse: collapse; + padding: 0; + margin: 0; + } + + td { + vertical-align: middle; + + + td { + padding-left: 5px; + vertical-align: top; + } + } + + .deploy-meta-content { + border-bottom: 1px solid $white-dark; + + svg { + height: 15px; + vertical-align: bottom; + } + } + + &.popover { + &.left { + left: auto; + right: 0; + margin-right: 10px; + } + + &.right { + left: 0; + right: auto; + margin-left: 10px; + } + + > .arrow { + top: 40px; + } + + > .popover-title, + > .popover-content { + padding: 5px 8px; + font-size: 12px; + white-space: nowrap; + } + } +} + .prometheus-svg-container { position: relative; height: 0; diff --git a/app/assets/stylesheets/pages/repo.scss b/app/assets/stylesheets/pages/repo.scss index d01cbadebcc..6cb32408a48 100644 --- a/app/assets/stylesheets/pages/repo.scss +++ b/app/assets/stylesheets/pages/repo.scss @@ -92,6 +92,19 @@ padding: 6px 12px; } +.multi-file-loading-container { + margin-top: 10px; + padding: 10px; + + .animation-container { + background: $gray-light; + + div { + background: $gray-light; + } + } +} + table.table tr td.multi-file-table-name { width: 350px; padding: 6px 12px; diff --git a/app/controllers/concerns/issues_action.rb b/app/controllers/concerns/issues_action.rb index d4cccbe6442..3ba1235cee0 100644 --- a/app/controllers/concerns/issues_action.rb +++ b/app/controllers/concerns/issues_action.rb @@ -5,8 +5,6 @@ module IssuesAction # rubocop:disable Gitlab/ModuleWithInstanceVariables def issues @finder_type = IssuesFinder - @label = finder.labels.first - @issues = issuables_collection .non_archived .page(params[:page]) diff --git a/app/controllers/concerns/merge_requests_action.rb b/app/controllers/concerns/merge_requests_action.rb index 4d44df3bba9..a9cc13038bf 100644 --- a/app/controllers/concerns/merge_requests_action.rb +++ b/app/controllers/concerns/merge_requests_action.rb @@ -5,7 +5,6 @@ module MergeRequestsAction # rubocop:disable Gitlab/ModuleWithInstanceVariables def merge_requests @finder_type = MergeRequestsFinder - @label = finder.labels.first @merge_requests = issuables_collection.page(params[:page]) diff --git a/app/controllers/projects/application_controller.rb b/app/controllers/projects/application_controller.rb index 9e79852e378..6025a40348b 100644 --- a/app/controllers/projects/application_controller.rb +++ b/app/controllers/projects/application_controller.rb @@ -86,4 +86,8 @@ class Projects::ApplicationController < ApplicationController def require_pages_enabled! not_found unless @project.pages_available? end + + def check_issues_available! + return render_404 unless @project.feature_available?(:issues, current_user) + end end diff --git a/app/controllers/projects/boards_controller.rb b/app/controllers/projects/boards_controller.rb index e36105ddc11..949e54ff819 100644 --- a/app/controllers/projects/boards_controller.rb +++ b/app/controllers/projects/boards_controller.rb @@ -2,6 +2,7 @@ class Projects::BoardsController < Projects::ApplicationController include BoardsResponses include IssuableCollections + before_action :check_issues_available! before_action :authorize_read_board!, only: [:index, :show] before_action :assign_endpoint_vars diff --git a/app/controllers/projects/clusters/gcp_controller.rb b/app/controllers/projects/clusters/gcp_controller.rb index d3b9d8a9bbc..25608df0b9c 100644 --- a/app/controllers/projects/clusters/gcp_controller.rb +++ b/app/controllers/projects/clusters/gcp_controller.rb @@ -1,6 +1,7 @@ class Projects::Clusters::GcpController < Projects::ApplicationController before_action :authorize_read_cluster! before_action :authorize_google_api, except: [:login] + before_action :authorize_google_project_billing, only: [:new] before_action :authorize_create_cluster!, only: [:new, :create] def login @@ -22,15 +23,20 @@ class Projects::Clusters::GcpController < Projects::ApplicationController end def create - @cluster = ::Clusters::CreateService - .new(project, current_user, create_params) - .execute(token_in_session) + case google_project_billing_status + when 'true' + @cluster = ::Clusters::CreateService + .new(project, current_user, create_params) + .execute(token_in_session) - if @cluster.persisted? - redirect_to project_cluster_path(project, @cluster) + return redirect_to project_cluster_path(project, @cluster) if @cluster.persisted? + when 'false' + flash[:error] = _('Please enable billing for one of your projects to be able to create a cluster.') else - render :new + flash[:error] = _('We could not verify that one of your projects on GCP has billing enabled. Please try again.') end + + render :new end private @@ -58,6 +64,17 @@ class Projects::Clusters::GcpController < Projects::ApplicationController end end + def authorize_google_project_billing + redis_token_key = CheckGcpProjectBillingWorker.store_session_token(token_in_session) + CheckGcpProjectBillingWorker.perform_async(redis_token_key) + end + + def google_project_billing_status + Gitlab::Redis::SharedState.with do |redis| + redis.get(CheckGcpProjectBillingWorker.redis_shared_state_key_for(token_in_session)) + end + end + def token_in_session @token_in_session ||= session[GoogleApi::CloudPlatform::Client.session_key_for_token] diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index d7a3441a245..384f18b316c 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -194,10 +194,6 @@ class Projects::IssuesController < Projects::ApplicationController render_404 unless can?(current_user, :push_code, @project) && @issue.can_be_worked_on?(current_user) end - def check_issues_available! - return render_404 unless @project.feature_available?(:issues, current_user) - end - def render_issue_json if @issue.valid? render json: serializer.represent(@issue) diff --git a/app/controllers/projects/settings/ci_cd_controller.rb b/app/controllers/projects/settings/ci_cd_controller.rb index b029b31f9af..86717bb7242 100644 --- a/app/controllers/projects/settings/ci_cd_controller.rb +++ b/app/controllers/projects/settings/ci_cd_controller.rb @@ -11,6 +11,16 @@ module Projects define_auto_devops_variables end + def reset_cache + if ResetProjectCacheService.new(@project, current_user).execute + flash[:notice] = _("Project cache successfully reset.") + else + flash[:error] = _("Unable to reset project cache.") + end + + redirect_to project_pipelines_path(@project) + end + private def define_runners_variables diff --git a/app/finders/issuable_finder.rb b/app/finders/issuable_finder.rb index b46ec5e5350..493e7985d75 100644 --- a/app/finders/issuable_finder.rb +++ b/app/finders/issuable_finder.rb @@ -374,19 +374,14 @@ class IssuableFinder end def by_label(items) - if labels? + return items unless labels? + + items = if filter_by_no_label? - items = items.without_label + items.without_label else - items = items.with_label(label_names, params[:sort]) - items_projects = projects(items) - - if items_projects - label_ids = LabelsFinder.new(current_user, project_ids: items_projects).execute(skip_authorization: true).select(:id) - items = items.where(labels: { id: label_ids }) - end + items.with_label(label_names, params[:sort]) end - end items end diff --git a/app/helpers/selects_helper.rb b/app/helpers/selects_helper.rb index 1a4f1431bdc..6cefcde558a 100644 --- a/app/helpers/selects_helper.rb +++ b/app/helpers/selects_helper.rb @@ -73,7 +73,6 @@ module SelectsHelper email_user: opts[:email_user] || false, first_user: opts[:first_user] && current_user ? current_user.username : false, current_user: opts[:current_user] || false, - "push-code-to-protected-branches" => opts[:push_code_to_protected_branches], author_id: opts[:author_id] || '', skip_users: opts[:skip_users] ? opts[:skip_users].map(&:id) : nil } diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index 83fe23606d1..6012dbba1b9 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -79,7 +79,7 @@ module Ci before_save :ensure_token before_destroy { unscoped_project } - after_create do |build| + after_create unless: :importing? do |build| run_after_commit { BuildHooksWorker.perform_async(build.id) } end @@ -461,7 +461,14 @@ module Ci end def cache - [options[:cache]] + cache = options[:cache] + + if cache && project.jobs_cache_index + cache = cache.merge( + key: "#{cache[:key]}:#{project.jobs_cache_index}") + end + + [cache] end def credentials diff --git a/app/models/commit.rb b/app/models/commit.rb index 2be07ca7d3c..39d7f5b159d 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -371,7 +371,7 @@ class Commit # # Returns a symbol def uri_type(path) - entry = @raw.tree.path(path) + entry = @raw.rugged_tree_entry(path) if entry[:type] == :blob blob = ::Blob.decorate(Gitlab::Git::Blob.new(name: entry[:name]), @project) blob.image? || blob.video? ? :raw : :blob diff --git a/app/models/pages_domain.rb b/app/models/pages_domain.rb index 8de42ff9d2e..d8bf54e0c40 100644 --- a/app/models/pages_domain.rb +++ b/app/models/pages_domain.rb @@ -27,7 +27,7 @@ class PagesDomain < ActiveRecord::Base def url return unless domain - if certificate + if certificate.present? "https://#{domain}" else "http://#{domain}" diff --git a/app/models/project.rb b/app/models/project.rb index 4cb9d9fe637..fbe65e700a4 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1450,6 +1450,7 @@ class Project < ActiveRecord::Base import_finish remove_import_jid update_project_counter_caches + after_create_default_branch end def update_project_counter_caches @@ -1463,6 +1464,27 @@ class Project < ActiveRecord::Base end end + def after_create_default_branch + return unless default_branch + + # Ensure HEAD points to the default branch in case it is not master + change_head(default_branch) + + if current_application_settings.default_branch_protection != Gitlab::Access::PROTECTION_NONE && !ProtectedBranch.protected?(self, default_branch) + params = { + name: default_branch, + push_access_levels_attributes: [{ + access_level: current_application_settings.default_branch_protection == Gitlab::Access::PROTECTION_DEV_CAN_PUSH ? Gitlab::Access::DEVELOPER : Gitlab::Access::MASTER + }], + merge_access_levels_attributes: [{ + access_level: current_application_settings.default_branch_protection == Gitlab::Access::PROTECTION_DEV_CAN_MERGE ? Gitlab::Access::DEVELOPER : Gitlab::Access::MASTER + }] + } + + ProtectedBranches::CreateService.new(self, creator, params).execute(skip_authorization: true) + end + end + def remove_import_jid return unless import_jid diff --git a/app/models/repository.rb b/app/models/repository.rb index 7b8f5794a87..9c879e2006b 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -783,34 +783,30 @@ class Repository end def create_dir(user, path, **options) - options[:user] = user options[:actions] = [{ action: :create_dir, file_path: path }] - multi_action(**options) + multi_action(user, **options) end def create_file(user, path, content, **options) - options[:user] = user options[:actions] = [{ action: :create, file_path: path, content: content }] - multi_action(**options) + multi_action(user, **options) end def update_file(user, path, content, **options) previous_path = options.delete(:previous_path) action = previous_path && previous_path != path ? :move : :update - options[:user] = user options[:actions] = [{ action: action, file_path: path, previous_path: previous_path, content: content }] - multi_action(**options) + multi_action(user, **options) end def delete_file(user, path, **options) - options[:user] = user options[:actions] = [{ action: :delete, file_path: path }] - multi_action(**options) + multi_action(user, **options) end def with_cache_hooks @@ -824,59 +820,14 @@ class Repository result.newrev end - def with_branch(user, *args) - with_cache_hooks do - Gitlab::Git::OperationService.new(user, raw_repository).with_branch(*args) do |start_commit| - yield start_commit - end - end - end - - # rubocop:disable Metrics/ParameterLists - def multi_action( - user:, branch_name:, message:, actions:, - author_email: nil, author_name: nil, - start_branch_name: nil, start_project: project) - - with_branch( - user, - branch_name, - start_branch_name: start_branch_name, - start_repository: start_project.repository.raw_repository) do |start_commit| - - index = Gitlab::Git::Index.new(raw_repository) - - if start_commit - index.read_tree(start_commit.rugged_commit.tree) - parents = [start_commit.sha] - else - parents = [] - end + def multi_action(user, **options) + start_project = options.delete(:start_project) - actions.each do |options| - index.public_send(options.delete(:action), options) # rubocop:disable GitlabSecurity/PublicSend - end - - options = { - tree: index.write_tree, - message: message, - parents: parents - } - options.merge!(get_committer_and_author(user, email: author_email, name: author_name)) - - create_commit(options) + if start_project + options[:start_repository] = start_project.repository.raw_repository end - end - # rubocop:enable Metrics/ParameterLists - def get_committer_and_author(user, email: nil, name: nil) - committer = user_to_committer(user) - author = Gitlab::Git.committer_hash(email: email, name: name) || committer - - { - author: author, - committer: committer - } + with_cache_hooks { raw.multi_action(user, **options) } end def can_be_merged?(source_sha, target_branch) diff --git a/app/policies/project_policy.rb b/app/policies/project_policy.rb index f599eab42f2..1dd8f0a25a9 100644 --- a/app/policies/project_policy.rb +++ b/app/policies/project_policy.rb @@ -241,7 +241,6 @@ class ProjectPolicy < BasePolicy rule { repository_disabled }.policy do prevent :push_code - prevent :push_code_to_protected_branches prevent :download_code prevent :fork_project prevent :read_commit_status diff --git a/app/serializers/group_child_entity.rb b/app/serializers/group_child_entity.rb index 37240bfb0b1..aca4e4ca488 100644 --- a/app/serializers/group_child_entity.rb +++ b/app/serializers/group_child_entity.rb @@ -1,6 +1,7 @@ class GroupChildEntity < Grape::Entity include ActionView::Helpers::NumberHelper include RequestAwareEntity + include MarkupHelper expose :id, :name, :description, :visibility, :full_name, :created_at, :updated_at, :avatar_url @@ -59,6 +60,10 @@ class GroupChildEntity < Grape::Entity number_with_delimiter(instance.member_count) end + expose :markdown_description do |instance| + markdown_description + end + private def membership @@ -74,4 +79,8 @@ class GroupChildEntity < Grape::Entity def type object.class.name.downcase end + + def markdown_description + markdown_field(object, :description) + end end diff --git a/app/serializers/job_entity.rb b/app/serializers/job_entity.rb index 72e56a2c77f..523b522d449 100644 --- a/app/serializers/job_entity.rb +++ b/app/serializers/job_entity.rb @@ -4,6 +4,8 @@ class JobEntity < Grape::Entity expose :id expose :name + expose :started?, as: :started + expose :build_path do |build| build.target_url || path_to(:namespace_project_job, build) end diff --git a/app/services/check_gcp_project_billing_service.rb b/app/services/check_gcp_project_billing_service.rb new file mode 100644 index 00000000000..854adf2177d --- /dev/null +++ b/app/services/check_gcp_project_billing_service.rb @@ -0,0 +1,8 @@ +class CheckGcpProjectBillingService + def execute(token) + client = GoogleApi::CloudPlatform::Client.new(token, nil) + client.projects_list.select do |project| + client.projects_get_billing_info(project.name).billingEnabled + end + end +end diff --git a/app/services/files/multi_service.rb b/app/services/files/multi_service.rb index 98a3e83c130..a03c59f569d 100644 --- a/app/services/files/multi_service.rb +++ b/app/services/files/multi_service.rb @@ -4,7 +4,7 @@ module Files def create_commit! repository.multi_action( - user: current_user, + current_user, message: @commit_message, branch_name: @branch_name, actions: params[:actions], @@ -13,6 +13,8 @@ module Files start_project: @start_project, start_branch_name: @start_branch ) + rescue ArgumentError => e + raise_error(e) end private @@ -20,16 +22,7 @@ module Files def validate! super - params[:actions].each do |action| - validate_action!(action) - validate_file_status!(action) - end - end - - def validate_action!(action) - unless Gitlab::Git::Index::ACTIONS.include?(action[:action].to_s) - raise_error("Unknown action '#{action[:action]}'") - end + params[:actions].each { |action| validate_file_status!(action) } end def validate_file_status!(action) diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb index bb61136e33b..e6fd193ffb3 100644 --- a/app/services/git_push_service.rb +++ b/app/services/git_push_service.rb @@ -154,24 +154,7 @@ class GitPushService < BaseService offset = [@push_commits_count - PROCESS_COMMIT_LIMIT, 0].max @push_commits = project.repository.commits(params[:newrev], offset: offset, limit: PROCESS_COMMIT_LIMIT) - # Ensure HEAD points to the default branch in case it is not master - project.change_head(branch_name) - - # Set protection on the default branch if configured - if current_application_settings.default_branch_protection != PROTECTION_NONE && !ProtectedBranch.protected?(@project, @project.default_branch) - - params = { - name: @project.default_branch, - push_access_levels_attributes: [{ - access_level: current_application_settings.default_branch_protection == PROTECTION_DEV_CAN_PUSH ? Gitlab::Access::DEVELOPER : Gitlab::Access::MASTER - }], - merge_access_levels_attributes: [{ - access_level: current_application_settings.default_branch_protection == PROTECTION_DEV_CAN_MERGE ? Gitlab::Access::DEVELOPER : Gitlab::Access::MASTER - }] - } - - ProtectedBranches::CreateService.new(@project, current_user, params).execute - end + @project.after_create_default_branch end def build_push_data diff --git a/app/services/protected_branches/create_service.rb b/app/services/protected_branches/create_service.rb index a84e335340d..6212fd69077 100644 --- a/app/services/protected_branches/create_service.rb +++ b/app/services/protected_branches/create_service.rb @@ -2,8 +2,8 @@ module ProtectedBranches class CreateService < BaseService attr_reader :protected_branch - def execute - raise Gitlab::Access::AccessDeniedError unless can?(current_user, :admin_project, project) + def execute(skip_authorization: false) + raise Gitlab::Access::AccessDeniedError unless skip_authorization || can?(current_user, :admin_project, project) project.protected_branches.create(params) end diff --git a/app/services/reset_project_cache_service.rb b/app/services/reset_project_cache_service.rb new file mode 100644 index 00000000000..a162a6eedb9 --- /dev/null +++ b/app/services/reset_project_cache_service.rb @@ -0,0 +1,5 @@ +class ResetProjectCacheService < BaseService + def execute + @project.increment!(:jobs_cache_index) + end +end diff --git a/app/views/ide/index.html.haml b/app/views/ide/index.html.haml index 8368e7a4563..cb413f197de 100644 --- a/app/views/ide/index.html.haml +++ b/app/views/ide/index.html.haml @@ -6,7 +6,7 @@ .ide-flash-container.flash-container -#ide.ide-loading +#ide.ide-loading{ data: {"empty-state-svg-path" => image_path('illustrations/multi_file_editor_empty.svg')} } .text-center = icon('spinner spin 2x') - %h2.clgray= _('IDE Loading ...') + %h2.clgray= _('Loading the GitLab IDE...') diff --git a/app/views/layouts/nav/_dashboard.html.haml b/app/views/layouts/nav/_dashboard.html.haml index e0d8d9cb402..4013181da9c 100644 --- a/app/views/layouts/nav/_dashboard.html.haml +++ b/app/views/layouts/nav/_dashboard.html.haml @@ -49,6 +49,12 @@ = link_to dashboard_projects_path, title: 'Projects', class: 'dashboard-shortcuts-projects' do Projects + - if current_controller?('ide') + %li.line-separator.hidden-xs + = nav_link(controller: 'ide') do + = link_to '#', class: 'dashboard-shortcuts-web-ide', title: 'Web IDE' do + Web IDE + - if current_user.admin? || Gitlab::Sherlock.enabled? %li.line-separator.hidden-xs - if current_user.admin? diff --git a/app/views/layouts/nav/sidebar/_project.html.haml b/app/views/layouts/nav/sidebar/_project.html.haml index be39f577ba7..1fa3a3041fd 100644 --- a/app/views/layouts/nav/sidebar/_project.html.haml +++ b/app/views/layouts/nav/sidebar/_project.html.haml @@ -299,9 +299,10 @@ Charts -# Shortcut to Issues > New Issue - %li.hidden - = link_to new_project_issue_path(@project), class: 'shortcuts-new-issue' do - Create a new issue + - if project_nav_tab?(:issues) + %li.hidden + = link_to new_project_issue_path(@project), class: 'shortcuts-new-issue' do + Create a new issue -# Shortcut to Pipelines > Jobs - if project_nav_tab? :builds @@ -316,5 +317,6 @@ Commits -# Shortcut to issue boards - %li.hidden - = link_to 'Issue Boards', project_boards_path(@project), title: 'Issue Boards', class: 'shortcuts-issue-boards' + - if project_nav_tab?(:issues) + %li.hidden + = link_to 'Issue Boards', project_boards_path(@project), title: 'Issue Boards', class: 'shortcuts-issue-boards' diff --git a/app/views/projects/clusters/gcp/_header.html.haml b/app/views/projects/clusters/gcp/_header.html.haml index f23d5b80e4f..e2d7326a312 100644 --- a/app/views/projects/clusters/gcp/_header.html.haml +++ b/app/views/projects/clusters/gcp/_header.html.haml @@ -10,5 +10,5 @@ - link_to_requirements = link_to(s_('ClusterIntegration|meets the requirements'), 'https://cloud.google.com/kubernetes-engine/docs/quickstart', target: '_blank', rel: 'noopener noreferrer') = s_('ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters').html_safe % { link_to_requirements: link_to_requirements } %li - - link_to_container_project = link_to(s_('ClusterIntegration|Google Kubernetes Engine project'), target: '_blank', rel: 'noopener noreferrer') + - link_to_container_project = link_to(s_('ClusterIntegration|Google Kubernetes Engine project'), 'https://console.cloud.google.com/home/dashboard', target: '_blank', rel: 'noopener noreferrer') = s_('ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below').html_safe % { link_to_container_project: link_to_container_project } diff --git a/app/views/projects/clusters/gcp/login.html.haml b/app/views/projects/clusters/gcp/login.html.haml index e97ce01893a..878ebaded88 100644 --- a/app/views/projects/clusters/gcp/login.html.haml +++ b/app/views/projects/clusters/gcp/login.html.haml @@ -12,6 +12,8 @@ - if @authorize_url = link_to @authorize_url do = image_tag('auth_buttons/signin_with_google.png', width: '191px') + = _('or') + = link_to('create a new Google account', 'https://accounts.google.com/SignUpWithoutGmail?service=cloudconsole&continue=https%3A%2F%2Fconsole.cloud.google.com%2Ffreetrial%3Futm_campaign%3D2018_cpanel%26utm_source%3Dgitlab%26utm_medium%3Dreferral', target: '_blank', rel: 'noopener noreferrer') - else - link = link_to(s_('ClusterIntegration|properly configured'), help_page_path("integration/google"), target: '_blank', rel: 'noopener noreferrer') = s_('Google authentication is not %{link_to_documentation}. Ask your GitLab administrator if you want to use this service.').html_safe % { link_to_documentation: link } diff --git a/app/views/projects/jobs/_empty_state.html.haml b/app/views/projects/jobs/_empty_state.html.haml new file mode 100644 index 00000000000..c66313bdbf3 --- /dev/null +++ b/app/views/projects/jobs/_empty_state.html.haml @@ -0,0 +1,17 @@ +- illustration = local_assigns.fetch(:illustration) +- illustration_size = local_assigns.fetch(:illustration_size) +- title = local_assigns.fetch(:title) +- content = local_assigns.fetch(:content) +- action = local_assigns.fetch(:action, nil) + +.row.empty-state + .col-xs-12 + .svg-content{ class: illustration_size } + = image_tag illustration + .col-xs-12 + .text-content + %h4.text-center= title + %p= content + - if action + .text-center + = action diff --git a/app/views/projects/jobs/show.html.haml b/app/views/projects/jobs/show.html.haml index fd24bbbb9ba..8b05440fc78 100644 --- a/app/views/projects/jobs/show.html.haml +++ b/app/views/projects/jobs/show.html.haml @@ -54,41 +54,53 @@ Job has been erased by #{link_to(@build.erased_by_name, user_path(@build.erased_by))} #{time_ago_with_tooltip(@build.erased_at)} - else Job has been erased #{time_ago_with_tooltip(@build.erased_at)} + - if @build.started? + .build-trace-container.prepend-top-default + .top-bar.js-top-bar + .js-truncated-info.truncated-info.hidden-xs.pull-left.hidden< + Showing last + %span.js-truncated-info-size.truncated-info-size>< + of log - + %a.js-raw-link.raw-link{ href: raw_project_job_path(@project, @build) }>< Complete Raw - .build-trace-container.prepend-top-default - .top-bar.js-top-bar - .js-truncated-info.truncated-info.hidden-xs.pull-left.hidden< - Showing last - %span.js-truncated-info-size.truncated-info-size>< - of log - - %a.js-raw-link.raw-link{ href: raw_project_job_path(@project, @build) }>< Complete Raw + .controllers.pull-right + - if @build.has_trace? + = link_to raw_project_job_path(@project, @build), + title: 'Show complete raw', + data: { placement: 'top', container: 'body' }, + class: 'js-raw-link-controller has-tooltip controllers-buttons' do + = icon('file-text-o') - .controllers.pull-right - - if @build.has_trace? - = link_to raw_project_job_path(@project, @build), - title: 'Show complete raw', - data: { placement: 'top', container: 'body' }, - class: 'js-raw-link-controller has-tooltip controllers-buttons' do - = icon('file-text-o') - - - if @build.erasable? && can?(current_user, :erase_build, @build) - = link_to erase_project_job_path(@project, @build), - method: :post, - data: { confirm: 'Are you sure you want to erase this build?', placement: 'top', container: 'body' }, - title: 'Erase job log', - class: 'has-tooltip js-erase-link controllers-buttons' do - = icon('trash') - .has-tooltip.controllers-buttons{ title: 'Scroll to top', data: { placement: 'top', container: 'body'} } - %button.js-scroll-up.btn-scroll.btn-transparent.btn-blank{ type: 'button', disabled: true } - = custom_icon('scroll_up') - .has-tooltip.controllers-buttons{ title: 'Scroll to bottom', data: { placement: 'top', container: 'body'} } - %button.js-scroll-down.btn-scroll.btn-transparent.btn-blank{ type: 'button', disabled: true } - = custom_icon('scroll_down') - - %pre.build-trace#build-trace - %code.bash.js-build-output - .build-loader-animation.js-build-refresh + - if @build.erasable? && can?(current_user, :erase_build, @build) + = link_to erase_project_job_path(@project, @build), + method: :post, + data: { confirm: 'Are you sure you want to erase this build?', placement: 'top', container: 'body' }, + title: 'Erase job log', + class: 'has-tooltip js-erase-link controllers-buttons' do + = icon('trash') + .has-tooltip.controllers-buttons{ title: 'Scroll to top', data: { placement: 'top', container: 'body'} } + %button.js-scroll-up.btn-scroll.btn-transparent.btn-blank{ type: 'button', disabled: true } + = custom_icon('scroll_up') + .has-tooltip.controllers-buttons{ title: 'Scroll to bottom', data: { placement: 'top', container: 'body'} } + %button.js-scroll-down.btn-scroll.btn-transparent.btn-blank{ type: 'button', disabled: true } + = custom_icon('scroll_down') + %pre.build-trace#build-trace + %code.bash.js-build-output + .build-loader-animation.js-build-refresh + - elsif @build.playable? + = render 'empty_state', + illustration: 'illustrations/manual_action.svg', + illustration_size: 'svg-394', + title: _('This job requires a manual action'), + content: _('This job depends on a user to trigger its process. Often they are used to deploy code to production environments.'), + action: ( link_to _('Trigger this manual action'), play_project_job_path(@project, @build), class: 'btn btn-primary', title: _('Trigger this manual action') ) + - else + = render 'empty_state', + illustration: 'illustrations/job_not_triggered.svg', + illustration_size: 'svg-306', + title: _('This job has not been triggered yet'), + content: _('This job depends on upstream jobs that need to succeed in order for this job to be triggered.') = render "sidebar" diff --git a/app/views/projects/pipelines/index.html.haml b/app/views/projects/pipelines/index.html.haml index b2e71cff6ce..f8555f11aab 100644 --- a/app/views/projects/pipelines/index.html.haml +++ b/app/views/projects/pipelines/index.html.haml @@ -10,7 +10,8 @@ "new-pipeline-path" => new_project_pipeline_path(@project), "can-create-pipeline" => can?(current_user, :create_pipeline, @project).to_s, "has-ci" => @repository.gitlab_ci_yml, - "ci-lint-path" => ci_lint_path } } + "ci-lint-path" => ci_lint_path, + "reset-cache-path" => reset_cache_project_settings_ci_cd_path(@project) } } = page_specific_javascript_bundle_tag('common_vue') = page_specific_javascript_bundle_tag('pipelines') diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index fafd9e5ef00..50e876b1d19 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -22,6 +22,7 @@ - gcp_cluster:cluster_provision - gcp_cluster:cluster_wait_for_app_installation - gcp_cluster:wait_for_cluster_creation +- gcp_cluster:check_gcp_project_billing - github_import_advance_stage - github_importer:github_import_import_diff_note diff --git a/app/workers/background_migration_worker.rb b/app/workers/background_migration_worker.rb index aeb3bc019b9..376703f6319 100644 --- a/app/workers/background_migration_worker.rb +++ b/app/workers/background_migration_worker.rb @@ -1,10 +1,53 @@ class BackgroundMigrationWorker include ApplicationWorker + # The minimum amount of time between processing two jobs of the same migration + # class. + # + # This interval is set to 5 minutes so autovacuuming and other maintenance + # related tasks have plenty of time to clean up after a migration has been + # performed. + MIN_INTERVAL = 5.minutes.to_i + # Performs the background migration. # # See Gitlab::BackgroundMigration.perform for more information. + # + # class_name - The class name of the background migration to run. + # arguments - The arguments to pass to the migration class. def perform(class_name, arguments = []) - Gitlab::BackgroundMigration.perform(class_name, arguments) + should_perform, ttl = perform_and_ttl(class_name) + + if should_perform + Gitlab::BackgroundMigration.perform(class_name, arguments) + else + # If the lease could not be obtained this means either another process is + # running a migration of this class or we ran one recently. In this case + # we'll reschedule the job in such a way that it is picked up again around + # the time the lease expires. + self.class.perform_in(ttl || MIN_INTERVAL, class_name, arguments) + end + end + + def perform_and_ttl(class_name) + if always_perform? + # In test environments `perform_in` will run right away. This can then + # lead to stack level errors in the above `#perform`. To work around this + # we'll just perform the migration right away in the test environment. + [true, nil] + else + lease = lease_for(class_name) + + [lease.try_obtain, lease.ttl] + end + end + + def lease_for(class_name) + Gitlab::ExclusiveLease + .new("#{self.class.name}:#{class_name}", timeout: MIN_INTERVAL) + end + + def always_perform? + Rails.env.test? end end diff --git a/app/workers/check_gcp_project_billing_worker.rb b/app/workers/check_gcp_project_billing_worker.rb new file mode 100644 index 00000000000..557af14ee57 --- /dev/null +++ b/app/workers/check_gcp_project_billing_worker.rb @@ -0,0 +1,59 @@ +require 'securerandom' + +class CheckGcpProjectBillingWorker + include ApplicationWorker + include ClusterQueue + + LEASE_TIMEOUT = 15.seconds.to_i + SESSION_KEY_TIMEOUT = 5.minutes + BILLING_TIMEOUT = 1.hour + + def self.get_session_token(token_key) + Gitlab::Redis::SharedState.with do |redis| + redis.get(get_redis_session_key(token_key)) + end + end + + def self.store_session_token(token) + generate_token_key.tap do |token_key| + Gitlab::Redis::SharedState.with do |redis| + redis.set(get_redis_session_key(token_key), token, ex: SESSION_KEY_TIMEOUT) + end + end + end + + def self.redis_shared_state_key_for(token) + "gitlab:gcp:#{token.hash}:billing_enabled" + end + + def perform(token_key) + return unless token_key + + token = self.get_session_token(token_key) + return unless token + return unless try_obtain_lease_for(token) + + billing_enabled_projects = CheckGcpProjectBillingService.new.execute(token) + Gitlab::Redis::SharedState.with do |redis| + redis.set(self.class.redis_shared_state_key_for(token), + !billing_enabled_projects.empty?, + ex: BILLING_TIMEOUT) + end + end + + private + + def self.generate_token_key + SecureRandom.uuid + end + + def self.get_redis_session_key(token_key) + "gitlab:gcp:session:#{token_key}" + end + + def try_obtain_lease_for(token) + Gitlab::ExclusiveLease + .new("check_gcp_project_billing_worker:#{token.hash}", timeout: LEASE_TIMEOUT) + .try_obtain + end +end diff --git a/changelogs/unreleased/28260-fix-pages-custom-domain-url.yml b/changelogs/unreleased/28260-fix-pages-custom-domain-url.yml new file mode 100644 index 00000000000..edd63c4ea9c --- /dev/null +++ b/changelogs/unreleased/28260-fix-pages-custom-domain-url.yml @@ -0,0 +1,5 @@ +--- +title: Generate HTTP URLs for custom Pages domains when appropriate +merge_request: 16279 +author: +type: fixed diff --git a/changelogs/unreleased/38030-add-graph-value-to-hover.yml b/changelogs/unreleased/38030-add-graph-value-to-hover.yml new file mode 100644 index 00000000000..233db2b19c9 --- /dev/null +++ b/changelogs/unreleased/38030-add-graph-value-to-hover.yml @@ -0,0 +1,5 @@ +--- +title: Display graph values on hover within monitoring page +merge_request: 16261 +author: +type: changed diff --git a/changelogs/unreleased/3968-protected-branch-is-not-set-for-default-branch-on-import.yml b/changelogs/unreleased/3968-protected-branch-is-not-set-for-default-branch-on-import.yml new file mode 100644 index 00000000000..e972ac6d54a --- /dev/null +++ b/changelogs/unreleased/3968-protected-branch-is-not-set-for-default-branch-on-import.yml @@ -0,0 +1,5 @@ +--- +title: Protected branch is now created for default branch on import +merge_request: 16198 +author: +type: fixed diff --git a/changelogs/unreleased/39957-redirect-to-gpc-page-if-users-try-to-create-a-cluster-but-the-account-is-not-enabled.yml b/changelogs/unreleased/39957-redirect-to-gpc-page-if-users-try-to-create-a-cluster-but-the-account-is-not-enabled.yml new file mode 100644 index 00000000000..d8fd1f14bd4 --- /dev/null +++ b/changelogs/unreleased/39957-redirect-to-gpc-page-if-users-try-to-create-a-cluster-but-the-account-is-not-enabled.yml @@ -0,0 +1,5 @@ +--- +title: Implement checking GCP project billing status in cluster creation form. +merge_request: 15665 +author: +type: changed diff --git a/changelogs/unreleased/40190-fix-slash-commands-dropdown-description-mis-alignement-on-firefox.yml b/changelogs/unreleased/40190-fix-slash-commands-dropdown-description-mis-alignement-on-firefox.yml new file mode 100644 index 00000000000..71a606ff607 --- /dev/null +++ b/changelogs/unreleased/40190-fix-slash-commands-dropdown-description-mis-alignement-on-firefox.yml @@ -0,0 +1,5 @@ +--- +title: "Fix slash commands dropdown description mis-alignment on Firefox" +merge_request: 16125 +author: Maurizio De Santis +type: fixed diff --git a/changelogs/unreleased/40418-migrate-existing-data-from-kubernetesservice-to-clusters-platforms-kubernetes.yml b/changelogs/unreleased/40418-migrate-existing-data-from-kubernetesservice-to-clusters-platforms-kubernetes.yml new file mode 100644 index 00000000000..5e158d831a6 --- /dev/null +++ b/changelogs/unreleased/40418-migrate-existing-data-from-kubernetesservice-to-clusters-platforms-kubernetes.yml @@ -0,0 +1,5 @@ +--- +title: Migrate existing data from KubernetesService to Clusters::Platforms::Kubernetes +merge_request: 15589 +author: +type: changed diff --git a/changelogs/unreleased/40549-render-emoj-in-groups-overview.yml b/changelogs/unreleased/40549-render-emoj-in-groups-overview.yml new file mode 100644 index 00000000000..9b2f58df440 --- /dev/null +++ b/changelogs/unreleased/40549-render-emoj-in-groups-overview.yml @@ -0,0 +1,5 @@ +--- +title: Rendering of emoji's in Group-Overview +merge_request: 16098 +author: Jacopo Beschi @jacopo-beschi +type: added diff --git a/changelogs/unreleased/41244-issue-board-shortcut-working-while-no-issues.yml b/changelogs/unreleased/41244-issue-board-shortcut-working-while-no-issues.yml new file mode 100644 index 00000000000..b2c3a86551b --- /dev/null +++ b/changelogs/unreleased/41244-issue-board-shortcut-working-while-no-issues.yml @@ -0,0 +1,5 @@ +--- +title: disables shortcut to issue boards when issues are not enabled +merge_request: 16020 +author: Christiaan Van den Poel +type: fixed diff --git a/changelogs/unreleased/41249-clearing-the-cache.yml b/changelogs/unreleased/41249-clearing-the-cache.yml new file mode 100644 index 00000000000..221589a1239 --- /dev/null +++ b/changelogs/unreleased/41249-clearing-the-cache.yml @@ -0,0 +1,5 @@ +--- +title: Implement project jobs cache reset +merge_request: 16067 +author: +type: added diff --git a/changelogs/unreleased/41754-update-scss-lint-to-0-56-0.yml b/changelogs/unreleased/41754-update-scss-lint-to-0-56-0.yml new file mode 100644 index 00000000000..b96dd376cec --- /dev/null +++ b/changelogs/unreleased/41754-update-scss-lint-to-0-56-0.yml @@ -0,0 +1,5 @@ +--- +title: Update scss-lint to 0.56.0 +merge_request: 16278 +author: Takuya Noguchi +type: other diff --git a/changelogs/unreleased/delay-background-migrations.yml b/changelogs/unreleased/delay-background-migrations.yml new file mode 100644 index 00000000000..aa12591e7d2 --- /dev/null +++ b/changelogs/unreleased/delay-background-migrations.yml @@ -0,0 +1,5 @@ +--- +title: Run background migrations with a minimum interval +merge_request: +author: +type: changed diff --git a/changelogs/unreleased/fix-gb-fix-import-export-restoring-associations.yml b/changelogs/unreleased/fix-gb-fix-import-export-restoring-associations.yml new file mode 100644 index 00000000000..58df0024d61 --- /dev/null +++ b/changelogs/unreleased/fix-gb-fix-import-export-restoring-associations.yml @@ -0,0 +1,6 @@ +--- +title: Fix missing references to pipeline objects when restoring project with import/export + feature +merge_request: 16221 +author: +type: fixed diff --git a/changelogs/unreleased/issue_40500.yml b/changelogs/unreleased/issue_40500.yml new file mode 100644 index 00000000000..35e8938fdad --- /dev/null +++ b/changelogs/unreleased/issue_40500.yml @@ -0,0 +1,5 @@ +--- +title: Fix timeout when filtering issues by label +merge_request: +author: +type: performance diff --git a/config/routes/project.rb b/config/routes/project.rb index 1354c4c5537..bdf4b199c0a 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -408,7 +408,9 @@ constraints(ProjectUrlConstrainer.new) do end namespace :settings do get :members, to: redirect("%{namespace_id}/%{project_id}/project_members") - resource :ci_cd, only: [:show], controller: 'ci_cd' + resource :ci_cd, only: [:show], controller: 'ci_cd' do + post :reset_cache + end resource :integrations, only: [:show] resource :repository, only: [:show], controller: :repository end diff --git a/db/fixtures/development/04_project.rb b/db/fixtures/development/04_project.rb index 1f8f5cfc82b..213c8bca639 100644 --- a/db/fixtures/development/04_project.rb +++ b/db/fixtures/development/04_project.rb @@ -63,7 +63,8 @@ Sidekiq::Testing.inline! do namespace_id: group.id, name: project_path.titleize, description: FFaker::Lorem.sentence, - visibility_level: Gitlab::VisibilityLevel.values.sample + visibility_level: Gitlab::VisibilityLevel.values.sample, + skip_disk_validation: true } project = Projects::CreateService.new(User.first, params).execute diff --git a/db/migrate/20160621123729_add_rebase_commit_sha_to_merge_requests.rb b/db/migrate/20160621123729_add_rebase_commit_sha_to_merge_requests.rb new file mode 100644 index 00000000000..1222dc640a8 --- /dev/null +++ b/db/migrate/20160621123729_add_rebase_commit_sha_to_merge_requests.rb @@ -0,0 +1,22 @@ +# This migration is a duplicate of 20171230123729_add_rebase_commit_sha_to_merge_requests_ce.rb +# +# We backported this feature from EE using the same migration, but with a new +# timestamp, which caused an error when the backport was then to be merged back +# into EE. +# +# See discussion at https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/3932 +class AddRebaseCommitShaToMergeRequests < ActiveRecord::Migration + DOWNTIME = false + + def up + unless column_exists?(:merge_requests, :rebase_commit_sha) + add_column :merge_requests, :rebase_commit_sha, :string + end + end + + def down + if column_exists?(:merge_requests, :rebase_commit_sha) + remove_column :merge_requests, :rebase_commit_sha + end + end +end diff --git a/db/migrate/20171222183504_add_jobs_cache_index_to_project.rb b/db/migrate/20171222183504_add_jobs_cache_index_to_project.rb new file mode 100644 index 00000000000..607e9d027d7 --- /dev/null +++ b/db/migrate/20171222183504_add_jobs_cache_index_to_project.rb @@ -0,0 +1,13 @@ +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class AddJobsCacheIndexToProject < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + # Set this constant to true if this migration requires downtime. + DOWNTIME = false + + def change + add_column :projects, :jobs_cache_index, :integer + end +end diff --git a/db/migrate/20171230123729_add_rebase_commit_sha_to_merge_requests.rb b/db/migrate/20171230123729_add_rebase_commit_sha_to_merge_requests.rb deleted file mode 100644 index 2ce156fa92e..00000000000 --- a/db/migrate/20171230123729_add_rebase_commit_sha_to_merge_requests.rb +++ /dev/null @@ -1,7 +0,0 @@ -class AddRebaseCommitShaToMergeRequests < ActiveRecord::Migration - DOWNTIME = false - - def change - add_column :merge_requests, :rebase_commit_sha, :string - end -end diff --git a/db/migrate/20171230123729_add_rebase_commit_sha_to_merge_requests_ce.rb b/db/migrate/20171230123729_add_rebase_commit_sha_to_merge_requests_ce.rb new file mode 100644 index 00000000000..94a7c1019d8 --- /dev/null +++ b/db/migrate/20171230123729_add_rebase_commit_sha_to_merge_requests_ce.rb @@ -0,0 +1,15 @@ +class AddRebaseCommitShaToMergeRequestsCe < ActiveRecord::Migration + DOWNTIME = false + + def up + unless column_exists?(:merge_requests, :rebase_commit_sha) + add_column :merge_requests, :rebase_commit_sha, :string + end + end + + def down + if column_exists?(:merge_requests, :rebase_commit_sha) + remove_column :merge_requests, :rebase_commit_sha + end + end +end diff --git a/db/post_migrate/20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb b/db/post_migrate/20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb new file mode 100644 index 00000000000..11b581e4b57 --- /dev/null +++ b/db/post_migrate/20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb @@ -0,0 +1,151 @@ +class MigrateKubernetesServiceToNewClustersArchitectures < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + DEFAULT_KUBERNETES_SERVICE_CLUSTER_NAME = 'KubernetesService'.freeze + + disable_ddl_transaction! + + class Project < ActiveRecord::Base + self.table_name = 'projects' + + has_many :cluster_projects, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::ClustersProject' + has_many :clusters, through: :cluster_projects, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::Cluster' + has_many :services, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::Service' + has_one :kubernetes_service, -> { where(category: 'deployment', type: 'KubernetesService') }, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::Service', inverse_of: :project, foreign_key: :project_id + end + + class Cluster < ActiveRecord::Base + self.table_name = 'clusters' + + has_many :cluster_projects, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::ClustersProject' + has_many :projects, through: :cluster_projects, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::Project' + has_one :platform_kubernetes, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::PlatformsKubernetes' + + accepts_nested_attributes_for :platform_kubernetes + + enum platform_type: { + kubernetes: 1 + } + + enum provider_type: { + user: 0, + gcp: 1 + } + end + + class ClustersProject < ActiveRecord::Base + self.table_name = 'cluster_projects' + + belongs_to :cluster, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::Cluster' + belongs_to :project, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::Project' + end + + class PlatformsKubernetes < ActiveRecord::Base + self.table_name = 'cluster_platforms_kubernetes' + + belongs_to :cluster, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::Cluster' + + attr_encrypted :token, + mode: :per_attribute_iv, + key: Gitlab::Application.secrets.db_key_base, + algorithm: 'aes-256-cbc' + end + + class Service < ActiveRecord::Base + include EachBatch + + self.table_name = 'services' + self.inheritance_column = :_type_disabled # Disable STI, otherwise KubernetesModel will be looked up + + belongs_to :project, class_name: 'MigrateKubernetesServiceToNewClustersArchitectures::Project', foreign_key: :project_id + + scope :unmanaged_kubernetes_service, -> do + joins('LEFT JOIN projects ON projects.id = services.project_id') + .joins('LEFT JOIN cluster_projects ON cluster_projects.project_id = projects.id') + .joins('LEFT JOIN cluster_platforms_kubernetes ON cluster_platforms_kubernetes.cluster_id = cluster_projects.cluster_id') + .where(category: 'deployment', type: 'KubernetesService', template: false) + .where("services.properties LIKE '%api_url%'") + .where("(services.properties NOT LIKE CONCAT('%', cluster_platforms_kubernetes.api_url, '%')) OR cluster_platforms_kubernetes.api_url IS NULL") + .group(:id) + .order(id: :asc) + end + + scope :kubernetes_service_without_template, -> do + where(category: 'deployment', type: 'KubernetesService', template: false) + end + + def api_url + parsed_properties['api_url'] + end + + def ca_pem + parsed_properties['ca_pem'] + end + + def namespace + parsed_properties['namespace'] + end + + def token + parsed_properties['token'] + end + + private + + def parsed_properties + @parsed_properties ||= JSON.parse(self.properties) + end + end + + def find_dedicated_environement_scope(project) + environment_scopes = project.clusters.map(&:environment_scope) + + return '*' if environment_scopes.exclude?('*') # KubernetesService should be added as a default cluster (environment_scope: '*') at first place + return 'migrated/*' if environment_scopes.exclude?('migrated/*') # If it's conflicted, the KubernetesService added as a migrated cluster + + unique_iid = 0 + + # If it's still conflicted, finding an unique environment scope incrementaly + loop do + candidate = "migrated#{unique_iid}/*" + return candidate if environment_scopes.exclude?(candidate) + + unique_iid += 1 + end + end + + def up + ActiveRecord::Base.transaction do + MigrateKubernetesServiceToNewClustersArchitectures::Service + .unmanaged_kubernetes_service.find_each(batch_size: 1) do |kubernetes_service| + MigrateKubernetesServiceToNewClustersArchitectures::Cluster.create( + enabled: kubernetes_service.active, + user_id: nil, # KubernetesService doesn't have + name: DEFAULT_KUBERNETES_SERVICE_CLUSTER_NAME, + provider_type: MigrateKubernetesServiceToNewClustersArchitectures::Cluster.provider_types[:user], + platform_type: MigrateKubernetesServiceToNewClustersArchitectures::Cluster.platform_types[:kubernetes], + projects: [kubernetes_service.project], + environment_scope: find_dedicated_environement_scope(kubernetes_service.project), + platform_kubernetes_attributes: { + api_url: kubernetes_service.api_url, + ca_cert: kubernetes_service.ca_pem, + namespace: kubernetes_service.namespace, + username: nil, # KubernetesService doesn't have + encrypted_password: nil, # KubernetesService doesn't have + encrypted_password_iv: nil, # KubernetesService doesn't have + token: kubernetes_service.token # encrypted_token and encrypted_token_iv + } ) + end + end + + MigrateKubernetesServiceToNewClustersArchitectures::Service + .kubernetes_service_without_template.each_batch(of: 100) do |kubernetes_service| + kubernetes_service.update_all(active: false) + end + end + + def down + # noop + end +end diff --git a/db/schema.rb b/db/schema.rb index 740e80ccfd4..e6a2ea4c862 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1451,6 +1451,7 @@ ActiveRecord::Schema.define(version: 20171230123729) do t.boolean "repository_read_only" t.boolean "merge_requests_ff_only_enabled", default: false t.boolean "merge_requests_rebase_enabled", default: false, null: false + t.integer "jobs_cache_index" end add_index "projects", ["ci_id"], name: "index_projects_on_ci_id", using: :btree diff --git a/doc/development/writing_documentation.md b/doc/development/writing_documentation.md index 43a79ffcaa5..133ac0234cf 100644 --- a/doc/development/writing_documentation.md +++ b/doc/development/writing_documentation.md @@ -15,7 +15,7 @@ request introducing these changes must be accompanied by the documentation (either updating existing ones or creating new ones). This is also valid when changes are introduced to the UI. -The one resposible for writing the first piece of documentation is the developer who +The one responsible for writing the first piece of documentation is the developer who wrote the code. It's the job of the Product Manager to ensure all features are shipped with its docs, whether is a small or big change. At the pace GitLab evolves, this is the only way to keep the docs up-to-date. If you have any questions about it, @@ -31,7 +31,7 @@ Every major feature (regardless if present in GitLab Community or Enterprise edi should present, at the beginning of the document, two main sections: **overview** and **use cases**. Every GitLab EE-only feature should also contain these sections. -**Overview**: at the name suggests, the goal here is to provide an overview of the feature. +**Overview**: as the name suggests, the goal here is to provide an overview of the feature. Describe what is it, what it does, why it is important/cool/nice-to-have, what problem it solves, and what you can do with this feature that you couldn't do before. diff --git a/doc/install/installation.md b/doc/install/installation.md index 67b89d608cc..2b7352d3561 100644 --- a/doc/install/installation.md +++ b/doc/install/installation.md @@ -299,9 +299,9 @@ sudo usermod -aG redis git ### Clone the Source # Clone GitLab repository - sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 10-3-stable gitlab + sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 10-4-stable gitlab -**Note:** You can change `10-3-stable` to `master` if you want the *bleeding edge* version, but never install master on a production server! +**Note:** You can change `10-4-stable` to `master` if you want the *bleeding edge* version, but never install master on a production server! ### Configure It diff --git a/doc/user/project/settings/import_export.md b/doc/user/project/settings/import_export.md index 1b8a84c9599..b8f865679a2 100644 --- a/doc/user/project/settings/import_export.md +++ b/doc/user/project/settings/import_export.md @@ -30,7 +30,8 @@ with all their related data and be moved into a new GitLab instance. | GitLab version | Import/Export version | | ---------------- | --------------------- | -| 10.3 to current | 0.2.1 | +| 10.4 to current | 0.2.2 | +| 10.3 | 0.2.1 | | 10.0 | 0.2.0 | | 9.4.0 | 0.1.8 | | 9.2.0 | 0.1.7 | diff --git a/features/explore/groups.feature b/features/explore/groups.feature deleted file mode 100644 index 830810615e0..00000000000 --- a/features/explore/groups.feature +++ /dev/null @@ -1,105 +0,0 @@ -@public -Feature: Explore Groups - Background: - Given group "TestGroup" has private project "Enterprise" - - @javascript - Scenario: I should see group with private and internal projects as user - Given group "TestGroup" has internal project "Internal" - When I sign in as a user - And I visit group "TestGroup" page - Then I should see project "Internal" items - And I should not see project "Enterprise" items - - @javascript - Scenario: I should see group issues for internal project as user - Given group "TestGroup" has internal project "Internal" - When I sign in as a user - And I visit group "TestGroup" issues page - Then I should see project "Internal" items - And I should not see project "Enterprise" items - - @javascript - Scenario: I should see group merge requests for internal project as user - Given group "TestGroup" has internal project "Internal" - When I sign in as a user - And I visit group "TestGroup" merge requests page - Then I should see project "Internal" items - And I should not see project "Enterprise" items - - @javascript - Scenario: I should see group with private, internal and public projects as visitor - Given group "TestGroup" has internal project "Internal" - Given group "TestGroup" has public project "Community" - When I visit group "TestGroup" page - Then I should see project "Community" items - And I should not see project "Internal" items - And I should not see project "Enterprise" items - - @javascript - Scenario: I should see group issues for public project as visitor - Given group "TestGroup" has internal project "Internal" - Given group "TestGroup" has public project "Community" - When I visit group "TestGroup" issues page - Then I should see project "Community" items - And I should not see project "Internal" items - And I should not see project "Enterprise" items - - @javascript - Scenario: I should see group merge requests for public project as visitor - Given group "TestGroup" has internal project "Internal" - Given group "TestGroup" has public project "Community" - When I visit group "TestGroup" merge requests page - Then I should see project "Community" items - And I should not see project "Internal" items - And I should not see project "Enterprise" items - - @javascript - Scenario: I should see group with private, internal and public projects as user - Given group "TestGroup" has internal project "Internal" - Given group "TestGroup" has public project "Community" - When I sign in as a user - And I visit group "TestGroup" page - Then I should see project "Community" items - And I should see project "Internal" items - And I should not see project "Enterprise" items - - @javascript - Scenario: I should see group issues for internal and public projects as user - Given group "TestGroup" has internal project "Internal" - Given group "TestGroup" has public project "Community" - When I sign in as a user - And I visit group "TestGroup" issues page - Then I should see project "Community" items - And I should see project "Internal" items - And I should not see project "Enterprise" items - - @javascript - Scenario: I should see group merge requests for internal and public projects as user - Given group "TestGroup" has internal project "Internal" - Given group "TestGroup" has public project "Community" - When I sign in as a user - And I visit group "TestGroup" merge requests page - Then I should see project "Community" items - And I should see project "Internal" items - And I should not see project "Enterprise" items - - @javascript - Scenario: I should see group with public project in public groups area - Given group "TestGroup" has public project "Community" - When I visit the public groups area - Then I should see group "TestGroup" - - @javascript - Scenario: I should see group with public project in public groups area as user - Given group "TestGroup" has public project "Community" - When I sign in as a user - And I visit the public groups area - Then I should see group "TestGroup" - - @javascript - Scenario: I should see group with internal project in public groups area as user - Given group "TestGroup" has internal project "Internal" - When I sign in as a user - And I visit the public groups area - Then I should see group "TestGroup" diff --git a/features/invites.feature b/features/invites.feature deleted file mode 100644 index dc8eefaeaed..00000000000 --- a/features/invites.feature +++ /dev/null @@ -1,45 +0,0 @@ -Feature: Invites - Background: - Given "John Doe" is owner of group "Owned" - And "John Doe" has invited "user@example.com" to group "Owned" - - Scenario: Viewing invitation when signed out - When I visit the invitation page - Then I should be redirected to the sign in page - And I should see a notice telling me to sign in - - Scenario: Signing in to view invitation - When I visit the invitation page - And I sign in as "Mary Jane" - Then I should be redirected to the invitation page - - Scenario: Viewing invitation when signed in - Given I sign in as "Mary Jane" - And I visit the invitation page - Then I should see the invitation details - And I should see an "Accept invitation" button - And I should see a "Decline" button - - Scenario: Viewing invitation as an existing member - Given I sign in as "John Doe" - And I visit the invitation page - Then I should see a message telling me I'm already a member - - Scenario: Accepting the invitation - Given I sign in as "Mary Jane" - And I visit the invitation page - And I click the "Accept invitation" button - Then I should be redirected to the group page - And I should see a notice telling me I have access - - Scenario: Declining the application when signed in - Given I sign in as "Mary Jane" - And I visit the invitation page - And I click the "Decline" button - Then I should be redirected to the dashboard - And I should see a notice telling me I have declined - - Scenario: Declining the application when signed out - When I visit the invitation's decline page - Then I should be redirected to the sign in page - And I should see a notice telling me I have declined diff --git a/features/steps/explore/groups.rb b/features/steps/explore/groups.rb deleted file mode 100644 index 409bf0cb416..00000000000 --- a/features/steps/explore/groups.rb +++ /dev/null @@ -1,88 +0,0 @@ -class Spinach::Features::ExploreGroups < Spinach::FeatureSteps - include SharedAuthentication - include SharedPaths - include SharedGroup - include SharedProject - - step 'group "TestGroup" has private project "Enterprise"' do - group_has_project("TestGroup", "Enterprise", Gitlab::VisibilityLevel::PRIVATE) - end - - step 'group "TestGroup" has internal project "Internal"' do - group_has_project("TestGroup", "Internal", Gitlab::VisibilityLevel::INTERNAL) - end - - step 'group "TestGroup" has public project "Community"' do - group_has_project("TestGroup", "Community", Gitlab::VisibilityLevel::PUBLIC) - end - - step '"John Doe" is owner of group "TestGroup"' do - group = Group.find_by(name: "TestGroup") || create(:group, name: "TestGroup") - user = create(:user, name: "John Doe") - group.add_owner(user) - end - - step 'I visit group "TestGroup" page' do - visit group_path(Group.find_by(name: "TestGroup")) - end - - step 'I visit group "TestGroup" issues page' do - visit issues_group_path(Group.find_by(name: "TestGroup")) - end - - step 'I visit group "TestGroup" merge requests page' do - visit merge_requests_group_path(Group.find_by(name: "TestGroup")) - end - - step 'I visit group "TestGroup" members page' do - visit group_group_members_path(Group.find_by(name: "TestGroup")) - end - - step 'I should not see project "Enterprise" items' do - expect(page).not_to have_content "Enterprise" - end - - step 'I should see project "Internal" items' do - expect(page).to have_content "Internal" - end - - step 'I should not see project "Internal" items' do - expect(page).not_to have_content "Internal" - end - - step 'I should see project "Community" items' do - expect(page).to have_content "Community" - end - - step 'I change filter to Everyone\'s' do - click_link "Everyone's" - end - - step 'I should see group member "John Doe"' do - expect(page).to have_content "John Doe" - end - - protected - - def group_has_project(groupname, projectname, visibility_level) - group = Group.find_by(name: groupname) || create(:group, name: groupname) - project = create(:project, - namespace: group, - name: projectname, - path: "#{groupname}-#{projectname}", - visibility_level: visibility_level - ) - create(:issue, - title: "#{projectname} feature", - project: project - ) - create(:merge_request, - title: "#{projectname} feature implemented", - source_project: project, - target_project: project - ) - create(:closed_issue_event, - project: project - ) - end -end diff --git a/features/steps/invites.rb b/features/steps/invites.rb deleted file mode 100644 index dac972172aa..00000000000 --- a/features/steps/invites.rb +++ /dev/null @@ -1,80 +0,0 @@ -class Spinach::Features::Invites < Spinach::FeatureSteps - include SharedAuthentication - include SharedUser - include SharedGroup - - step '"John Doe" has invited "user@example.com" to group "Owned"' do - user = User.find_by(name: "John Doe") - group = Group.find_by(name: "Owned") - group.add_developer("user@example.com", user) - end - - step 'I visit the invitation page' do - group = Group.find_by(name: "Owned") - invite = group.group_members.invite.last - invite.generate_invite_token! - @raw_invite_token = invite.raw_invite_token - visit invite_path(@raw_invite_token) - end - - step 'I should be redirected to the sign in page' do - expect(current_path).to eq(new_user_session_path) - end - - step 'I should see a notice telling me to sign in' do - expect(page).to have_content "To accept this invitation, sign in" - end - - step 'I should be redirected to the invitation page' do - expect(current_path).to eq(invite_path(@raw_invite_token)) - end - - step 'I should see the invitation details' do - expect(page).to have_content("You have been invited by John Doe to join group Owned as Developer.") - end - - step "I should see a message telling me I'm already a member" do - expect(page).to have_content("However, you are already a member of this group.") - end - - step 'I should see an "Accept invitation" button' do - expect(page).to have_link("Accept invitation") - end - - step 'I should see a "Decline" button' do - expect(page).to have_link("Decline") - end - - step 'I click the "Accept invitation" button' do - page.click_link "Accept invitation" - end - - step 'I should be redirected to the group page' do - group = Group.find_by(name: "Owned") - expect(current_path).to eq(group_path(group)) - end - - step 'I should see a notice telling me I have access' do - expect(page).to have_content("You have been granted Developer access to group Owned.") - end - - step 'I click the "Decline" button' do - page.click_link "Decline" - end - - step 'I should be redirected to the dashboard' do - expect(current_path).to eq(dashboard_projects_path) - end - - step 'I should see a notice telling me I have declined' do - expect(page).to have_content("You have declined the invitation to join group Owned.") - end - - step "I visit the invitation's decline page" do - group = Group.find_by(name: "Owned") - invite = group.group_members.invite.last - invite.generate_invite_token! - @raw_invite_token = invite.raw_invite_token - visit decline_invite_path(@raw_invite_token) - end -end diff --git a/features/steps/shared/builds.rb b/features/steps/shared/builds.rb index c267195f0e8..a3e4459f169 100644 --- a/features/steps/shared/builds.rb +++ b/features/steps/shared/builds.rb @@ -11,7 +11,7 @@ module SharedBuilds step 'project has a recent build' do @pipeline = create(:ci_empty_pipeline, project: @project, sha: @project.commit.sha, ref: 'master') - @build = create(:ci_build, :coverage, pipeline: @pipeline) + @build = create(:ci_build, :running, :coverage, pipeline: @pipeline) end step 'recent build is successful' do diff --git a/lib/gitlab/database/migration_helpers.rb b/lib/gitlab/database/migration_helpers.rb index 33171f83692..7b35c24d153 100644 --- a/lib/gitlab/database/migration_helpers.rb +++ b/lib/gitlab/database/migration_helpers.rb @@ -842,6 +842,12 @@ into similar problems in the future (e.g. when new tables are created). def queue_background_migration_jobs_by_range_at_intervals(model_class, job_class_name, delay_interval, batch_size: BACKGROUND_MIGRATION_BATCH_SIZE) raise "#{model_class} does not have an ID to use for batch ranges" unless model_class.column_names.include?('id') + # To not overload the worker too much we enforce a minimum interval both + # when scheduling and performing jobs. + if delay_interval < BackgroundMigrationWorker::MIN_INTERVAL + delay_interval = BackgroundMigrationWorker::MIN_INTERVAL + end + model_class.each_batch(of: batch_size) do |relation, index| start_id, end_id = relation.pluck('MIN(id), MAX(id)').first diff --git a/lib/gitlab/exclusive_lease.rb b/lib/gitlab/exclusive_lease.rb index 3f7b42456af..dbb8f317afe 100644 --- a/lib/gitlab/exclusive_lease.rb +++ b/lib/gitlab/exclusive_lease.rb @@ -71,5 +71,16 @@ module Gitlab redis.exists(@redis_shared_state_key) end end + + # Returns the TTL of the Redis key. + # + # This method will return `nil` if no TTL could be obtained. + def ttl + Gitlab::Redis::SharedState.with do |redis| + ttl = redis.ttl(@redis_shared_state_key) + + ttl if ttl.positive? + end + end end end diff --git a/lib/gitlab/git/blob.rb b/lib/gitlab/git/blob.rb index a1755143abe..031fccba92b 100644 --- a/lib/gitlab/git/blob.rb +++ b/lib/gitlab/git/blob.rb @@ -173,8 +173,8 @@ module Gitlab end def find_by_rugged(repository, sha, path, limit:) - commit = repository.lookup(sha) - root_tree = commit.tree + rugged_commit = repository.lookup(sha) + root_tree = rugged_commit.tree blob_entry = find_entry_by_path(repository, root_tree.oid, path) diff --git a/lib/gitlab/git/commit.rb b/lib/gitlab/git/commit.rb index 145721dea76..016437b2419 100644 --- a/lib/gitlab/git/commit.rb +++ b/lib/gitlab/git/commit.rb @@ -15,8 +15,6 @@ module Gitlab attr_accessor *SERIALIZE_KEYS # rubocop:disable Lint/AmbiguousOperator - delegate :tree, to: :rugged_commit - def ==(other) return false unless other.is_a?(Gitlab::Git::Commit) @@ -452,6 +450,11 @@ module Gitlab ) end + # Is this the same as Blob.find_entry_by_path ? + def rugged_tree_entry(path) + rugged_commit.tree.path(path) + end + private def init_from_hash(hash) diff --git a/lib/gitlab/git/index.rb b/lib/gitlab/git/index.rb index db532600d1b..d94082a3e30 100644 --- a/lib/gitlab/git/index.rb +++ b/lib/gitlab/git/index.rb @@ -10,6 +10,7 @@ module Gitlab DEFAULT_MODE = 0o100644 ACTIONS = %w(create create_dir update move delete).freeze + ACTION_OPTIONS = %i(file_path previous_path content encoding).freeze attr_reader :repository, :raw_index @@ -20,6 +21,11 @@ module Gitlab delegate :read_tree, :get, to: :raw_index + def apply(action, options) + validate_action!(action) + public_send(action, options.slice(*ACTION_OPTIONS)) # rubocop:disable GitlabSecurity/PublicSend + end + def write_tree raw_index.write_tree(repository.rugged) end @@ -140,6 +146,12 @@ module Gitlab rescue Rugged::IndexError => e raise IndexError, e.message end + + def validate_action!(action) + unless ACTIONS.include?(action.to_s) + raise ArgumentError, "Unknown action '#{action}'" + end + end end end end diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index e8b1788e140..283134e043e 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -1163,23 +1163,13 @@ module Gitlab end def fetch_repository_as_mirror(repository) - remote_name = "tmp-#{SecureRandom.hex}" - - # Notice that this feature flag is not for `fetch_repository_as_mirror` - # as a whole but for the fetching mechanism (file path or gitaly-ssh). - url, env = gitaly_migrate(:fetch_internal) do |is_enabled| + gitaly_migrate(:remote_fetch_internal_remote) do |is_enabled| if is_enabled - repository = RemoteRepository.new(repository) unless repository.is_a?(RemoteRepository) - [GITALY_INTERNAL_URL, repository.fetch_env] + gitaly_remote_client.fetch_internal_remote(repository) else - [repository.path, nil] + rugged_fetch_repository_as_mirror(repository) end end - - add_remote(remote_name, url, mirror_refmap: :all_refs) - fetch_remote(remote_name, env: env) - ensure - remove_remote(remote_name) end def blob_at(sha, path) @@ -1187,7 +1177,7 @@ module Gitlab end # Items should be of format [[commit_id, path], [commit_id1, path1]] - def batch_blobs(items, blob_size_limit: nil) + def batch_blobs(items, blob_size_limit: Gitlab::Git::Blob::MAX_DATA_DISPLAY_SIZE) Gitlab::Git::Blob.batch(self, items, blob_size_limit: blob_size_limit) end @@ -1300,6 +1290,42 @@ module Gitlab success || gitlab_projects_error end + # rubocop:disable Metrics/ParameterLists + def multi_action( + user, branch_name:, message:, actions:, + author_email: nil, author_name: nil, + start_branch_name: nil, start_repository: self) + + OperationService.new(user, self).with_branch( + branch_name, + start_branch_name: start_branch_name, + start_repository: start_repository + ) do |start_commit| + index = Gitlab::Git::Index.new(self) + parents = [] + + if start_commit + index.read_tree(start_commit.rugged_commit.tree) + parents = [start_commit.sha] + end + + actions.each { |opts| index.apply(opts.delete(:action), opts) } + + committer = user_to_committer(user) + author = Gitlab::Git.committer_hash(email: author_email, name: author_name) || committer + options = { + tree: index.write_tree, + message: message, + parents: parents, + author: author, + committer: committer + } + + create_commit(options) + end + end + # rubocop:enable Metrics/ParameterLists + def gitaly_repository Gitlab::GitalyClient::Util.repository(@storage, @relative_path, @gl_repository) end @@ -2034,6 +2060,16 @@ module Gitlab false end + def rugged_fetch_repository_as_mirror(repository) + remote_name = "tmp-#{SecureRandom.hex}" + repository = RemoteRepository.new(repository) unless repository.is_a?(RemoteRepository) + + add_remote(remote_name, GITALY_INTERNAL_URL, mirror_refmap: :all_refs) + fetch_remote(remote_name, env: repository.fetch_env) + ensure + remove_remote(remote_name) + end + def fetch_remote(remote_name = 'origin', env: nil) run_git(['fetch', remote_name], env: env).last.zero? end diff --git a/lib/gitlab/gitaly_client/remote_service.rb b/lib/gitlab/gitaly_client/remote_service.rb index 9218f6cfd68..559a901b9a3 100644 --- a/lib/gitlab/gitaly_client/remote_service.rb +++ b/lib/gitlab/gitaly_client/remote_service.rb @@ -23,6 +23,19 @@ module Gitlab response.result end + + def fetch_internal_remote(repository) + request = Gitaly::FetchInternalRemoteRequest.new( + repository: @gitaly_repo, + remote_repository: repository.gitaly_repository + ) + + response = GitalyClient.call(@storage, :remote_service, + :fetch_internal_remote, request, + remote_storage: repository.storage) + + response.result + end end end end diff --git a/lib/gitlab/import_export.rb b/lib/gitlab/import_export.rb index 2066005dddc..af203ff711d 100644 --- a/lib/gitlab/import_export.rb +++ b/lib/gitlab/import_export.rb @@ -3,7 +3,7 @@ module Gitlab extend self # For every version update, the version history in import_export.md has to be kept up to date. - VERSION = '0.2.1'.freeze + VERSION = '0.2.2'.freeze FILENAME_LIMIT = 50 def export_path(relative_path:) diff --git a/lib/gitlab/import_export/import_export.yml b/lib/gitlab/import_export/import_export.yml index f2b193c79cb..2daed10f678 100644 --- a/lib/gitlab/import_export/import_export.yml +++ b/lib/gitlab/import_export/import_export.yml @@ -49,8 +49,8 @@ project_tree: - :author - events: - :push_event_payload - - :stages - - :statuses + - stages: + - :statuses - :auto_devops - :triggers - :pipeline_schedules diff --git a/lib/gitlab/import_export/relation_factory.rb b/lib/gitlab/import_export/relation_factory.rb index d7d1b05e8b9..05dbaf6322c 100644 --- a/lib/gitlab/import_export/relation_factory.rb +++ b/lib/gitlab/import_export/relation_factory.rb @@ -62,6 +62,7 @@ module Gitlab when :notes then setup_note when :project_label, :project_labels then setup_label when :milestone, :milestones then setup_milestone + when 'Ci::Pipeline' then setup_pipeline else @relation_hash['project_id'] = @project.id end @@ -112,9 +113,7 @@ module Gitlab @relation_hash.delete('trace') # old export files have trace @relation_hash.delete('token') - imported_object do |object| - object.commit_id = nil - end + imported_object elsif @relation_name == :merge_requests MergeRequestParser.new(@project, @relation_hash.delete('diff_head_sha'), imported_object, @relation_hash).parse! else @@ -182,8 +181,9 @@ module Gitlab end def imported_object - yield(existing_or_new_object) if block_given? - existing_or_new_object.importing = true if existing_or_new_object.respond_to?(:importing) + if existing_or_new_object.respond_to?(:importing) + existing_or_new_object.importing = true + end existing_or_new_object rescue ActiveRecord::RecordNotUnique @@ -211,6 +211,14 @@ module Gitlab @relation_hash['diff'] = @relation_hash.delete('utf8_diff') end + def setup_pipeline + @relation_hash.fetch('stages').each do |stage| + stage.statuses.each do |status| + status.pipeline = imported_object + end + end + end + def existing_or_new_object # Only find existing records to avoid mapping tables such as milestones # Otherwise always create the record, skipping the extra SELECT clause. diff --git a/lib/google_api/cloud_platform/client.rb b/lib/google_api/cloud_platform/client.rb index b0563fb2d69..f05d001fd02 100644 --- a/lib/google_api/cloud_platform/client.rb +++ b/lib/google_api/cloud_platform/client.rb @@ -1,4 +1,6 @@ require 'google/apis/container_v1' +require 'google/apis/cloudbilling_v1' +require 'google/apis/cloudresourcemanager_v1' module GoogleApi module CloudPlatform @@ -40,6 +42,22 @@ module GoogleApi true end + def projects_list + service = Google::Apis::CloudresourcemanagerV1::CloudResourceManagerService.new + service.authorization = access_token + + service.fetch_all(items: :projects) do |token| + service.list_projects(page_token: token) + end + end + + def projects_get_billing_info(project_name) + service = Google::Apis::CloudbillingV1::CloudbillingService.new + service.authorization = access_token + + service.get_project_billing_info("projects/#{project_name}") + end + def projects_zones_clusters_get(project_id, zone, cluster_id) service = Google::Apis::ContainerV1::ContainerService.new service.authorization = access_token diff --git a/locale/bg/gitlab.po b/locale/bg/gitlab.po index 374164cbe65..8432914d6a7 100644 --- a/locale/bg/gitlab.po +++ b/locale/bg/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-03 12:29-0400\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:42-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Bulgarian\n" "Language: bg_BG\n" @@ -56,6 +56,9 @@ msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts msgstr[0] "" msgstr[1] "" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "" @@ -115,9 +118,6 @@ msgstr "" msgid "Add License" msgstr "ДобавÑне на лиценз" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "Добавете SSH ключ в профила Ñи, за да можете да изтеглÑте или изпращате промени чрез SSH." - msgid "Add new directory" msgstr "ДобавÑне на нова папка" @@ -130,6 +130,15 @@ msgstr "" msgid "All" msgstr "" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "" @@ -139,6 +148,12 @@ msgstr "" msgid "Applications" msgstr "" +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + msgid "Archived project! Repository is read-only" msgstr "Ðрхивиран проект! Хранилището е Ñамо за четене" @@ -166,6 +181,12 @@ msgstr "" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "Прикачете файл чрез влачене и пуÑкане или %{upload_link}" +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + msgid "Authentication Log" msgstr "" @@ -199,6 +220,9 @@ msgstr "" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "" +msgid "Available" +msgstr "" + msgid "Billing" msgstr "" @@ -256,7 +280,7 @@ msgstr "" msgid "Branch" msgid_plural "Branches" msgstr[0] "Клон" -msgstr[1] "Клонове" +msgstr[1] "Клони" msgid "Branch <strong>%{branch_name}</strong> was created. To set up auto deploy, choose a GitLab CI Yaml template and commit your changes. %{link_to_autodeploy_doc}" msgstr "Клонът <strong>%{branch_name}</strong> беше Ñъздаден. За да наÑтроите автоматичното внедрÑване, изберете Yaml шаблон за GitLab CI и подайте промените Ñи. %{link_to_autodeploy_doc}" @@ -264,14 +288,20 @@ msgstr "Клонът <strong>%{branch_name}</strong> беше Ñъздаден. msgid "Branch has changed" msgstr "" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" -msgstr "ТърÑете в клоновете" +msgstr "ТърÑете в клоните" msgid "BranchSwitcherTitle|Switch branch" msgstr "Превключване на клона" msgid "Branches" -msgstr "Клонове" +msgstr "Клони" msgid "Branches|Cant find HEAD commit for this branch" msgstr "" @@ -411,6 +441,12 @@ msgstr "Графики" msgid "Chat" msgstr "" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "Подбиране на това подаване" @@ -486,7 +522,40 @@ msgstr "" msgid "Cluster" msgstr "" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" msgstr "" msgid "ClusterIntegration|Cluster details" @@ -510,21 +579,54 @@ msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "" @@ -534,27 +636,75 @@ msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "" +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "" @@ -567,7 +717,13 @@ msgstr "" msgid "ClusterIntegration|Remove integration" msgstr "" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" @@ -582,15 +738,33 @@ msgstr "" msgid "ClusterIntegration|See zones" msgstr "" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" + msgid "ClusterIntegration|Toggle Cluster" msgstr "" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" @@ -606,9 +780,15 @@ msgstr "" msgid "ClusterIntegration|cluster" msgstr "" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -623,11 +803,6 @@ msgid_plural "Commits" msgstr[0] "Подаване" msgstr[1] "ПодаваниÑ" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "" -msgstr[1] "" - msgid "Commit Message" msgstr "" @@ -709,6 +884,15 @@ msgstr "РъководÑтво за ÑътрудничеÑтво" msgid "Contributors" msgstr "Сътрудници" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "" @@ -736,6 +920,9 @@ msgstr "Създаване на папка" msgid "Create empty bare repository" msgstr "Създаване на празно хранилище" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "" @@ -763,6 +950,9 @@ msgstr "Етикет" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "Ñи Ñъздадете личен жетон за доÑтъп" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "ЧаÑова зона за „Cron“" @@ -808,6 +998,12 @@ msgstr "" msgid "DashboardProjects|Personal" msgstr "" +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + msgid "Define a custom pattern with cron syntax" msgstr "Задайте потребителÑки шаблон, използвайки ÑинтакÑиÑа на „Cron“" @@ -882,6 +1078,72 @@ msgstr "Редактиране на плана %{id} за Ñхема" msgid "Emails" msgstr "" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "" @@ -921,6 +1183,12 @@ msgstr "СобÑтвеникът не може да бъде променен" msgid "Failed to remove the pipeline schedule" msgstr "Планът за Ñхема не може да бъде премахнат" +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + msgid "File name" msgstr "" @@ -968,6 +1236,21 @@ msgstr "" msgid "Geo Nodes" msgstr "" +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" + msgid "Geo|File sync capacity" msgstr "" @@ -1031,9 +1314,6 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" -msgid "GroupsTreeRole|as" -msgstr "" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "" @@ -1064,6 +1344,9 @@ msgstr "" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "" @@ -1123,9 +1406,6 @@ msgstr "ПредÑтавÑме Ви анализа на циклите" msgid "Issue board focus mode" msgstr "" -msgid "Issue boards with milestones" -msgstr "" - msgid "Issue events" msgstr "" @@ -1138,6 +1418,24 @@ msgstr "" msgid "Issues" msgstr "" +msgid "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + msgid "LFSStatus|Disabled" msgstr "Изключено" @@ -1211,9 +1509,18 @@ msgstr "" msgid "Login" msgstr "" +msgid "Mar" +msgstr "" + +msgid "March" +msgstr "" + msgid "Maximum git storage failures" msgstr "" +msgid "May" +msgstr "" + msgid "Median" msgstr "Медиана" @@ -1258,9 +1565,15 @@ msgstr "Ðов план за Ñхема" msgid "New branch" msgstr "Ðов клон" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "Ðова папка" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "Ðов файл" @@ -1297,6 +1610,9 @@ msgstr "ÐÑма хранилище" msgid "No schedules" msgstr "ÐÑма планове" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "" @@ -1363,18 +1679,33 @@ msgstr "Ðаблюдение" msgid "Notifications" msgstr "" +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + msgid "Number of access attempts" msgstr "" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + msgid "OfSearchInADropdown|Filter" msgstr "Филтър" msgid "Only project members can comment." msgstr "" +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "Отворен" @@ -1507,6 +1838,9 @@ msgstr "Ñ ÐµÑ‚Ð°Ð¿" msgid "Pipeline|with stages" msgstr "Ñ ÐµÑ‚Ð°Ð¿Ð¸" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "" @@ -1612,9 +1946,15 @@ msgstr "Графика" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "" @@ -1651,6 +1991,39 @@ msgstr "" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "" @@ -1673,7 +2046,7 @@ msgid "Readme" msgstr "ПрочетиМе" msgid "RefSwitcher|Branches" -msgstr "Клонове" +msgstr "Клони" msgid "RefSwitcher|Tags" msgstr "Етикети" @@ -1747,8 +2120,11 @@ msgstr "" msgid "Scheduling Pipelines" msgstr "Планиране на Ñхемите" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" -msgstr "ТърÑете в клоновете и етикетите" +msgstr "ТърÑете в клоните и етикетите" msgid "Seconds before reseting failure information" msgstr "" @@ -1768,6 +2144,12 @@ msgstr "Изберете чаÑова зона" msgid "Select target branch" msgstr "Изберете целеви клон" +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + msgid "Service Templates" msgstr "" @@ -1800,13 +2182,28 @@ msgid_plural "Showing %d events" msgstr[0] "Показване на %d Ñъбитие" msgstr[1] "Показване на %d ÑъбитиÑ" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "" msgid "Something went wrong on our end." msgstr "" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" msgstr "" msgid "Something went wrong while fetching the projects." @@ -1914,9 +2311,15 @@ msgstr "" msgid "SortOptions|Weight" msgstr "" +msgid "Source" +msgstr "" + msgid "Source code" msgstr "Изходен код" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "" @@ -1935,6 +2338,9 @@ msgstr "Създайте %{new_merge_request} Ñ Ñ‚ÐµÐ·Ð¸ промени" msgid "Start the Runner!" msgstr "" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "" @@ -1955,6 +2361,75 @@ msgstr[1] "Етикети" msgid "Tags" msgstr "Етикети" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "Целеви клон" @@ -1995,7 +2470,7 @@ msgid "The phase of the development lifecycle." msgstr "Етапът от цикъла на разработка" msgid "The pipelines schedule runs pipelines in the future, repeatedly, for specific branches or tags. Those scheduled pipelines will inherit limited project access based on their associated user." -msgstr "Планът за Ñхемата ще изпълнÑва Ñхемите в бъдеще, периодично, за определени клонове или етикети. Тези планирани Ñхеми ще наÑледÑÑ‚ ограничениÑта на доÑтъпа до проекта на ÑÐ²ÑŠÑ€Ð·Ð°Ð½Ð¸Ñ Ñ Ñ‚ÑÑ… потребител." +msgstr "Планът за Ñхемата ще изпълнÑва Ñхемите в бъдеще, периодично, за определени клони или етикети. Тези планирани Ñхеми ще наÑледÑÑ‚ ограничениÑта на доÑтъпа до проекта на ÑÐ²ÑŠÑ€Ð·Ð°Ð½Ð¸Ñ Ñ Ñ‚ÑÑ… потребител." msgid "The planning stage shows the time from the previous step to pushing your first commit. This time will be added automatically once you push your first commit." msgstr "Етапът на планиране показва колко е времето от преходната Ñтъпка до изпращането на първото подаване. Това време ще бъде добавено автоматично Ñлед като изпратите първото Ñи подаване." @@ -2036,6 +2511,9 @@ msgstr "СтойноÑтта, коÑто Ñе намира в Ñредата нРmsgid "There are problems accessing Git storage: " msgstr "" +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" @@ -2057,6 +2535,9 @@ msgstr "Това означава, че нÑма да можете да изпр msgid "This merge request is locked." msgstr "" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "Време преди един проблем да бъде планиран за работа" @@ -2205,15 +2686,27 @@ msgstr[1] "мин" msgid "Time|s" msgstr "Ñек" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "Общо време" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "Общо време за теÑтване на вÑички подаваниÑ/ÑливаниÑ" msgid "Track activity with Contribution Analytics." msgstr "" +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "" @@ -2250,6 +2743,9 @@ msgstr "Качване на файл" msgid "UploadLink|click to upload" msgstr "щракнете за качване" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "" @@ -2283,6 +2779,9 @@ msgstr "ИÑкате ли да видите данните? Помолете аРmsgid "We don't have enough data to show this stage." msgstr "ÐÑма доÑтатъчно данни за този етап." +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" @@ -2412,12 +2911,6 @@ msgstr "Ðа път Ñте да премахнете връзката на раРmsgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "Ðа път Ñте да прехвърлите „%{project_name_with_namespace}“ към друг ÑобÑтвеник. ÐÐИСТИÐРли иÑкате това?" -msgid "You are on a read-only GitLab instance." -msgstr "" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "" - msgid "You can only add files when you are on a branch" msgstr "Можете да добавÑте файлове Ñамо когато Ñе намирате в клон" @@ -2457,6 +2950,9 @@ msgstr "ÐÑма да можете да изтеглÑте или изпраща msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "ÐÑма да можете да изтеглÑте или изпращате код в проекта чрез SSH, докато не %{add_ssh_key_link} в профила Ñи" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "" @@ -2469,6 +2965,12 @@ msgstr "Вашето име" msgid "Your projects" msgstr "" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" msgstr "" @@ -2494,6 +2996,9 @@ msgstr "" msgid "personal access token" msgstr "" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" msgstr "" diff --git a/locale/de/gitlab.po b/locale/de/gitlab.po index a79a7d1a353..db7f41c5476 100644 --- a/locale/de/gitlab.po +++ b/locale/de/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-28 11:32-0500\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:41-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: German\n" "Language: de_DE\n" @@ -56,6 +56,9 @@ msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts msgstr[0] "%{storage_name}: fehlgeschlagener Speicherzugriff auf Host:" msgstr[1] "%{storage_name}: %{failed_attempts} fehlgeschlagene Speicherzugriffe:" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "(beachte die Informationen zur Installation auf %{link})." @@ -115,9 +118,6 @@ msgstr "" msgid "Add License" msgstr "Lizenz hinzufügen" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "Füge einen SSH Schlüssel zu deinem Profil hinzu, um mittels SSH zu übertragen (push) oder abzurufen (pull)." - msgid "Add new directory" msgstr "Erstelle eine neues Verzeichnis" @@ -130,6 +130,15 @@ msgstr "" msgid "All" msgstr "Alle" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "" @@ -139,6 +148,12 @@ msgstr "" msgid "Applications" msgstr "Anwendungen" +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + msgid "Archived project! Repository is read-only" msgstr "Archiviertes Projekt! Repository ist nicht änderbar." @@ -166,6 +181,12 @@ msgstr "" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "Datei mittels Drag & Drop oder %{upload_link} hinzufügen" +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + msgid "Authentication Log" msgstr "" @@ -199,8 +220,11 @@ msgstr "" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "" +msgid "Available" +msgstr "" + msgid "Billing" -msgstr "Abrechnung" +msgstr "" msgid "BillingPlans|%{group_name} is currently on the %{plan_link} plan." msgstr "" @@ -264,6 +288,12 @@ msgstr "Branch <strong>%{branch_name}</strong> wurde erstellt. Um die automatisc msgid "Branch has changed" msgstr "" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "Branches durchsuchen" @@ -411,6 +441,12 @@ msgstr "Diagramme" msgid "Chat" msgstr "Chat" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "Diesen Commit herauspicken " @@ -481,12 +517,45 @@ msgid "Clone repository" msgstr "" msgid "Close" -msgstr "Schließen" +msgstr "" msgid "Cluster" msgstr "" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" msgstr "" msgid "ClusterIntegration|Cluster details" @@ -510,21 +579,54 @@ msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "" @@ -534,27 +636,75 @@ msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "" +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "" @@ -567,7 +717,13 @@ msgstr "" msgid "ClusterIntegration|Remove integration" msgstr "" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" @@ -582,15 +738,33 @@ msgstr "" msgid "ClusterIntegration|See zones" msgstr "" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" + msgid "ClusterIntegration|Toggle Cluster" msgstr "" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" @@ -606,9 +780,15 @@ msgstr "" msgid "ClusterIntegration|cluster" msgstr "" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -623,11 +803,6 @@ msgid_plural "Commits" msgstr[0] "Commit" msgstr[1] "Commits" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "" -msgstr[1] "" - msgid "Commit Message" msgstr "" @@ -709,6 +884,15 @@ msgstr "Mitarbeitsanleitung" msgid "Contributors" msgstr "Mitarbeiter" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "" @@ -716,7 +900,7 @@ msgid "Control the maximum concurrency of repository backfill for this secondary msgstr "" msgid "Copy SSH public key to clipboard" -msgstr "Öffentlichen SSH-Schlüssel in die Zwischenablage kopieren" +msgstr "" msgid "Copy URL to clipboard" msgstr "Kopiere URL in die Zwischenablage" @@ -736,6 +920,9 @@ msgstr "Erstelle Verzeichnis" msgid "Create empty bare repository" msgstr "Erstelle leeres Repository" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "" @@ -763,6 +950,9 @@ msgstr "Tag " msgid "CreateTokenToCloneLink|create a personal access token" msgstr "Erstelle einen persönlichen Zugriffstoken" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "Cron Zeitzone" @@ -808,6 +998,12 @@ msgstr "" msgid "DashboardProjects|Personal" msgstr "" +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + msgid "Define a custom pattern with cron syntax" msgstr "Erstelle ein individuelles Muster mittels Cron Syntax" @@ -882,6 +1078,72 @@ msgstr "Pipeline Zeitplan bearbeiten %{id}" msgid "Emails" msgstr "E-Mails" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "Filtere alle" @@ -921,6 +1183,12 @@ msgstr "Wechsel des Besitzers fehlgeschlagen" msgid "Failed to remove the pipeline schedule" msgstr "Entfernung der Pipelineplanung fehlgeschlagen" +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + msgid "File name" msgstr "" @@ -968,6 +1236,21 @@ msgstr "" msgid "Geo Nodes" msgstr "" +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" + msgid "Geo|File sync capacity" msgstr "" @@ -1031,9 +1314,6 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" -msgid "GroupsTreeRole|as" -msgstr "" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "" @@ -1064,6 +1344,9 @@ msgstr "" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "Systemzustand" @@ -1123,9 +1406,6 @@ msgstr "Arbeitsablaufsanalysen vorgestellt" msgid "Issue board focus mode" msgstr "" -msgid "Issue boards with milestones" -msgstr "" - msgid "Issue events" msgstr "Ticketereignisse" @@ -1138,6 +1418,24 @@ msgstr "" msgid "Issues" msgstr "" +msgid "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + msgid "LFSStatus|Disabled" msgstr "Deaktiviert" @@ -1192,7 +1490,7 @@ msgid "Leave project" msgstr "Verlasse das Projekt" msgid "License" -msgstr "Lizenz" +msgstr "" msgid "Limited to showing %d event at most" msgid_plural "Limited to showing %d events at most" @@ -1206,14 +1504,23 @@ msgid "Locked" msgstr "" msgid "Locked Files" -msgstr "Gesperrte Dateien" +msgstr "" msgid "Login" msgstr "" +msgid "Mar" +msgstr "" + +msgid "March" +msgstr "" + msgid "Maximum git storage failures" msgstr "" +msgid "May" +msgstr "" + msgid "Median" msgstr "Median" @@ -1258,9 +1565,15 @@ msgstr "Neuer Pipeline Zeitplan" msgid "New branch" msgstr "Neuer Branch" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "Neues Verzeichnis" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "Neue Datei" @@ -1297,6 +1610,9 @@ msgstr "Kein Repository" msgid "No schedules" msgstr "Keine Zeitpläne" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "" @@ -1363,18 +1679,33 @@ msgstr "Beobachten" msgid "Notifications" msgstr "Benachrichtigungen" +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + msgid "Number of access attempts" msgstr "" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + msgid "OfSearchInADropdown|Filter" msgstr "Filter" msgid "Only project members can comment." msgstr "" +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "Ungelöst" @@ -1507,6 +1838,9 @@ msgstr "mit Stage" msgid "Pipeline|with stages" msgstr "mit Stages" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "" @@ -1612,9 +1946,15 @@ msgstr "Diagramm" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "" @@ -1651,6 +1991,39 @@ msgstr "" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "" @@ -1747,6 +2120,9 @@ msgstr "" msgid "Scheduling Pipelines" msgstr "Pipelines planen" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "Suche nach Branches und Tags" @@ -1768,6 +2144,12 @@ msgstr "Zeitzone auswählen" msgid "Select target branch" msgstr "Zielbranch auswählen" +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + msgid "Service Templates" msgstr "" @@ -1800,13 +2182,28 @@ msgid_plural "Showing %d events" msgstr[0] "Zeige %d Ereignis" msgstr[1] "Zeige %d Ereignisse" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "" msgid "Something went wrong on our end." msgstr "" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" msgstr "" msgid "Something went wrong while fetching the projects." @@ -1914,9 +2311,15 @@ msgstr "" msgid "SortOptions|Weight" msgstr "" +msgid "Source" +msgstr "" + msgid "Source code" msgstr "Quellcode" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "Spam-Protokolle" @@ -1935,6 +2338,9 @@ msgstr "Beginne einen %{new_merge_request} mit diesen Änderungen" msgid "Start the Runner!" msgstr "Starte den Runner!" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "" @@ -1955,6 +2361,75 @@ msgstr[1] "" msgid "Tags" msgstr "" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "Zielbranch" @@ -2036,6 +2511,9 @@ msgstr "Der mittlere aller erfassten Werte. Zum Beispiel ist für 3, 5, 9 der Me msgid "There are problems accessing Git storage: " msgstr "Es gibt ein Problem beim Zugriff auf den Gitspeicher:" +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" @@ -2057,6 +2535,9 @@ msgstr "Dies bedeutet, dass Du keinen Code übertragen kannst, bevor Du kein lee msgid "This merge request is locked." msgstr "" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "Zeit bis ein Ticket geplant wird" @@ -2205,15 +2686,27 @@ msgstr[1] "Min." msgid "Time|s" msgstr "Sek." +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "Gesamtzeit" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "Gesamte Testzeit für alle Commits/Merges" msgid "Track activity with Contribution Analytics." msgstr "" +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "" @@ -2250,6 +2743,9 @@ msgstr "Eine Datei hochladen" msgid "UploadLink|click to upload" msgstr "Zum Upload klicken" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "Benutze den folgenden Registrierungstoken während des Setups:" @@ -2283,6 +2779,9 @@ msgstr "Du möchtest diese Daten sehen? Bitte frage einen Administrator nach dem msgid "We don't have enough data to show this stage." msgstr "Es liegen nicht genügend Daten vor, um diese Phase anzuzeigen." +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" @@ -2412,12 +2911,6 @@ msgstr "Du bist dabei, die Beziehung des Ablegers zum Ursprungsprojekt %{forked_ msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "Du bist dabei %{project_name_with_namespace} einem andere Besitzer zu übergeben. Bist Du dir WIRKLICH sicher?" -msgid "You are on a read-only GitLab instance." -msgstr "" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "" - msgid "You can only add files when you are on a branch" msgstr "Du kannst Dateien nur hinzufügen, wenn Du dich auf einem Branch befindest." @@ -2457,6 +2950,9 @@ msgstr "Du kannst erst mittels '%{protocol}' übertragen (push) oder abrufen (pu msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "Du kannst erst mittels SSH übertragen (push) oder abrufen (pull), nachdem Du Deinem Konto '%{add_ssh_key_link}'." +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "" @@ -2469,8 +2965,14 @@ msgstr "Dein Name" msgid "Your projects" msgstr "Deine Projekte" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" -msgstr "Commit" +msgstr "" msgid "day" msgid_plural "days" @@ -2494,6 +2996,9 @@ msgstr "" msgid "personal access token" msgstr "" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" msgstr "" diff --git a/locale/eo/gitlab.po b/locale/eo/gitlab.po index f7be343c4e1..be7cfa6e4b5 100644 --- a/locale/eo/gitlab.po +++ b/locale/eo/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-03 12:30-0400\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:42-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Esperanto\n" "Language: eo_UY\n" @@ -56,6 +56,9 @@ msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts msgstr[0] "" msgstr[1] "" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "" @@ -115,9 +118,6 @@ msgstr "" msgid "Add License" msgstr "Aldoni rajtigilon" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "Aldonu SSH-Ålosilon al via profilo por ebligi al vi eltiri kaj alpuÅi per SSH." - msgid "Add new directory" msgstr "Aldoni novan dosierujon" @@ -130,6 +130,15 @@ msgstr "" msgid "All" msgstr "" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "" @@ -139,6 +148,12 @@ msgstr "" msgid "Applications" msgstr "" +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + msgid "Archived project! Repository is read-only" msgstr "Arkivita projekto! La deponejo permesas nur legadon" @@ -166,6 +181,12 @@ msgstr "" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "Alkroĉu dosieron per Åovmetado aÅ %{upload_link}" +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + msgid "Authentication Log" msgstr "" @@ -199,6 +220,9 @@ msgstr "" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "" +msgid "Available" +msgstr "" + msgid "Billing" msgstr "" @@ -264,6 +288,12 @@ msgstr "La branĉo <strong>%{branch_name}</strong> estis kreita. Por agordi aÅt msgid "Branch has changed" msgstr "" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "Serĉu branĉon" @@ -411,6 +441,12 @@ msgstr "Diagramoj" msgid "Chat" msgstr "" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "Precize elekti ĉi tiun kunmetadon" @@ -486,7 +522,40 @@ msgstr "" msgid "Cluster" msgstr "" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" msgstr "" msgid "ClusterIntegration|Cluster details" @@ -510,21 +579,54 @@ msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "" @@ -534,27 +636,75 @@ msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "" +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "" @@ -567,7 +717,13 @@ msgstr "" msgid "ClusterIntegration|Remove integration" msgstr "" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" @@ -582,15 +738,33 @@ msgstr "" msgid "ClusterIntegration|See zones" msgstr "" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" + msgid "ClusterIntegration|Toggle Cluster" msgstr "" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" @@ -606,9 +780,15 @@ msgstr "" msgid "ClusterIntegration|cluster" msgstr "" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -623,11 +803,6 @@ msgid_plural "Commits" msgstr[0] "Enmetado" msgstr[1] "Enmetadoj" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "" -msgstr[1] "" - msgid "Commit Message" msgstr "" @@ -709,6 +884,15 @@ msgstr "Gvidlinioj por kontribuado" msgid "Contributors" msgstr "Kontribuantoj" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "" @@ -736,6 +920,9 @@ msgstr "Krei dosierujon" msgid "Create empty bare repository" msgstr "Krei malplenan deponejon" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "" @@ -763,6 +950,9 @@ msgstr "Etikedo" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "kreos propran atingoĵetonon" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "Horzono por Cron" @@ -808,6 +998,12 @@ msgstr "" msgid "DashboardProjects|Personal" msgstr "" +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + msgid "Define a custom pattern with cron syntax" msgstr "Difini propran Åablonon, uzante la sintakson de Cron" @@ -882,6 +1078,72 @@ msgstr "Redakti ĉenstablan planon %{id}" msgid "Emails" msgstr "" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "" @@ -921,6 +1183,12 @@ msgstr "Ne eblas ÅanÄi la posedanton" msgid "Failed to remove the pipeline schedule" msgstr "Ne eblas forigi la ĉenstablan planon" +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + msgid "File name" msgstr "" @@ -968,6 +1236,21 @@ msgstr "" msgid "Geo Nodes" msgstr "" +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" + msgid "Geo|File sync capacity" msgstr "" @@ -1031,9 +1314,6 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" -msgid "GroupsTreeRole|as" -msgstr "" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "" @@ -1064,6 +1344,9 @@ msgstr "" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "" @@ -1123,9 +1406,6 @@ msgstr "Ni prezentas al vi la ciklan analizon" msgid "Issue board focus mode" msgstr "" -msgid "Issue boards with milestones" -msgstr "" - msgid "Issue events" msgstr "" @@ -1138,6 +1418,24 @@ msgstr "" msgid "Issues" msgstr "" +msgid "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + msgid "LFSStatus|Disabled" msgstr "MalÅaltita" @@ -1211,9 +1509,18 @@ msgstr "" msgid "Login" msgstr "" +msgid "Mar" +msgstr "" + +msgid "March" +msgstr "" + msgid "Maximum git storage failures" msgstr "" +msgid "May" +msgstr "" + msgid "Median" msgstr "Mediano" @@ -1258,9 +1565,15 @@ msgstr "Nova ĉenstabla plano" msgid "New branch" msgstr "Nova branĉo" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "Nova dosierujo" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "Nova dosiero" @@ -1297,6 +1610,9 @@ msgstr "Ne estas deponejo" msgid "No schedules" msgstr "Ne estas planoj" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "" @@ -1363,18 +1679,33 @@ msgstr "Rigardado" msgid "Notifications" msgstr "" +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + msgid "Number of access attempts" msgstr "" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + msgid "OfSearchInADropdown|Filter" msgstr "Filtrilo" msgid "Only project members can comment." msgstr "" +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "Malfermita" @@ -1507,6 +1838,9 @@ msgstr "kun etapo" msgid "Pipeline|with stages" msgstr "kun etapoj" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "" @@ -1612,9 +1946,15 @@ msgstr "Grafeo" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "" @@ -1651,6 +1991,39 @@ msgstr "" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "" @@ -1747,6 +2120,9 @@ msgstr "" msgid "Scheduling Pipelines" msgstr "Planado de la ĉenstabloj" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "Serĉu branĉon aÅ etikedon" @@ -1768,6 +2144,12 @@ msgstr "Elektu horzonon" msgid "Select target branch" msgstr "Elektu celan branĉon" +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + msgid "Service Templates" msgstr "" @@ -1800,13 +2182,28 @@ msgid_plural "Showing %d events" msgstr[0] "Estas montrata %d evento" msgstr[1] "Estas montrataj %d eventoj" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "" msgid "Something went wrong on our end." msgstr "" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" msgstr "" msgid "Something went wrong while fetching the projects." @@ -1914,9 +2311,15 @@ msgstr "" msgid "SortOptions|Weight" msgstr "" +msgid "Source" +msgstr "" + msgid "Source code" msgstr "Kodo" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "" @@ -1935,6 +2338,9 @@ msgstr "Kreu %{new_merge_request} kun ĉi tiuj ÅanÄoj" msgid "Start the Runner!" msgstr "" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "" @@ -1955,6 +2361,75 @@ msgstr[1] "Etikedoj" msgid "Tags" msgstr "Etikedoj" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "Cela branĉo" @@ -2036,6 +2511,9 @@ msgstr "La valoro, kiu troviÄas en la mezo de aro da rigardataj valoroj. Ekzemp msgid "There are problems accessing Git storage: " msgstr "" +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" @@ -2057,6 +2535,9 @@ msgstr "Ĉi tiu signifas, ke vi ne povos alpuÅi kodon, antaÅ ol vi kreos malpl msgid "This merge request is locked." msgstr "" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "Tempo antaÅ problemo estas planita por ellabori" @@ -2205,15 +2686,27 @@ msgstr[1] "min" msgid "Time|s" msgstr "s" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "Totala tempo" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "Totala tempo por la testado de ĉiuj enmetadoj/kunfandoj" msgid "Track activity with Contribution Analytics." msgstr "" +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "" @@ -2250,6 +2743,9 @@ msgstr "AlÅuti dosieron" msgid "UploadLink|click to upload" msgstr "alklaku por alÅuti" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "" @@ -2283,6 +2779,9 @@ msgstr "Ĉu vi volas vidi la datenojn? Bonvolu peti atingeblon de administranto. msgid "We don't have enough data to show this stage." msgstr "Ne estas sufiĉe da datenoj por montri ĉi tiun etapon." +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" @@ -2412,12 +2911,6 @@ msgstr "Vi forigos la rilaton de la disbranĉigo al la originala projekto, „%{ msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "Vi estas transigonta „%{project_name_with_namespace}“ al alia posedanto. Ĉu vi estas ABSOLUTE certa?" -msgid "You are on a read-only GitLab instance." -msgstr "" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "" - msgid "You can only add files when you are on a branch" msgstr "Oni povas aldoni dosierojn nur kiam oni estas en branĉo" @@ -2457,6 +2950,9 @@ msgstr "Vi ne povos eltiri aÅ alpuÅi kodon per %{protocol} antaÅ ol vi %{set_ msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "Vi ne povos eltiri aÅ alpuÅi kodon per SSH antaÅ ol vi %{add_ssh_key_link} al via profilo" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "" @@ -2469,6 +2965,12 @@ msgstr "Via nomo" msgid "Your projects" msgstr "" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" msgstr "" @@ -2494,6 +2996,9 @@ msgstr "" msgid "personal access token" msgstr "" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" msgstr "" diff --git a/locale/es/gitlab.po b/locale/es/gitlab.po index c35a3503019..44ad3d4633a 100644 --- a/locale/es/gitlab.po +++ b/locale/es/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-03 12:31-0400\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:41-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -56,6 +56,9 @@ msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts msgstr[0] "" msgstr[1] "" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "" @@ -115,9 +118,6 @@ msgstr "" msgid "Add License" msgstr "Agregar Licencia" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "Agregar una clave SSH a tu perfil para actualizar o enviar a través de SSH." - msgid "Add new directory" msgstr "Agregar nuevo directorio" @@ -130,6 +130,15 @@ msgstr "" msgid "All" msgstr "" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "" @@ -139,6 +148,12 @@ msgstr "" msgid "Applications" msgstr "" +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + msgid "Archived project! Repository is read-only" msgstr "¡Proyecto archivado! El repositorio es de solo lectura" @@ -166,6 +181,12 @@ msgstr "" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "Adjunte un archivo arrastrando & soltando o %{upload_link}" +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + msgid "Authentication Log" msgstr "" @@ -199,6 +220,9 @@ msgstr "" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "" +msgid "Available" +msgstr "" + msgid "Billing" msgstr "" @@ -264,6 +288,12 @@ msgstr "La rama <strong>%{branch_name}</strong> fue creada. Para configurar el a msgid "Branch has changed" msgstr "" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "Buscar ramas" @@ -411,6 +441,12 @@ msgstr "Gráficos" msgid "Chat" msgstr "" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "Escoger este cambio" @@ -486,7 +522,40 @@ msgstr "" msgid "Cluster" msgstr "" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" msgstr "" msgid "ClusterIntegration|Cluster details" @@ -510,21 +579,54 @@ msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "" @@ -534,27 +636,75 @@ msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "" +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "" @@ -567,7 +717,13 @@ msgstr "" msgid "ClusterIntegration|Remove integration" msgstr "" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" @@ -582,15 +738,33 @@ msgstr "" msgid "ClusterIntegration|See zones" msgstr "" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" + msgid "ClusterIntegration|Toggle Cluster" msgstr "" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" @@ -606,9 +780,15 @@ msgstr "" msgid "ClusterIntegration|cluster" msgstr "" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -623,11 +803,6 @@ msgid_plural "Commits" msgstr[0] "Cambio" msgstr[1] "Cambios" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "" -msgstr[1] "" - msgid "Commit Message" msgstr "" @@ -709,6 +884,15 @@ msgstr "GuÃa de contribución" msgid "Contributors" msgstr "Contribuidores" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "" @@ -736,6 +920,9 @@ msgstr "Crear directorio" msgid "Create empty bare repository" msgstr "Crear repositorio vacÃo" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "" @@ -763,6 +950,9 @@ msgstr "Etiqueta" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "crear un token de acceso personal" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "Zona horaria del Cron" @@ -808,6 +998,12 @@ msgstr "" msgid "DashboardProjects|Personal" msgstr "" +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + msgid "Define a custom pattern with cron syntax" msgstr "Definir un patrón personalizado con la sintaxis de cron" @@ -882,6 +1078,72 @@ msgstr "Editar Programación del Pipeline %{id}" msgid "Emails" msgstr "" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "" @@ -921,6 +1183,12 @@ msgstr "Error al cambiar el propietario" msgid "Failed to remove the pipeline schedule" msgstr "Error al eliminar la programación del pipeline" +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + msgid "File name" msgstr "" @@ -968,6 +1236,21 @@ msgstr "" msgid "Geo Nodes" msgstr "" +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" + msgid "Geo|File sync capacity" msgstr "" @@ -1031,9 +1314,6 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" -msgid "GroupsTreeRole|as" -msgstr "" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "" @@ -1064,6 +1344,9 @@ msgstr "" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "" @@ -1123,9 +1406,6 @@ msgstr "Introducción a Cycle Analytics" msgid "Issue board focus mode" msgstr "" -msgid "Issue boards with milestones" -msgstr "" - msgid "Issue events" msgstr "" @@ -1138,6 +1418,24 @@ msgstr "" msgid "Issues" msgstr "" +msgid "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + msgid "LFSStatus|Disabled" msgstr "Deshabilitado" @@ -1211,9 +1509,18 @@ msgstr "" msgid "Login" msgstr "" +msgid "Mar" +msgstr "" + +msgid "March" +msgstr "" + msgid "Maximum git storage failures" msgstr "" +msgid "May" +msgstr "" + msgid "Median" msgstr "Mediana" @@ -1258,9 +1565,15 @@ msgstr "Nueva Programación del Pipeline" msgid "New branch" msgstr "Nueva rama" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "Nuevo directorio" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "Nuevo archivo" @@ -1297,6 +1610,9 @@ msgstr "No hay repositorio" msgid "No schedules" msgstr "No hay programaciones" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "" @@ -1363,18 +1679,33 @@ msgstr "Vigilancia" msgid "Notifications" msgstr "" +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + msgid "Number of access attempts" msgstr "" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + msgid "OfSearchInADropdown|Filter" msgstr "Filtrar" msgid "Only project members can comment." msgstr "" +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "Abierto" @@ -1507,6 +1838,9 @@ msgstr "con etapa" msgid "Pipeline|with stages" msgstr "con etapas" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "" @@ -1612,9 +1946,15 @@ msgstr "Historial gráfico" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "" @@ -1651,6 +1991,39 @@ msgstr "" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "" @@ -1747,6 +2120,9 @@ msgstr "" msgid "Scheduling Pipelines" msgstr "Programación de Pipelines" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "Buscar ramas y etiquetas" @@ -1768,6 +2144,12 @@ msgstr "Selecciona una zona horaria" msgid "Select target branch" msgstr "Selecciona una rama de destino" +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + msgid "Service Templates" msgstr "" @@ -1800,13 +2182,28 @@ msgid_plural "Showing %d events" msgstr[0] "Mostrando %d evento" msgstr[1] "Mostrando %d eventos" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "" msgid "Something went wrong on our end." msgstr "" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" msgstr "" msgid "Something went wrong while fetching the projects." @@ -1914,9 +2311,15 @@ msgstr "" msgid "SortOptions|Weight" msgstr "" +msgid "Source" +msgstr "" + msgid "Source code" msgstr "Código fuente" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "" @@ -1935,6 +2338,9 @@ msgstr "Iniciar una %{new_merge_request} con estos cambios" msgid "Start the Runner!" msgstr "" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "" @@ -1955,6 +2361,75 @@ msgstr[1] "Etiquetas" msgid "Tags" msgstr "Etiquetas" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "Rama de destino" @@ -2036,6 +2511,9 @@ msgstr "El valor en el punto medio de una serie de valores observados. Por ejemp msgid "There are problems accessing Git storage: " msgstr "" +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" @@ -2057,6 +2535,9 @@ msgstr "Esto significa que no puede enviar código hasta que cree un repositorio msgid "This merge request is locked." msgstr "" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "Tiempo antes de que una incidencia sea programada" @@ -2205,15 +2686,27 @@ msgstr[1] "mins" msgid "Time|s" msgstr "s" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "Tiempo Total" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "Tiempo total de pruebas para todos los cambios o integraciones" msgid "Track activity with Contribution Analytics." msgstr "" +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "" @@ -2250,6 +2743,9 @@ msgstr "Subir archivo" msgid "UploadLink|click to upload" msgstr "Hacer clic para subir" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "" @@ -2283,6 +2779,9 @@ msgstr "¿Quieres ver los datos? Por favor pide acceso al administrador." msgid "We don't have enough data to show this stage." msgstr "No hay suficientes datos para mostrar en esta etapa." +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" @@ -2412,12 +2911,6 @@ msgstr "Vas a eliminar el enlace de la bifurcación con el proyecto original %{f msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "Vas a transferir %{project_name_with_namespace} a otro propietario. ¿Estás TOTALMENTE seguro?" -msgid "You are on a read-only GitLab instance." -msgstr "" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "" - msgid "You can only add files when you are on a branch" msgstr "Solo puedes agregar archivos cuando estás en una rama" @@ -2457,6 +2950,9 @@ msgstr "No podrás actualizar o enviar código al proyecto a través de %{protoc msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "No podrás actualizar o enviar código al proyecto a través de SSH hasta que %{add_ssh_key_link} en su perfil" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "" @@ -2469,6 +2965,12 @@ msgstr "Tu nombre" msgid "Your projects" msgstr "" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" msgstr "" @@ -2494,6 +2996,9 @@ msgstr "" msgid "personal access token" msgstr "" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" msgstr "" diff --git a/locale/fr/gitlab.po b/locale/fr/gitlab.po index a0e523339db..ace6a5d2f66 100644 --- a/locale/fr/gitlab.po +++ b/locale/fr/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-21 16:43-0500\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:40-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: French\n" "Language: fr_FR\n" @@ -56,6 +56,9 @@ msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts msgstr[0] "%{storage_name} : la tentative d’accès au stockage a échouée sur l’hôte :" msgstr[1] "%{storage_name} : %{failed_attempts} tentatives d’accès au stockage ont échouées :" +msgid "%{text} is available" +msgstr "%{text} est disponible" + msgid "(checkout the %{link} for information on how to install it)." msgstr "(Lisez %{link} pour savoir comment l'installer)." @@ -115,9 +118,6 @@ msgstr "Ajouter des Webhooks de groupe et GitLab Enterprise Edition." msgid "Add License" msgstr "Ajouter une licence" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "Ajoutez une clef SSH à votre profil pour pouvoir récupérer et pousser par SSH." - msgid "Add new directory" msgstr "Ajouter un nouveau dossier" @@ -130,6 +130,15 @@ msgstr "Paramètres avancés" msgid "All" msgstr "Tous" +msgid "An error occurred when toggling the notification subscription" +msgstr "Une erreur s’est produite lors de l’activation/désactivation de l’abonnement aux notifications" + +msgid "An error occurred when updating the issue weight" +msgstr "Une erreur s'est produite lors de la mise à jour du poids du ticket" + +msgid "An error occurred while fetching sidebar data" +msgstr "Une erreur s'est produite lors de la récupération des données de la barre latérale" + msgid "An error occurred. Please try again." msgstr "Une erreur est survenue. Merci de réessayer." @@ -139,6 +148,12 @@ msgstr "Apparence" msgid "Applications" msgstr "Applications" +msgid "Apr" +msgstr "Avr." + +msgid "April" +msgstr "Avril" + msgid "Archived project! Repository is read-only" msgstr "Projet archivé ! Le dépôt est en lecture seule" @@ -166,6 +181,12 @@ msgstr "Artéfacts" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "Attachez un fichier par glisser & déposer ou %{upload_link}" +msgid "Aug" +msgstr "Août" + +msgid "August" +msgstr "Août" + msgid "Authentication Log" msgstr "Journal d'authentification" @@ -199,6 +220,9 @@ msgstr "En savoir plus dans %{link_to_documentation}" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "Vous pouvez activer %{link_to_settings} pour ce projet." +msgid "Available" +msgstr "Disponible" + msgid "Billing" msgstr "Facturation" @@ -218,7 +242,7 @@ msgid "BillingPlans|Downgrade" msgstr "Retour à un forfait inférieur" msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}." -msgstr "En savoir plus sur chaque abonnement en lisant nos %{faq_link}." +msgstr "En savoir plus sur chaque forfait en lisant nos %{faq_link}." msgid "BillingPlans|Manage plan" msgstr "Gérer l'abonnement" @@ -227,13 +251,13 @@ msgid "BillingPlans|Please contact %{customer_support_link} in that case." msgstr "Merci de contacter %{customer_support_link} à ce sujet." msgid "BillingPlans|See all %{plan_name} features" -msgstr "Voir toutes les fonctionnalités de l’abonnement %{plan_name}" +msgstr "Voir toutes les fonctionnalités du forfait %{plan_name}" msgid "BillingPlans|This group uses the plan associated with its parent group." -msgstr "Ce groupe utilise l’abonnement associé à son groupe parent." +msgstr "Ce groupe utilise le forfait associé à son groupe parent." msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}." -msgstr "Pour gérer le plan de ce groupe, visitez la section facturation de %{parent_billing_page_link}." +msgstr "Pour gérer l‘abonnement de ce groupe, visitez la section facturation de %{parent_billing_page_link}." msgid "BillingPlans|Upgrade" msgstr "Mise à niveau" @@ -242,13 +266,13 @@ msgid "BillingPlans|You are currently on the %{plan_link} plan." msgstr "Vous êtes actuellement abonné·e au forfait %{plan_link}." msgid "BillingPlans|frequently asked questions" -msgstr "Foire aux questions" +msgstr "foire aux questions" msgid "BillingPlans|monthly" -msgstr "Mensuellement" +msgstr "mensuel" msgid "BillingPlans|paid annually at %{price_per_year}" -msgstr "au prix annuel de %{price_per_year}" +msgstr "payé annuellement pour %{price_per_year}" msgid "BillingPlans|per user" msgstr "par utilisateur" @@ -264,6 +288,12 @@ msgstr "La branche <strong>%{branch_name}</strong> a été créée. Pour mettre msgid "Branch has changed" msgstr "La branche a été modifiée" +msgid "Branch is already taken" +msgstr "Ce nom de branche existe déjà " + +msgid "Branch name" +msgstr "Nom de la branche" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "Rechercher la branche" @@ -411,6 +441,12 @@ msgstr "Statistiques" msgid "Chat" msgstr "Chat" +msgid "Checking %{text} availability…" +msgstr "Vérification de la disponibilité de %{text}…" + +msgid "Checking branch availability..." +msgstr "Vérification de la disponibilité du nom de branche..." + msgid "Cherry-pick this commit" msgstr "Picorer cette validation" @@ -486,8 +522,41 @@ msgstr "Fermer" msgid "Cluster" msgstr "Cluster" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" -msgstr "Un %{link_to_container_project} doit avoir été créé pour ce compte" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "%{appList} a été installé avec succès sur votre cluster" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "%{boldNotice} Cela va ajouter des ressources supplémentaires comme un répartiteur de charge, qui engendrent des coûts supplémentaires. Voir %{pricingLink}" + +msgid "ClusterIntegration|API URL" +msgstr "URL de l'API" + +msgid "ClusterIntegration|Active" +msgstr "Actif" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "Ajouter un cluster existant" + +msgid "ClusterIntegration|Add cluster" +msgstr "Ajoutez le cluster" + +msgid "ClusterIntegration|All" +msgstr "Tous" + +msgid "ClusterIntegration|Applications" +msgstr "Applications" + +msgid "ClusterIntegration|CA Certificate" +msgstr "Certificat d‘autorité de certification" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "Paquet de l‘Autorité de certification (format PEM)" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "Choisissez comment configurer l‘intégration de cluster" + +msgid "ClusterIntegration|Cluster" +msgstr "" msgid "ClusterIntegration|Cluster details" msgstr "Détails du cluster" @@ -505,56 +574,137 @@ msgid "ClusterIntegration|Cluster integration is enabled for this project. Disab msgstr "L'intégration de cluster est activée pour ce projet. La désactivation de cette intégration n’affectera pas votre cluster, il coupera temporairement la connexion de GitLab à celui-ci." msgid "ClusterIntegration|Cluster is being created on Google Kubernetes Engine..." -msgstr "Le cluster est en cours de création sur Google Kubernetes Engine…" +msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "Nom du cluster" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" -msgstr "Le cluster a été correctement créé sur Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" +msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "Copier le nom du cluster" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "Créer le cluster" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" -msgstr "Créer un nouveau cluster sur Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" +msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "Activer l’intégration du cluster" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "ID de projet Google Cloud Platform" msgid "ClusterIntegration|Google Kubernetes Engine" -msgstr "Google Kubernetes Engine" +msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" -msgstr "Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "En savoir plus sur %{link_to_documentation}" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "Type de machine" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "Assurez-vous que votre compte %{link_to_requirements} pour créer des clusters" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" -msgstr "Gérer l’intégration du cluster sur votre projet GitLab" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" +msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "Gérer votre cluster en visitant le lien %{link_gke}" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "Nombre de nÅ“uds" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "Veuillez vous assurer que votre compte Google répond aux exigences suivantes : " +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "Espace de noms du projet (facultatif, unique)" @@ -567,8 +717,14 @@ msgstr "Retirer l’intégration du cluster" msgid "ClusterIntegration|Remove integration" msgstr "Retirer l’intégration" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." -msgstr "Supprimer l'intégration du cluster supprimera sa configuration que vous avez ajoutée pour ce projet. Cela ne supprimera pas votre projet." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" +msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" msgstr "Voir et modifier les détails de votre cluster" @@ -582,33 +738,57 @@ msgstr "Voir vos projets" msgid "ClusterIntegration|See zones" msgstr "Voir les zones" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "Un problème est survenu de notre côté." msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" -msgstr "Un problème est survenu lors de la création de votre cluster sur Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" msgid "ClusterIntegration|Toggle Cluster" msgstr "Activer/désactiver le cluster" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "Avec un cluster associé à ce projet, vous pouvez utiliser des applications de revue, déployer vos applications, exécuter vos pipelines et bien plus encore, de manière très simple." msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" -msgstr "Votre compte doit disposer de %{link_to_kubernetes_engine}" +msgstr "" msgid "ClusterIntegration|Zone" msgstr "Zone" msgid "ClusterIntegration|access to Google Kubernetes Engine" -msgstr "Accéder à Google Kubernetes Engine" +msgstr "" msgid "ClusterIntegration|cluster" msgstr "cluster" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "page d’aide" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "répond aux exigences" @@ -623,11 +803,6 @@ msgid_plural "Commits" msgstr[0] "Validation" msgstr[1] "Validations" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "Valider %d fichier" -msgstr[1] "Valider %d fichiers" - msgid "Commit Message" msgstr "Message de validation" @@ -709,11 +884,20 @@ msgstr "Guide de contribution" msgid "Contributors" msgstr "Contributeurs" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" -msgstr "Contrôler la concurrence maximale des remplacements de fichier-joint LFS pour ce nÅ“ud secondaire" +msgstr "" msgid "Control the maximum concurrency of repository backfill for this secondary node" -msgstr "Contrôler la concurrence maximale des remplacements de dépôt pour ce nÅ“ud secondaire" +msgstr "" msgid "Copy SSH public key to clipboard" msgstr "Copier la clé publique SSH dans le presse-papier" @@ -736,6 +920,9 @@ msgstr "Créer un dossier" msgid "Create empty bare repository" msgstr "Créer un dépôt vide" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "Créer un fichier" @@ -763,6 +950,9 @@ msgstr "Tag" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "Créer un jeton d'accès personnel" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "Fuseau horaire de Cron" @@ -808,6 +998,12 @@ msgstr "Tous" msgid "DashboardProjects|Personal" msgstr "Personnels" +msgid "Dec" +msgstr "Déc." + +msgid "December" +msgstr "Décembre" + msgid "Define a custom pattern with cron syntax" msgstr "Définir un schéma personnalisé avec une syntaxe Cron" @@ -882,6 +1078,72 @@ msgstr "Éditer le pipeline programmé %{id}" msgid "Emails" msgstr "Courriels" +msgid "Environments|An error occurred while fetching the environments." +msgstr "Une erreur s‘est produite lors de la récupération des environnements." + +msgid "Environments|An error occurred while making the request." +msgstr "Une erreur s’est produite lors de la requête." + +msgid "Environments|Commit" +msgstr "Validation" + +msgid "Environments|Deployment" +msgstr "Déploiement" + +msgid "Environments|Environment" +msgstr "Environnement" + +msgid "Environments|Environments" +msgstr "Environnements" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "Les environnements sont des lieux où le code est déployé, comme staging ou production." + +msgid "Environments|Job" +msgstr "Tâche" + +msgid "Environments|New environment" +msgstr "Nouvel environnement" + +msgid "Environments|No deployments yet" +msgstr "Aucun déploiement pour le moment" + +msgid "Environments|Open" +msgstr "Ouvert" + +msgid "Environments|Re-deploy" +msgstr "Re-déployer" + +msgid "Environments|Read more about environments" +msgstr "En savoir plus sur les environnements" + +msgid "Environments|Rollback" +msgstr "Revenir en arrière" + +msgid "Environments|Show all" +msgstr "Afficher tous" + +msgid "Environments|Updated" +msgstr "Mise à jour" + +msgid "Environments|You don't have any environments right now." +msgstr "Vous n’avez aucun environnement pour le moment." + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "Une erreur s’est produite lors de l’activation/désactivation de l’abonnement aux notifications" + msgid "EventFilterBy|Filter by all" msgstr "Aucun filtre" @@ -921,6 +1183,12 @@ msgstr "Échec du changement de propriétaire" msgid "Failed to remove the pipeline schedule" msgstr "Échec de la suppression du pipeline programmé" +msgid "Feb" +msgstr "Févr." + +msgid "February" +msgstr "Février" + msgid "File name" msgstr "Nom du fichier" @@ -968,6 +1236,21 @@ msgstr "Clés GPG" msgid "Geo Nodes" msgstr "NÅ“uds Geo" +msgid "GeoNodeSyncStatus|Failed" +msgstr "Échec" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "Le nÅ“ud est défaillant ou cassé." + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "Le nÅ“ud est lent, surchargé, ou il vient juste de récupérer après un problème." + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "Désynchronisé" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "Synchronisé" + msgid "Geo|File sync capacity" msgstr "Capacité de synchronisation de fichier" @@ -1031,9 +1314,6 @@ msgstr "Aucun groupe trouvé" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "Vous pouvez gérer les autorisations des membres de votre groupe et accéder à chacun de ses projets." -msgid "GroupsTreeRole|as" -msgstr "comme" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "Êtes-vous sûr·e de vouloir quitter le groupe « ${this.group.fullName} » ?" @@ -1064,6 +1344,9 @@ msgstr "Désolé, aucun groupe ne correspond à vos critères de recherche" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "Désolé, aucun groupe ni projet ne correspond à vos critères de recherche" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "État des services" @@ -1092,7 +1375,7 @@ msgid "Import repository" msgstr "Importer un dépôt" msgid "Improve Issue boards with GitLab Enterprise Edition." -msgstr "Améliorer le tableau de tickets avec GitLab Entreprise Edition." +msgstr "Améliorer les tableaux de tickets avec Gitlab Entreprise Edition." msgid "Improve issues management with Issue weight and GitLab Enterprise Edition." msgstr "Améliorer la gestion des tickets avec les poids de ticket et GitLab Entreprise Edition." @@ -1123,9 +1406,6 @@ msgstr "Introduction à l'analyseur de cycle" msgid "Issue board focus mode" msgstr "Mode focus du tableau de tickets" -msgid "Issue boards with milestones" -msgstr "Tableaux des tickets avec leurs jalons" - msgid "Issue events" msgstr "Événements du ticket" @@ -1138,6 +1418,24 @@ msgstr "Tableaux" msgid "Issues" msgstr "Tickets" +msgid "Jan" +msgstr "Janv." + +msgid "January" +msgstr "Janvier" + +msgid "Jul" +msgstr "Juill." + +msgid "July" +msgstr "Juillet" + +msgid "Jun" +msgstr "Juin" + +msgid "June" +msgstr "Juin" + msgid "LFSStatus|Disabled" msgstr "Désactivé" @@ -1211,9 +1509,18 @@ msgstr "Fichiers verrouillés" msgid "Login" msgstr "Se connecter" +msgid "Mar" +msgstr "Mars" + +msgid "March" +msgstr "Mars" + msgid "Maximum git storage failures" msgstr "Nombre maximum d’échecs du stockage git" +msgid "May" +msgstr "Mai" + msgid "Median" msgstr "Médian" @@ -1258,9 +1565,15 @@ msgstr "Nouveau pipeline programmé" msgid "New branch" msgstr "Nouvelle branche" +msgid "New branch unavailable" +msgstr "Nouvelle branche indisponible" + msgid "New directory" msgstr "Nouveau dossier" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "Nouveau fichier" @@ -1297,6 +1610,9 @@ msgstr "Pas de dépôt" msgid "No schedules" msgstr "Aucun programme" +msgid "No time spent" +msgstr "Pas de temps passé" + msgid "None" msgstr "Aucun·e" @@ -1363,18 +1679,33 @@ msgstr "Surveillé" msgid "Notifications" msgstr "Notifications" +msgid "Nov" +msgstr "Nov." + +msgid "November" +msgstr "Novembre" + msgid "Number of access attempts" msgstr "Nombre de tentatives d'accès" msgid "Number of failures before backing off" msgstr "Nombre d'échecs avant annulation" +msgid "Oct" +msgstr "Oct." + +msgid "October" +msgstr "Octobre" + msgid "OfSearchInADropdown|Filter" msgstr "Filtre" msgid "Only project members can comment." msgstr "Seuls les membres du projet peuvent commenter." +msgid "Opened" +msgstr "Ouvert" + msgid "OpenedNDaysAgo|Opened" msgstr "Ouvert" @@ -1507,6 +1838,9 @@ msgstr "avec l'étape" msgid "Pipeline|with stages" msgstr "avec les étapes" +msgid "Please solve the reCAPTCHA" +msgstr "Veuillez résoudre le reCAPTCHA" + msgid "Preferences" msgstr "Préférences" @@ -1612,9 +1946,15 @@ msgstr "Graphes" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "Contactez un administrateur pour modifier ce paramètre." +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "Exécuter immédiatement un pipeline sur la branche par défaut" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "Seules les validations signées peuvent être poussées sur ce dépôt." +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "Problème lors de la configuration des paramètres CI/CD JavaScript" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "Ce paramètre est appliqué au niveau du serveur et peut être modifié par un administrateur." @@ -1622,7 +1962,7 @@ msgid "ProjectSettings|This setting is applied on the server level but has been msgstr "Ce paramètre est appliqué au niveau du serveur mais il a été modifié pour ce projet." msgid "ProjectSettings|This setting will be applied to all projects unless overridden by an admin." -msgstr "Ce paramètre s’appliquera à tous les projets à moins qu’un administrateur ne le modifie." +msgstr "Ce paramètre s’appliquera à tous les projets à moins qu’un•e administrat•eur•rice ne le modifie." msgid "ProjectSettings|Users can only push commits to this repository that were committed with one of their own verified emails." msgstr "Les utilisateurs peuvent uniquement pousser sur ce dépôt des validations qui ont été validées avec une de leurs adresses courriels vérifiées." @@ -1651,6 +1991,39 @@ msgstr "Désolé, aucun projet ne correspond à votre recherche" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "Cette fonctionnalité requiert le support du localStorage par votre navigateur" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "Public - Le groupe ainsi que n’importe quel projet public est accessible sans authentification." @@ -1747,6 +2120,9 @@ msgstr "Programmes" msgid "Scheduling Pipelines" msgstr "Programmer des pipelines" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "Rechercher dans les branches et les étiquettes" @@ -1768,6 +2144,12 @@ msgstr "Sélectionnez un fuseau horaire" msgid "Select target branch" msgstr "Sélectionnez une branche cible" +msgid "Sep" +msgstr "Sept." + +msgid "September" +msgstr "Septembre" + msgid "Service Templates" msgstr "Modèles de service" @@ -1800,14 +2182,29 @@ msgid_plural "Showing %d events" msgstr[0] "Affichage de %d évènement" msgstr[1] "Affichage de %d évènements" +msgid "Sidebar|Change weight" +msgstr "Changer le poids" + +msgid "Sidebar|Edit" +msgstr "Modifier" + +msgid "Sidebar|No" +msgstr "Non" + +msgid "Sidebar|None" +msgstr "Aucun" + +msgid "Sidebar|Weight" +msgstr "Poids" + msgid "Snippets" msgstr "Extraits de code" msgid "Something went wrong on our end." msgstr "Une erreur est survenue de notre côté." -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" -msgstr "Quelque chose ne s'est pas bien passé en essayant de changer l’état de verrouillage de cet ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" +msgstr "Quelque chose ne s‘est pas bien passé en essayant de changer l’état de verrouillage de cette ${this.issuableDisplayName}" msgid "Something went wrong while fetching the projects." msgstr "Une erreur s'est produite lors de la récupération des projets." @@ -1914,9 +2311,15 @@ msgstr "Commence bientôt" msgid "SortOptions|Weight" msgstr "Poids" +msgid "Source" +msgstr "Source" + msgid "Source code" msgstr "Code source" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "Journaux des messages indésirables" @@ -1935,6 +2338,9 @@ msgstr "Créer une %{new_merge_request} avec ces changements" msgid "Start the Runner!" msgstr "Démarrer l'Exécuteur !" +msgid "Stopped" +msgstr "Arrêté" + msgid "Subgroups" msgstr "Sous-groupes" @@ -1955,6 +2361,75 @@ msgstr[1] "Tags" msgid "Tags" msgstr "Tags" +msgid "TagsPage|Browse commits" +msgstr "Parcourir les validations" + +msgid "TagsPage|Browse files" +msgstr "Parcourir les fichiers" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "Impossible de trouver la validation HEAD pour ce tag" + +msgid "TagsPage|Cancel" +msgstr "Annuler" + +msgid "TagsPage|Create tag" +msgstr "Créer le tag" + +msgid "TagsPage|Delete tag" +msgstr "Supprimer le tag" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "La suppression du tag %{tag_name} ne peut être annulée. Êtes-vous sûr•e ?" + +msgid "TagsPage|Edit release notes" +msgstr "Modifier les notes de version" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "Nom de branche, tag, ou SHA de validation existant" + +msgid "TagsPage|Filter by tag name" +msgstr "Filtrer par nom de tag" + +msgid "TagsPage|New Tag" +msgstr "Nouveau tag" + +msgid "TagsPage|New tag" +msgstr "Nouveau tag" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "Éventuellement, ajoutez un message au tag." + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "Éventuellement, ajouter des notes de version pour le tag. Elles seront stockées dans la base de données de GitLab et affichées sur la page des tags." + +msgid "TagsPage|Release notes" +msgstr "Notes de version" + +msgid "TagsPage|Repository has no tags yet." +msgstr "Le dépôt n‘a pas de tags pour le moment." + +msgid "TagsPage|Sort by" +msgstr "Trier par" + +msgid "TagsPage|Tags" +msgstr "Tags" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "Les tags permettent de marquer des validations spécifiques commes importantes dans l‘historique du project" + +msgid "TagsPage|This tag has no release notes." +msgstr "Ce tag n‘a pas de notes de version." + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "Utilisez la commande git tag pour en ajouter un nouveau :" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "Écrivez les notes de version ou faîtes glisser des fichiers ici…" + +msgid "TagsPage|protected" +msgstr "protégé" + msgid "Target Branch" msgstr "Branche cible" @@ -1962,10 +2437,10 @@ msgid "Team" msgstr "Équipe" msgid "Thanks! Don't show me this again" -msgstr "Merci de ne plus afficher ce message" +msgstr "Merci ! Ne plus afficher ce message" msgid "The Advanced Global Search in GitLab is a powerful search service that saves you time. Instead of creating duplicate code and wasting time, you can now search for code within other teams that can help your own project." -msgstr "La Recherche Globale Avancée de GitLab est un outils qui vous fait gagner du temps. Au lieu de créer du code similaire et perdre du temps, vous pouvez maintenant chercher dans le code d'autres équipes pour vous aider sur votre projet." +msgstr "La Recherche Globale Avancée de Gitlab est un outils puissant qui vous fait gagner du temps. Au lieu de créer du code similaire et perdre du temps, vous pouvez maintenant chercher dans le code d'autres équipes pour vous aider sur votre projet." msgid "The circuitbreaker backoff threshold should be lower than the failure count threshold" msgstr "Le seuil d’interruption du disjoncteur devrait être inférieur au seuil de nombre de défaillance" @@ -2036,6 +2511,9 @@ msgstr "La valeur située au point médian d’une série de valeur observée. C msgid "There are problems accessing Git storage: " msgstr "Il y a des difficultés à accéder aux données Git : " +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "Cette branche a changé depuis le début de l’édition. Souhaitez-vous créer une nouvelle branche ?" @@ -2057,6 +2535,9 @@ msgstr "Cela signifie que vous ne pouvez pas pousser du code tant que vous n’a msgid "This merge request is locked." msgstr "Cette demande de fusion est verrouillée." +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "Temps avant qu’un ticket ne soit planifié" @@ -2205,15 +2686,27 @@ msgstr[1] "mins" msgid "Time|s" msgstr "s" +msgid "Title" +msgstr "Titre" + msgid "Total Time" msgstr "Temps total" +msgid "Total issue time spent" +msgstr "Temps total passé sur les tickets" + msgid "Total test time for all commits/merges" msgstr "Temps total de test pour toutes les validations/fusions" msgid "Track activity with Contribution Analytics." msgstr "Suivre l’activité avec Contribution Analytics." +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "Déverrouiller" @@ -2239,7 +2732,7 @@ msgid "Upgrade your plan to activate Issue weight." msgstr "Mettez à niveau votre abonnement pour activer les poids de ticket." msgid "Upgrade your plan to improve Issue boards." -msgstr "Mettez à niveau votre abonnement pour améliorer les tableaux de tickets." +msgstr "Mettez à niveau votre forfait pour améliorer les tableaux de tickets." msgid "Upload New File" msgstr "Téléverser un nouveau fichier" @@ -2250,6 +2743,9 @@ msgstr "Téléverser un fichier" msgid "UploadLink|click to upload" msgstr "Cliquez pour envoyer" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "Utiliser le jeton d’inscription suivant pendant l’installation :" @@ -2283,6 +2779,9 @@ msgstr "Vous voulez voir les données ? Merci de contacter un administrateur pou msgid "We don't have enough data to show this stage." msgstr "Nous n'avons pas suffisamment de données pour afficher cette étape." +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "Les webhooks vous permettent d’appeler une URL si, par exemple, du nouveau code est poussé ou un nouveau ticket est créé. Vous pouvez configurer les webhooks pour écouter les événements spécifiques comme des poussées de code, des tickets ou des demandes de fusion. Les webhooks de groupes s’appliqueront à tous les projets dans un groupe, ce qui vous permet de normaliser la fonctionnalité du webhook dans votre groupe entier." @@ -2412,12 +2911,6 @@ msgstr "Vous allez supprimer la relation de fourche avec le projet source %{fork msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "Vous allez transférer %{project_name_with_namespace} à un nouveau propriétaire. Êtes vous ABSOLUMENT sûr·e ?" -msgid "You are on a read-only GitLab instance." -msgstr "Vous êtes sur une instance GitLab en lecture seule." - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "Vous êtes sur une instance GitLab en lecture seule. Si vous souhaitez apporter des modifications, vous devez aller sur %{link_to_primary_node}." - msgid "You can only add files when you are on a branch" msgstr "Vous ne pouvez ajouter de fichier que dans une branche" @@ -2457,6 +2950,9 @@ msgstr "Vous ne pourrez pas récupérer ou pousser de code par %{protocol} tant msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "Vous ne pourrez pas récupérer ou pousser de code par SSH tant que vous n’aurez pas %{add_ssh_key_link} dans votre profil" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "Vous ne pourrez pas récupérer ou pousser de code par SSH tant que vous n’aurez pas ajouté de clé SSH à votre profil" + msgid "Your comment will not be visible to the public." msgstr "Votre commentaire ne sera pas visible publiquement." @@ -2469,6 +2965,12 @@ msgstr "Votre nom" msgid "Your projects" msgstr "Vos projets" +msgid "branch name" +msgstr "nom de la branche" + +msgid "by" +msgstr "par" + msgid "commit" msgstr "validation" @@ -2494,6 +2996,9 @@ msgstr "mot de passe" msgid "personal access token" msgstr "jeton d’accès personnel" +msgid "source" +msgstr "source" + msgid "to help your contributors communicate effectively!" msgstr "pour aider vos contributeurs à communiquer efficacement !" diff --git a/locale/it/gitlab.po b/locale/it/gitlab.po index 8a987129452..52bbc28ac10 100644 --- a/locale/it/gitlab.po +++ b/locale/it/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-20 03:59-0500\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:42-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -18,13 +18,13 @@ msgstr "" msgid "%d commit" msgid_plural "%d commits" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d commit" +msgstr[1] "%d commits" msgid "%d layer" msgid_plural "%d layers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d livello" +msgstr[1] "%d livelli" msgid "%s additional commit has been omitted to prevent performance issues." msgid_plural "%s additional commits have been omitted to prevent performance issues." @@ -36,45 +36,48 @@ msgstr "%{commit_author_link} ha committato %{commit_timeago}" msgid "%{count} participant" msgid_plural "%{count} participants" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%{count} partecipante" +msgstr[1] "%{count} partecipanti" msgid "%{number_commits_behind} commits behind %{default_branch}, %{number_commits_ahead} commits ahead" -msgstr "" +msgstr "%{number_commits_behind} commits precedenti %{default_branch}, %{number_commits_ahead} commits avanti" msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will allow access on the next attempt." -msgstr "" +msgstr "%{number_of_failures} di %{maximum_failures} fallimenti. GitLab consentirà l'accesso al prossimo tentativo." msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will block access for %{number_of_seconds} seconds." -msgstr "" +msgstr "%{number_of_failures} di %{maximum_failures} fallimenti. Gitlab bloccherà l'accesso per %{number_of_seconds} secondi." msgid "%{number_of_failures} of %{maximum_failures} failures. GitLab will not retry automatically. Reset storage information when the problem is resolved." -msgstr "" +msgstr "%{number_of_failures} di %{maximum_failures} fallimenti. Gitlab non ritenterà automaticamente. Ripristina l'informazioni d'archiviazione quando il problema è risolto." msgid "%{storage_name}: failed storage access attempt on host:" msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%{storage_name}: tentativo d'accesso all'archiviazione fallito da parte dell'host:" +msgstr[1] "%{storage_name}: %{failed_attempts} tentativi d'accesso all'archiviazione falliti:" + +msgid "%{text} is available" +msgstr "%{text} è disponibile" msgid "(checkout the %{link} for information on how to install it)." -msgstr "" +msgstr "(vedi il %{link} su come installarlo)." msgid "+ %{moreCount} more" -msgstr "" +msgstr "+ %{moreCount} più" msgid "- show less" -msgstr "" +msgstr "- riduci" msgid "1 pipeline" msgid_plural "%d pipelines" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 pipeline" +msgstr[1] "%d pipeline" msgid "1st contribution!" -msgstr "" +msgstr "Primo contributo!" msgid "2FA enabled" -msgstr "" +msgstr "2FA abilitata" msgid "A collection of graphs regarding Continuous Integration" msgstr "Un insieme di grafici riguardo la Continuous Integration" @@ -83,16 +86,16 @@ msgid "About auto deploy" msgstr "Riguardo il rilascio automatico" msgid "Abuse Reports" -msgstr "" +msgstr "Segnalazioni di abuso" msgid "Access Tokens" -msgstr "" +msgstr "Token di accesso" msgid "Access to failing storages has been temporarily disabled to allow the mount to recover. Reset storage information after the issue has been resolved to allow access again." -msgstr "" +msgstr "L'accesso agli storages è stato temporaneamente disabilitato per consentire il mount di ripristino. Resetta le info d'archiviazione dopo che l'issue è stato risolto per consentire nuovamente l'accesso." msgid "Account" -msgstr "" +msgstr "Account" msgid "Active" msgstr "Attivo" @@ -115,29 +118,41 @@ msgstr "" msgid "Add License" msgstr "Aggiungi Licenza" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "Aggiungi una chiave SSH al tuo profilo per eseguire pull o push tramite SSH" - msgid "Add new directory" msgstr "Aggiungi una directory (cartella)" msgid "AdminHealthPageLink|health page" -msgstr "" +msgstr "Pagina di stato" msgid "Advanced settings" -msgstr "" +msgstr "Impostazioni Avanzate" msgid "All" +msgstr "Tutto" + +msgid "An error occurred when toggling the notification subscription" +msgstr "Errore durante l'attivazione/disattivazione della sottoscrizione per l'iscrizione" + +msgid "An error occurred when updating the issue weight" msgstr "" +msgid "An error occurred while fetching sidebar data" +msgstr "Errore durante il recupero dei dati della barra laterale" + msgid "An error occurred. Please try again." -msgstr "" +msgstr "Si è verificato un errore. Riprova." msgid "Appearance" -msgstr "" +msgstr "Aspetto" msgid "Applications" -msgstr "" +msgstr "Applicazioni" + +msgid "Apr" +msgstr "Apr" + +msgid "April" +msgstr "Aprile" msgid "Archived project! Repository is read-only" msgstr "Progetto archiviato! La Repository è sola-lettura" @@ -146,58 +161,67 @@ msgid "Are you sure you want to delete this pipeline schedule?" msgstr "Sei sicuro di voler cancellare questa pipeline programmata?" msgid "Are you sure you want to discard your changes?" -msgstr "" +msgstr "Vuoi davvero ignorare le modifiche?" msgid "Are you sure you want to leave this group?" -msgstr "" +msgstr "Vuoi davvero lasciare questo gruppo?" msgid "Are you sure you want to reset registration token?" -msgstr "" +msgstr "Sei sicuro di voler ripristinare il token di registrazione?" msgid "Are you sure you want to reset the health check token?" -msgstr "" +msgstr "Confermi di voler resettare il token di controllo di stato?" msgid "Are you sure?" -msgstr "" +msgstr "Sei sicuro?" msgid "Artifacts" -msgstr "" +msgstr "Artefatti" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "Aggiungi un file tramite trascina & rilascia ( drag & drop) o %{upload_link}" +msgid "Aug" +msgstr "Ago" + +msgid "August" +msgstr "Agosto" + msgid "Authentication Log" -msgstr "" +msgstr "Log di autenticazione" msgid "Author" -msgstr "" +msgstr "Autore" msgid "Auto Review Apps and Auto Deploy need a domain name and the %{kubernetes} to work correctly." -msgstr "" +msgstr "Le app d'auto-review e l'Auto Deploy (rilascio automatico) necessita di un nome dominio e il servizio %{kubernetes} per funzionare correttamente." msgid "Auto Review Apps and Auto Deploy need a domain name to work correctly." -msgstr "" +msgstr "Le app d'auto-review e l'Auto Deploy (rilascio automatico) necessita di un nome dominio per funzionare correttamente." msgid "Auto Review Apps and Auto Deploy need the %{kubernetes} to work correctly." -msgstr "" +msgstr "Le app d'auto-review e l'Auto Deploy (rilascio automatico) necessita del servizio %{kubernetes} per funzionare correttamente." msgid "AutoDevOps|Auto DevOps (Beta)" -msgstr "" +msgstr "Auto DevOps (Béta)" msgid "AutoDevOps|Auto DevOps documentation" -msgstr "" +msgstr "Documentazione Auto DevOps" msgid "AutoDevOps|Enable in settings" -msgstr "" +msgstr "Attiva in impostazioni" msgid "AutoDevOps|It will automatically build, test, and deploy your application based on a predefined CI/CD configuration." -msgstr "" +msgstr "Farà automaticamente le build, i test e i rilasci della tua applicazione basato sulla tua configurazione CI/CD." msgid "AutoDevOps|Learn more in the %{link_to_documentation}" -msgstr "" +msgstr "Approfondisci: %{link_to_documentation}" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." -msgstr "" +msgstr "Puoi attivare %{link_to_settings} per questo progetto." + +msgid "Available" +msgstr "Disponibile" msgid "Billing" msgstr "" @@ -262,7 +286,13 @@ msgid "Branch <strong>%{branch_name}</strong> was created. To set up auto deploy msgstr "La branch <strong>%{branch_name}</strong> è stata creata. Per impostare un rilascio automatico scegli un template CI di Gitlab e committa le tue modifiche %{link_to_autodeploy_doc}" msgid "Branch has changed" -msgstr "" +msgstr "La branche è cambiata" + +msgid "Branch is already taken" +msgstr "La Branch esiste già " + +msgid "Branch name" +msgstr "Nome Branch" msgid "BranchSwitcherPlaceholder|Search branches" msgstr "Cerca branches" @@ -271,91 +301,91 @@ msgid "BranchSwitcherTitle|Switch branch" msgstr "Cambia branch" msgid "Branches" -msgstr "" +msgstr "Branch" msgid "Branches|Cant find HEAD commit for this branch" -msgstr "" +msgstr "Impossibile trovare l'HEAD commit per questa branch" msgid "Branches|Compare" -msgstr "" +msgstr "Confronta" msgid "Branches|Delete all branches that are merged into '%{default_branch}'" -msgstr "" +msgstr "Elimina tutte le branches che sono state mergiate in '%{default_branch}'" msgid "Branches|Delete branch" -msgstr "" +msgstr "Elimina Branch" msgid "Branches|Delete merged branches" -msgstr "" +msgstr "Elimina branch mergiate" msgid "Branches|Delete protected branch" -msgstr "" +msgstr "Elimina la branch protetta" msgid "Branches|Delete protected branch '%{branch_name}'?" -msgstr "" +msgstr "Eliminare la branch protetta %{branch_name}?" msgid "Branches|Deleting the '%{branch_name}' branch cannot be undone. Are you sure?" -msgstr "" +msgstr "Eliminando la branch %{branch_name} è un'operazione irreversibile. Sicuro di voler procedere?" msgid "Branches|Deleting the merged branches cannot be undone. Are you sure?" -msgstr "" +msgstr "Eliminare le branch mergiate è un'operazione irreversibile. Sicuro di voler procedere?" msgid "Branches|Filter by branch name" -msgstr "" +msgstr "Filtra per nome branch" msgid "Branches|Merged into %{default_branch}" -msgstr "" +msgstr "Mergiata in %{default_branch}" msgid "Branches|New branch" -msgstr "" +msgstr "Nuova branch" msgid "Branches|No branches to show" -msgstr "" +msgstr "Nessuna branch da mostrare" msgid "Branches|Once you confirm and press %{delete_protected_branch}, it cannot be undone or recovered." -msgstr "" +msgstr "Una volta confermato e premuto %{delete_protected_branch} non sarà possibile ripristinare allo stato precedente." msgid "Branches|Only a project master or owner can delete a protected branch" -msgstr "" +msgstr "Solo gli Owner e i Master possono eliminare una branch protetta" msgid "Branches|Protected branches can be managed in %{project_settings_link}" -msgstr "" +msgstr "Le branch protette possono esser gestite in %{project_settings_link}" msgid "Branches|Sort by" -msgstr "" +msgstr "Ordina per" msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." msgstr "" msgid "Branches|The default branch cannot be deleted" -msgstr "" +msgstr "La branch predefinita non può esser eliminata" msgid "Branches|This branch hasn’t been merged into %{default_branch}." -msgstr "" +msgstr "Questa branch non è stata mergiata in %{default_branch}." msgid "Branches|To avoid data loss, consider merging this branch before deleting it." -msgstr "" +msgstr "Per evitare perdita di dati considera di mergiare questa branch prima di eliminarla." msgid "Branches|To confirm, type %{branch_name_confirmation}:" -msgstr "" +msgstr "Per confermare, scrivi %{branch_name_confirmation}:" msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." msgstr "" msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." -msgstr "" +msgstr "Stai per eliminare la branch protetta (%{branch_name}) in maniera permanente." msgid "Branches|diverged from upstream" msgstr "" msgid "Branches|merged" -msgstr "" +msgstr "mergiata" msgid "Branches|project settings" -msgstr "" +msgstr "Impostazioni" msgid "Branches|protected" -msgstr "" +msgstr "Protetta" msgid "Browse Directory" msgstr "Naviga direttori" @@ -373,19 +403,19 @@ msgid "ByAuthor|by" msgstr "per" msgid "CI / CD" -msgstr "" +msgstr "CI / CD" msgid "CI configuration" msgstr "Configurazione CI (Integrazione Continua)" msgid "CICD|Jobs" -msgstr "" +msgstr "Jobs" msgid "Cancel" msgstr "Cancella" msgid "Cancel edit" -msgstr "" +msgstr "Annulla modifica" msgid "Change Weight" msgstr "" @@ -403,16 +433,22 @@ msgid "ChangeTypeAction|Revert" msgstr "Ripristina" msgid "Changelog" -msgstr "" +msgstr "Changelog" msgid "Charts" msgstr "Grafici" msgid "Chat" -msgstr "" +msgstr "Chat" + +msgid "Checking %{text} availability…" +msgstr "Controllo disponibilità per %{text}…" + +msgid "Checking branch availability..." +msgstr "Controllo disponibilità branch..." msgid "Cherry-pick this commit" -msgstr "" +msgstr "Cherry-pick di questo commit" msgid "Cherry-pick this merge request" msgstr "Cherry-pick questa richiesta di merge" @@ -475,58 +511,124 @@ msgid "CiStatus|running" msgstr "in corso" msgid "CircuitBreakerApiLink|circuitbreaker api" -msgstr "" +msgstr "api circuitbreaker" msgid "Clone repository" -msgstr "" +msgstr "Clona repository" msgid "Close" msgstr "" msgid "Cluster" -msgstr "" +msgstr "Cluster" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" -msgstr "" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "%{appList} è stata installata con successo nel tuo cluster" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "%{boldNotice} Ciò richiederà delle risorse extra come un load balancer, dove si applicheranno costi aggiuntivi. Consulta %{pricingLink}" + +msgid "ClusterIntegration|API URL" +msgstr "API URL" + +msgid "ClusterIntegration|Active" +msgstr "Attivo" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "Aggiungi un cluster esistente" + +msgid "ClusterIntegration|Add cluster" +msgstr "Aggiungi cluster" + +msgid "ClusterIntegration|All" +msgstr "Tutti" + +msgid "ClusterIntegration|Applications" +msgstr "Applicazioni" + +msgid "ClusterIntegration|CA Certificate" +msgstr "Certificato CA" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "Certificate Authority bundle (formato PEM)" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "Scegli come impostare l'integrazione cluster" + +msgid "ClusterIntegration|Cluster" +msgstr "Cluster" msgid "ClusterIntegration|Cluster details" -msgstr "" +msgstr "Dettagli Cluster" msgid "ClusterIntegration|Cluster integration" -msgstr "" +msgstr "Integrazione Cluster" msgid "ClusterIntegration|Cluster integration is disabled for this project." -msgstr "" +msgstr "L'integrazione dei cluster è disabilitata per questo progetto." msgid "ClusterIntegration|Cluster integration is enabled for this project." -msgstr "" +msgstr "L'integrazione dei cluster è abilitata per questo progetto." msgid "ClusterIntegration|Cluster integration is enabled for this project. Disabling this integration will not affect your cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "" +msgstr "L'integrazione dei cluster è abilitata per questo progetto. Se la disabiliti il tuo cluster non sarà modificato, sarà solo spenta la connessione a Gitlab." msgid "ClusterIntegration|Cluster is being created on Google Kubernetes Engine..." msgstr "" msgid "ClusterIntegration|Cluster name" -msgstr "" +msgstr "Nome Cluster" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" msgstr "" +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "I cluster di consentono di revisionare le app, effettuare rilasci, eseguire pipelines, e molto altro in modo semplice. %{link_to_help_page}" + +msgid "ClusterIntegration|Copy API URL" +msgstr "Copia URL API" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "Copia Certificato CA" + +msgid "ClusterIntegration|Copy Token" +msgstr "Copia Token" + msgid "ClusterIntegration|Copy cluster name" -msgstr "" +msgstr "Copia nome del cluster" + +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "Crea un nuovo cluster su Google Engine direttamente da Gitlab" msgid "ClusterIntegration|Create cluster" -msgstr "" +msgstr "Crea cluster" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Create on GKE" +msgstr "Crea su GKE" + msgid "ClusterIntegration|Enable cluster integration" -msgstr "" +msgstr "Abilita integrazione cluster" + +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "Inserisci i dettagli per un cluster Kubernetes esistente" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "Inserisci i dettagli per il tuo cluster" + +msgid "ClusterIntegration|Environment pattern" +msgstr "Environment pattern" + +msgid "ClusterIntegration|GKE pricing" +msgstr "Prezzi GKE" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "Gitlab Runner" msgid "ClusterIntegration|Google Cloud Platform project ID" -msgstr "" +msgstr "ID Progetto di Google Cloud Platform" msgid "ClusterIntegration|Google Kubernetes Engine" msgstr "" @@ -534,27 +636,75 @@ msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "" +msgid "ClusterIntegration|Helm Tiller" +msgstr "Helm Tiller" + +msgid "ClusterIntegration|Inactive" +msgstr "Inattivo" + +msgid "ClusterIntegration|Ingress" +msgstr "Ingresso" + +msgid "ClusterIntegration|Install" +msgstr "Installa" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "Installa applicazioni sul tuo cluster. Leggi di più a riguardo %{helpLink}" + +msgid "ClusterIntegration|Installed" +msgstr "Installato" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "Approfondisci riguardo i Clusters" + msgid "ClusterIntegration|Machine type" -msgstr "" +msgstr "Tipo di macchina" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" -msgstr "" +msgstr "Assicurati che il tuo account %{link_to_requirements} per creare i cluster" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" -msgstr "" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" +msgstr "Gestisci l'integrazione dei cluster nel tuo progetto GitLab" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" -msgstr "" +msgstr "Gestisci i tuoi cluster visitando %{link_gke}" + +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "I cluster multipli sono disponibili nell'edizione Enterprise di Gitlab (Premium e Ultimate)" + +msgid "ClusterIntegration|Note:" +msgstr "Nota:" msgid "ClusterIntegration|Number of nodes" +msgstr "Numero di nodi" + +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" msgstr "" msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "" @@ -567,7 +717,13 @@ msgstr "" msgid "ClusterIntegration|Remove integration" msgstr "" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" @@ -582,15 +738,33 @@ msgstr "" msgid "ClusterIntegration|See zones" msgstr "" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" + msgid "ClusterIntegration|Toggle Cluster" msgstr "" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" @@ -606,9 +780,15 @@ msgstr "" msgid "ClusterIntegration|cluster" msgstr "" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -616,20 +796,15 @@ msgid "ClusterIntegration|properly configured" msgstr "" msgid "Comments" -msgstr "" +msgstr "Commenti" msgid "Commit" msgid_plural "Commits" msgstr[0] "" msgstr[1] "" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "" -msgstr[1] "" - msgid "Commit Message" -msgstr "" +msgstr "Messaggio di commit" msgid "Commit duration in minutes for last 30 commits" msgstr "Durata del commit (in minuti) per gli ultimi 30 commit" @@ -644,7 +819,7 @@ msgid "CommitMessage|Add %{file_name}" msgstr "Aggiungi %{file_name}" msgid "Commits" -msgstr "" +msgstr "Commits" msgid "Commits feed" msgstr "Feed dei Commits" @@ -689,19 +864,19 @@ msgid "ContainerRegistry|Remove tag" msgstr "" msgid "ContainerRegistry|Size" -msgstr "" +msgstr "Dimensione" msgid "ContainerRegistry|Tag" -msgstr "" +msgstr "Tag" msgid "ContainerRegistry|Tag ID" -msgstr "" +msgstr "Tag ID" msgid "ContainerRegistry|Use different image names" -msgstr "" +msgstr "Utilizza nomi d'immagine differenti" msgid "ContainerRegistry|With the Docker Container Registry integrated into GitLab, every project can have its own space to store its Docker images." -msgstr "" +msgstr "Con il Docker Container Registry integrato in Gitlab, ogni progetto può avere il suo spazio d'archiviazione sulle immagini Docker." msgid "Contribution guide" msgstr "Guida per contribuire" @@ -709,6 +884,15 @@ msgstr "Guida per contribuire" msgid "Contributors" msgstr "Collaboratori" +msgid "ContributorsPage|Building repository graph." +msgstr "Genero grafico della repository." + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "Esegui i commit su %{branch_name}, escludendo i commit di merge. Limitati a 6000 commits." + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "Attendere prego, questa pagina si ricaricherà automaticamente appena pronta." + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "" @@ -736,20 +920,23 @@ msgstr "Crea cartella" msgid "Create empty bare repository" msgstr "Crea una repository vuota" -msgid "Create file" +msgid "Create epic" msgstr "" +msgid "Create file" +msgstr "Crea file" + msgid "Create merge request" msgstr "Crea una richiesta di merge" msgid "Create new branch" -msgstr "" +msgstr "Crea un nuova branch" msgid "Create new directory" -msgstr "" +msgstr "Crea una nuova cartella" msgid "Create new file" -msgstr "" +msgstr "Crea un nuovo File" msgid "Create new..." msgstr "Crea nuovo..." @@ -763,9 +950,12 @@ msgstr "Tag" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "Crea token d'accesso personale" -msgid "Cron Timezone" +msgid "Creating epic" msgstr "" +msgid "Cron Timezone" +msgstr "Timezone del Cron" + msgid "Cron syntax" msgstr "Sintassi Cron" @@ -803,10 +993,16 @@ msgid "CycleAnalyticsStage|Test" msgstr "Test" msgid "DashboardProjects|All" -msgstr "" +msgstr "Tutti" msgid "DashboardProjects|Personal" -msgstr "" +msgstr "Personale" + +msgid "Dec" +msgstr "Dic" + +msgid "December" +msgstr "Dicembre" msgid "Define a custom pattern with cron syntax" msgstr "Definisci un patter personalizzato mediante la sintassi cron" @@ -820,7 +1016,7 @@ msgstr[0] "Rilascio" msgstr[1] "Rilasci" msgid "Deploy Keys" -msgstr "" +msgstr "Chiavi di Deploy (rilascio)" msgid "Description" msgstr "Descrizione" @@ -829,16 +1025,16 @@ msgid "Description templates allow you to define context-specific templates for msgstr "" msgid "Details" -msgstr "" +msgstr "Dettagli" msgid "Directory name" msgstr "Nome cartella" msgid "Discard changes" -msgstr "" +msgstr "Annulla modifiche" msgid "Dismiss Cycle Analytics introduction box" -msgstr "" +msgstr "Chiudi l'introduzione alle Analisi Cicliche" msgid "Dismiss Merge Request promotion" msgstr "" @@ -880,25 +1076,91 @@ msgid "Edit Pipeline Schedule %{id}" msgstr "Cambia programmazione della pipeline %{id}" msgid "Emails" +msgstr "E-mail" + +msgid "Environments|An error occurred while fetching the environments." +msgstr "Errore durante il fetch degli ambienti." + +msgid "Environments|An error occurred while making the request." +msgstr "Errore durante l'esecuzione della richiesta." + +msgid "Environments|Commit" +msgstr "Commit" + +msgid "Environments|Deployment" +msgstr "Rilascio" + +msgid "Environments|Environment" +msgstr "Ambiente" + +msgid "Environments|Environments" +msgstr "Ambienti" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "Gli ambienti sono gli spazi dove il codice viene rilasciato, come staging o produzione." + +msgid "Environments|Job" +msgstr "Job" + +msgid "Environments|New environment" +msgstr "Nuovo ambiente" + +msgid "Environments|No deployments yet" +msgstr "Ancora nessuna chiave di rilascio" + +msgid "Environments|Open" +msgstr "Apri" + +msgid "Environments|Re-deploy" +msgstr "Rilascia di nuovo" + +msgid "Environments|Read more about environments" +msgstr "Leggi di più sugli ambienti" + +msgid "Environments|Rollback" +msgstr "Rollback (ripristina)" + +msgid "Environments|Show all" +msgstr "Mostra tutti" + +msgid "Environments|Updated" +msgstr "Aggiornato" + +msgid "Environments|You don't have any environments right now." +msgstr "Attualmente non hai alcun ambiente." + +msgid "Epic will be removed! Are you sure?" msgstr "" -msgid "EventFilterBy|Filter by all" +msgid "Epics" msgstr "" -msgid "EventFilterBy|Filter by comments" +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" msgstr "" -msgid "EventFilterBy|Filter by issue events" +msgid "Error creating epic" msgstr "" +msgid "Error occurred when toggling the notification subscription" +msgstr "Errore durante l'attivazione/disattivazione della sottoscrizione per l'iscrizione" + +msgid "EventFilterBy|Filter by all" +msgstr "Filtra per tutti" + +msgid "EventFilterBy|Filter by comments" +msgstr "Filtra per commenti" + +msgid "EventFilterBy|Filter by issue events" +msgstr "Filtra per eventi di issue" + msgid "EventFilterBy|Filter by merge events" -msgstr "" +msgstr "Filtra per eventi di merge" msgid "EventFilterBy|Filter by push events" -msgstr "" +msgstr "Filtra per eventi di push" msgid "EventFilterBy|Filter by team" -msgstr "" +msgstr "Filtra per team" msgid "Every day (at 4:00am)" msgstr "Ogni giorno (alle 4 del mattino)" @@ -910,10 +1172,10 @@ msgid "Every week (Sundays at 4:00am)" msgstr "Ogni settimana (Di domenica alle 4 del mattino)" msgid "Explore projects" -msgstr "" +msgstr "Esplora progetti" msgid "Explore public groups" -msgstr "" +msgstr "Esplora gruppi pubblici" msgid "Failed to change the owner" msgstr "Impossibile cambiare owner" @@ -921,11 +1183,17 @@ msgstr "Impossibile cambiare owner" msgid "Failed to remove the pipeline schedule" msgstr "Impossibile rimuovere la pipeline pianificata" +msgid "Feb" +msgstr "Feb" + +msgid "February" +msgstr "Febbraio" + msgid "File name" -msgstr "" +msgstr "Nome file" msgid "Files" -msgstr "" +msgstr "Files" msgid "Filter by commit message" msgstr "Filtra per messaggio di commit" @@ -944,17 +1212,17 @@ msgstr "Push di" msgid "Fork" msgid_plural "Forks" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Fork" +msgstr[1] "Forks" msgid "ForkedFromProjectPath|Forked from" msgstr "Fork da" msgid "ForkedFromProjectPath|Forked from %{project_name} (deleted)" -msgstr "" +msgstr "Fork da %{project_name} (eliminato)" msgid "Format" -msgstr "" +msgstr "Formato" msgid "From issue creation until deploy to production" msgstr "Dalla creazione di un issue fino al rilascio in produzione" @@ -963,11 +1231,26 @@ msgid "From merge request merge until deploy to production" msgstr "Dalla richiesta di merge fino effettua il merge fino al rilascio in produzione" msgid "GPG Keys" -msgstr "" +msgstr "Chiavi GPG" msgid "Geo Nodes" msgstr "" +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" + msgid "Geo|File sync capacity" msgstr "" @@ -981,10 +1264,10 @@ msgid "Geo|Select groups to replicate." msgstr "" msgid "Git storage health information has been reset" -msgstr "" +msgstr "Le informazioni sullo stato dell'archiviazione Git è stata ripristinata" msgid "GitLab Runner section" -msgstr "" +msgstr "Sezione Gitlab Runner" msgid "Go to your fork" msgstr "Vai il tuo fork" @@ -993,22 +1276,22 @@ msgid "GoToYourFork|Fork" msgstr "Fork" msgid "Google authentication is not %{link_to_documentation}. Ask your GitLab administrator if you want to use this service." -msgstr "" +msgstr "L'autenticazione Google non è %{link_to_documentation}. Richiedi al tuo amministratore Gitlab se desideri utilizzare il servizio." msgid "GroupSettings|Prevent sharing a project within %{group} with other groups" -msgstr "" +msgstr "Blocca la condivisione di un progetto di %{group} con altri gruppi" msgid "GroupSettings|Share with group lock" -msgstr "" +msgstr "Condividi con il gruppo chiuso" msgid "GroupSettings|This setting is applied on %{ancestor_group} and has been overridden on this subgroup." -msgstr "" +msgstr "Questa modifica è stata applicata su %{ancestor_group} ed è stata ignorata nel sottogruppo." msgid "GroupSettings|This setting is applied on %{ancestor_group}. To share projects in this group with another group, ask the owner to override the setting or %{remove_ancestor_share_with_group_lock}." -msgstr "" +msgstr "Questa impostazione è stata applicata a %{ancestor_group}. Per condividere i progetti con altri gruppi chiedi all'owner di eseguire l'override delle impostazioni oppure %{remove_ancestor_share_with_group_lock}." msgid "GroupSettings|This setting is applied on %{ancestor_group}. You can override the setting or %{remove_ancestor_share_with_group_lock}." -msgstr "" +msgstr "Questa impostazione è stata applicata a %{ancestor_group}. Puoi eseguire l'override delle impostazioni o %{remove_ancestor_share_with_group_lock}." msgid "GroupSettings|This setting will be applied to all subgroups unless overridden by a group owner. Groups that already have access to the project will continue to have access unless removed manually." msgstr "" @@ -1031,9 +1314,6 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" -msgid "GroupsTreeRole|as" -msgstr "" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "" @@ -1064,9 +1344,12 @@ msgstr "" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "" -msgid "Health Check" +msgid "Have your users email" msgstr "" +msgid "Health Check" +msgstr "Verifica stato" + msgid "Health information can be retrieved from the following endpoints. More information is available" msgstr "" @@ -1083,7 +1366,7 @@ msgid "HealthCheck|Unhealthy" msgstr "" msgid "History" -msgstr "" +msgstr "Cronologia" msgid "Housekeeping successfully started" msgstr "Housekeeping iniziato con successo" @@ -1123,9 +1406,6 @@ msgstr "Introduzione delle Analisi Cicliche" msgid "Issue board focus mode" msgstr "" -msgid "Issue boards with milestones" -msgstr "" - msgid "Issue events" msgstr "" @@ -1138,6 +1418,24 @@ msgstr "" msgid "Issues" msgstr "" +msgid "Jan" +msgstr "Gen" + +msgid "January" +msgstr "Gennaio" + +msgid "Jul" +msgstr "Lug" + +msgid "July" +msgstr "Luglio" + +msgid "Jun" +msgstr "Giu" + +msgid "June" +msgstr "Giugno" + msgid "LFSStatus|Disabled" msgstr "Disabilitato" @@ -1159,16 +1457,16 @@ msgid "Last commit" msgstr "Ultimo Commit" msgid "Last edited %{date}" -msgstr "" +msgstr "Ultima modifica %{date}" msgid "Last edited by %{name}" -msgstr "" +msgstr "Modificato da %{name}" msgid "Last update" -msgstr "" +msgstr "Ultimo aggiornamento" msgid "Last updated" -msgstr "" +msgstr "Ultimo aggiornamento" msgid "LastPushEvent|You pushed to" msgstr "" @@ -1203,49 +1501,58 @@ msgid "Lock" msgstr "" msgid "Locked" -msgstr "" +msgstr "Bloccato" msgid "Locked Files" msgstr "" msgid "Login" -msgstr "" +msgstr "Login" + +msgid "Mar" +msgstr "Mar" + +msgid "March" +msgstr "Marzo" msgid "Maximum git storage failures" msgstr "" +msgid "May" +msgstr "" + msgid "Median" msgstr "Mediano" msgid "Members" -msgstr "" +msgstr "Membri" msgid "Merge Requests" -msgstr "" +msgstr "Richieste di merge" msgid "Merge events" msgstr "" msgid "Merge request" -msgstr "" +msgstr "Richiesta di merge" msgid "Messages" -msgstr "" +msgstr "Messaggi" msgid "MissingSSHKeyWarningLink|add an SSH key" msgstr "aggiungi una chiave SSH" msgid "Monitoring" -msgstr "" +msgstr "Monitoraggio" msgid "More information is available|here" -msgstr "" +msgstr "Ulteriori informazioni sono disponibili | qui" msgid "Multiple issue boards" msgstr "" msgid "New Cluster" -msgstr "" +msgstr "Nuovo Cluster" msgid "New Issue" msgid_plural "New Issues" @@ -1258,14 +1565,20 @@ msgstr "Nuova pianificazione Pipeline" msgid "New branch" msgstr "Nuova Branch" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "Nuova directory" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "Nuovo file" msgid "New group" -msgstr "" +msgstr "Nuovo gruppo" msgid "New issue" msgstr "Nuovo Issue" @@ -1274,7 +1587,7 @@ msgid "New merge request" msgstr "Nuova richiesta di merge" msgid "New project" -msgstr "" +msgstr "Nuovo progetto" msgid "New schedule" msgstr "Nuova pianficazione" @@ -1283,7 +1596,7 @@ msgid "New snippet" msgstr "Nuovo snippet" msgid "New subgroup" -msgstr "" +msgstr "Nuovo sottogruppo" msgid "New tag" msgstr "Nuovo tag" @@ -1297,9 +1610,12 @@ msgstr "Nessuna Repository" msgid "No schedules" msgstr "Nessuna pianificazione" -msgid "None" +msgid "No time spent" msgstr "" +msgid "None" +msgstr "Nessuno" + msgid "Not available" msgstr "Non disponibile" @@ -1361,55 +1677,70 @@ msgid "NotificationLevel|Watch" msgstr "Osserva" msgid "Notifications" -msgstr "" +msgstr "Notifiche" + +msgid "Nov" +msgstr "Nov" + +msgid "November" +msgstr "Novembre" msgid "Number of access attempts" -msgstr "" +msgstr "Numero di tentativi di accesso raggiunto" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "Ott" + +msgid "October" +msgstr "Ottobre" + msgid "OfSearchInADropdown|Filter" msgstr "Filtra" msgid "Only project members can comment." +msgstr "Solo i membri del progetto possono commentare." + +msgid "Opened" msgstr "" msgid "OpenedNDaysAgo|Opened" msgstr "Aperto" msgid "Opens in a new window" -msgstr "" +msgstr "Si apre in una nuova finestra" msgid "Options" msgstr "Opzioni" msgid "Overview" -msgstr "" +msgstr "Panoramica" msgid "Owner" -msgstr "" +msgstr "Proprietario" msgid "Pagination|Last »" -msgstr "" +msgstr "Ultima »" msgid "Pagination|Next" -msgstr "" +msgstr "Successiva" msgid "Pagination|Prev" -msgstr "" +msgstr "Precedente" msgid "Pagination|« First" -msgstr "" +msgstr "« Prima" msgid "Password" -msgstr "" +msgstr "Password" msgid "People without permission will never get a notification and won\\'t be able to comment." -msgstr "" +msgstr "Le persone che non hanno il permesso non saranno notificate e non potranno commentare." msgid "Pipeline" -msgstr "" +msgstr "Pipeline" msgid "Pipeline Health" msgstr "Stato della Pipeline" @@ -1487,13 +1818,13 @@ msgid "Pipelines charts" msgstr "Grafici pipeline" msgid "Pipelines for last month" -msgstr "" +msgstr "Pipeline per il mese scorso" msgid "Pipelines for last week" -msgstr "" +msgstr "Pipeline per la settimana scorsa" msgid "Pipelines for last year" -msgstr "" +msgstr "Pipeline per l'ultimo anno" msgid "Pipeline|all" msgstr "tutto" @@ -1507,56 +1838,59 @@ msgstr "con stadio" msgid "Pipeline|with stages" msgstr "con più stadi" -msgid "Preferences" +msgid "Please solve the reCAPTCHA" msgstr "" +msgid "Preferences" +msgstr "Preferenze" + msgid "Private - Project access must be granted explicitly to each user." -msgstr "" +msgstr "Privato - L'accesso al progetto deve essere fornito esplicitamente ad ogni utente." msgid "Private - The group and its projects can only be viewed by members." -msgstr "" +msgstr "Privato - Il gruppo e i suoi progetti possono essere visualizzati solo dai membri." msgid "Profile" -msgstr "" +msgstr "Profilo" msgid "Profiles|Account scheduled for removal." -msgstr "" +msgstr "Account pianificato per la rimozione." msgid "Profiles|Delete Account" -msgstr "" +msgstr "Elimina account" msgid "Profiles|Delete account" -msgstr "" +msgstr "Elimina account" msgid "Profiles|Delete your account?" -msgstr "" +msgstr "Eliminare il tuo account?" msgid "Profiles|Deleting an account has the following effects:" msgstr "" msgid "Profiles|Invalid password" -msgstr "" +msgstr "Password non valida" msgid "Profiles|Invalid username" -msgstr "" +msgstr "Username non valido" msgid "Profiles|Type your %{confirmationValue} to confirm:" -msgstr "" +msgstr "Inserisci il tuo %{confirmationValue} per confermare:" msgid "Profiles|You don't have access to delete this user." -msgstr "" +msgstr "Non hai i permessi per eliminare questo utente." msgid "Profiles|You must transfer ownership or delete these groups before you can delete your account." -msgstr "" +msgstr "Devi trasferire la proprietà o eliminare questi gruppi prima che tu possa eliminare l'account." msgid "Profiles|Your account is currently an owner in these groups:" -msgstr "" +msgstr "Il tuo account è attualmente proprietario in questi gruppi:" msgid "Profiles|your account" -msgstr "" +msgstr "il tuo account" msgid "Project '%{project_name}' is in the process of being deleted." -msgstr "" +msgstr "Il progetto '%{project_name}' è in fase di eliminazione." msgid "Project '%{project_name}' queued for deletion." msgstr "Il Progetto '%{project_name}' in coda di eliminazione." @@ -1571,7 +1905,7 @@ msgid "Project access must be granted explicitly to each user." msgstr "L'accesso al progetto dev'esser fornito esplicitamente ad ogni utente" msgid "Project details" -msgstr "" +msgstr "Dettagli del progetto" msgid "Project export could not be deleted." msgstr "L'esportazione del progetto non può essere eliminata." @@ -1586,7 +1920,7 @@ msgid "Project export started. A download link will be sent by email." msgstr "Esportazione del progetto iniziata. Un link di download sarà inviato via email." msgid "ProjectActivityRSS|Subscribe" -msgstr "" +msgstr "Iscriviti" msgid "ProjectFeature|Disabled" msgstr "Disabilitato" @@ -1612,9 +1946,15 @@ msgstr "Grafico" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "Esegui subito una pipeline sulla branch di default" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "Problemi durante l'impostazione delle CI/CD JavaScript settings" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "" @@ -1628,35 +1968,68 @@ msgid "ProjectSettings|Users can only push commits to this repository that were msgstr "" msgid "Projects" -msgstr "" +msgstr "Progetti" msgid "ProjectsDropdown|Frequently visited" -msgstr "" +msgstr "Visitati di frequente" msgid "ProjectsDropdown|Loading projects" -msgstr "" +msgstr "Caricamento progetti" msgid "ProjectsDropdown|Projects you visit often will appear here" -msgstr "" +msgstr "I progetti che visiti spesso appariranno qui" msgid "ProjectsDropdown|Search your projects" -msgstr "" +msgstr "Cerca tra i tuoi progetti" msgid "ProjectsDropdown|Something went wrong on our end." -msgstr "" +msgstr "Qualcosa è andato storto dalla nostra parte." msgid "ProjectsDropdown|Sorry, no projects matched your search" -msgstr "" +msgstr "Siamo spiacenti, non ci sono progetti che corrispondono alla tua ricerca" msgid "ProjectsDropdown|This feature requires browser localStorage support" +msgstr "Questa feature richiede il supporto del localStorage del browser" + +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "Di default, Prometheus è in ascolto su ‘http://localhost:9090‘. Non è consigliabile cambiare l'indirizzo e la porta di default in quanto ciò potrebbe influenzare o causare conflitto con altri servizi in esecuzione sul server GitLab." + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "Ricerco e configuro le metriche..." + +msgid "PrometheusService|Metrics" +msgstr "Metriche" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "Le metriche sono configurate automaticamente e monitorate sulla base di una libreria di metriche di esportatori popolari." + +msgid "PrometheusService|Missing environment variable" +msgstr "Variabile d'ambiente mancante" + +msgid "PrometheusService|Monitored" +msgstr "Monitorato" + +msgid "PrometheusService|More information" +msgstr "Ulteriori informazioni" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "Nessuna metrica è stata monitorata. Per iniziare a monitorare, rilascia su un ambiente." + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" msgstr "" -msgid "Public - The group and any public projects can be viewed without any authentication." +msgid "PrometheusService|Prometheus monitoring" msgstr "" -msgid "Public - The project can be accessed without any authentication." +msgid "PrometheusService|View environments" msgstr "" +msgid "Public - The group and any public projects can be viewed without any authentication." +msgstr "Pubblico - il gruppo e tutti i progetti pubblici possono essere visualizzati senza alcuna autenticazione." + +msgid "Public - The project can be accessed without any authentication." +msgstr "Public - Chiunque può accedere a questo progetto senza alcuna autenticazione." + msgid "Push Rules" msgstr "" @@ -1727,13 +2100,13 @@ msgid "Revert this merge request" msgstr "Ripristina questa richiesta di merge" msgid "SSH Keys" -msgstr "" +msgstr "Chiavi SSH" msgid "Save" -msgstr "" +msgstr "Salva" msgid "Save changes" -msgstr "" +msgstr "Salva modifiche" msgid "Save pipeline schedule" msgstr "Salva pianificazione pipeline" @@ -1747,6 +2120,9 @@ msgstr "" msgid "Scheduling Pipelines" msgstr "Pianificazione pipelines" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "Ricerca branches e tags" @@ -1768,6 +2144,12 @@ msgstr "Seleziona una timezone" msgid "Select target branch" msgstr "Seleziona una branch di destinazione" +msgid "Sep" +msgstr "Set" + +msgid "September" +msgstr "Settembre" + msgid "Service Templates" msgstr "" @@ -1787,7 +2169,7 @@ msgid "SetPasswordToCloneLink|set a password" msgstr "imposta una password" msgid "Settings" -msgstr "" +msgstr "Impostazioni" msgid "Show parent pages" msgstr "" @@ -1800,24 +2182,39 @@ msgid_plural "Showing %d events" msgstr[0] "Visualizza %d evento" msgstr[1] "Visualizza %d eventi" -msgid "Snippets" +msgid "Sidebar|Change weight" msgstr "" -msgid "Something went wrong on our end." +msgid "Sidebar|Edit" msgstr "" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" +msgid "Sidebar|No" msgstr "" -msgid "Something went wrong while fetching the projects." +msgid "Sidebar|None" msgstr "" -msgid "Something went wrong while fetching the registry list." +msgid "Sidebar|Weight" msgstr "" -msgid "Sort by" +msgid "Snippets" +msgstr "Snippet" + +msgid "Something went wrong on our end." +msgstr "Si è verificato un problema con il nostro server." + +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" msgstr "" +msgid "Something went wrong while fetching the projects." +msgstr "Qualcosa è andato storto durante il fetch dei progetti." + +msgid "Something went wrong while fetching the registry list." +msgstr "Qualcosa è andato storto durante il recupero dell'elenco dei registri." + +msgid "Sort by" +msgstr "Ordina per" + msgid "SortOptions|Access level, ascending" msgstr "" @@ -1849,7 +2246,7 @@ msgid "SortOptions|Last created" msgstr "" msgid "SortOptions|Last joined" -msgstr "" +msgstr "Ultimo che ha Joinato" msgid "SortOptions|Last updated" msgstr "" @@ -1888,7 +2285,7 @@ msgid "SortOptions|Oldest created" msgstr "" msgid "SortOptions|Oldest joined" -msgstr "" +msgstr "Dal primo Joinato" msgid "SortOptions|Oldest sign in" msgstr "" @@ -1914,9 +2311,15 @@ msgstr "" msgid "SortOptions|Weight" msgstr "" +msgid "Source" +msgstr "" + msgid "Source code" msgstr "Codice Sorgente" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "" @@ -1935,6 +2338,9 @@ msgstr "inizia una %{new_merge_request} con queste modifiche" msgid "Start the Runner!" msgstr "" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "" @@ -1955,6 +2361,75 @@ msgstr[1] "" msgid "Tags" msgstr "" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "Branch di destinazione" @@ -2036,6 +2511,9 @@ msgstr "Il valore falsato nel mezzo di una serie di dati osservati. ES: tra 3,5, msgid "There are problems accessing Git storage: " msgstr "" +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" @@ -2057,6 +2535,9 @@ msgstr "Questo significa che non è possibile effettuare push di codice fino a c msgid "This merge request is locked." msgstr "" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "Il tempo che impiega un issue per esser pianificato" @@ -2205,15 +2686,27 @@ msgstr[1] "mins" msgid "Time|s" msgstr "s" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "Tempo Totale" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "Tempo totale di test per tutti i commits/merges" msgid "Track activity with Contribution Analytics." msgstr "" +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "" @@ -2250,6 +2743,9 @@ msgstr "Carica file" msgid "UploadLink|click to upload" msgstr "clicca per caricare" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "" @@ -2283,6 +2779,9 @@ msgstr "Vuoi visualizzare i dati? Richiedi l'accesso ad un amministratore, grazi msgid "We don't have enough data to show this stage." msgstr "Non ci sono sufficienti dati da mostrare su questo stadio" +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" @@ -2412,12 +2911,6 @@ msgstr "Stai per rimuovere la relazione con il progetto sorgente %{forked_from_p msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "Stai per trasferire %{project_name_with_namespace} ad un altro owner. Sei ASSOLUTAMENTE sicuro?" -msgid "You are on a read-only GitLab instance." -msgstr "" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "" - msgid "You can only add files when you are on a branch" msgstr "Puoi aggiungere files solo quando sei in una branch" @@ -2457,6 +2950,9 @@ msgstr "Non sarai in grado di eseguire pull o push di codice tramite %{protocol} msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "Non sarai in grado di effettuare push o pull tramite SSH fino a che %{add_ssh_key_link} al tuo profilo" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "" @@ -2469,6 +2965,12 @@ msgstr "Il tuo nome" msgid "Your projects" msgstr "" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" msgstr "" @@ -2494,6 +2996,9 @@ msgstr "" msgid "personal access token" msgstr "" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" msgstr "" diff --git a/locale/ja/gitlab.po b/locale/ja/gitlab.po index 8d93a936be9..1314bad87fe 100644 --- a/locale/ja/gitlab.po +++ b/locale/ja/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-03 12:31-0400\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:40-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -51,6 +51,9 @@ msgid "%{storage_name}: failed storage access attempt on host:" msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" msgstr[0] "" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "" @@ -109,9 +112,6 @@ msgstr "" msgid "Add License" msgstr "ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã‚’è¿½åŠ " -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "SSHã§ãƒ—ルやプッシュã™ã‚‹å ´åˆã¯ã€ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ã«SSHéµã‚’è¿½åŠ ã—ã¦ãã ã•ã„。" - msgid "Add new directory" msgstr "æ–°è¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’è¿½åŠ " @@ -124,6 +124,15 @@ msgstr "" msgid "All" msgstr "" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "" @@ -133,6 +142,12 @@ msgstr "" msgid "Applications" msgstr "" +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + msgid "Archived project! Repository is read-only" msgstr "アーカイブ済ã¿ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆï¼ï¼ˆãƒ¬ãƒã‚¸ãƒˆãƒªãƒ¼ã¯èªã¿å–り専用ã§ã™ï¼‰" @@ -160,6 +175,12 @@ msgstr "" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "ドラッグ&ドãƒãƒƒãƒ—ã¾ãŸã¯ %{upload_link} ã§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’添付" +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + msgid "Authentication Log" msgstr "" @@ -193,6 +214,9 @@ msgstr "" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "" +msgid "Available" +msgstr "" + msgid "Billing" msgstr "" @@ -257,6 +281,12 @@ msgstr "<strong>%{branch_name}</strong> ブランãƒãŒä½œæˆã•ã‚Œã¾ã—ãŸã€‚è msgid "Branch has changed" msgstr "" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "ブランãƒã‚’検索" @@ -404,6 +434,12 @@ msgstr "ãƒãƒ£ãƒ¼ãƒˆ" msgid "Chat" msgstr "" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "ã“ã®ã‚³ãƒŸãƒƒãƒˆã‚’ãƒã‚§ãƒªãƒ¼ãƒ”ック" @@ -479,7 +515,40 @@ msgstr "" msgid "Cluster" msgstr "" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" msgstr "" msgid "ClusterIntegration|Cluster details" @@ -503,21 +572,54 @@ msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "" @@ -527,27 +629,75 @@ msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "" +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "" @@ -560,7 +710,13 @@ msgstr "" msgid "ClusterIntegration|Remove integration" msgstr "" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" @@ -575,15 +731,33 @@ msgstr "" msgid "ClusterIntegration|See zones" msgstr "" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" + msgid "ClusterIntegration|Toggle Cluster" msgstr "" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" @@ -599,9 +773,15 @@ msgstr "" msgid "ClusterIntegration|cluster" msgstr "" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -615,10 +795,6 @@ msgid "Commit" msgid_plural "Commits" msgstr[0] "コミット" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "" - msgid "Commit Message" msgstr "" @@ -700,6 +876,15 @@ msgstr "貢献者å‘ã‘ガイド" msgid "Contributors" msgstr "貢献者" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "" @@ -727,6 +912,9 @@ msgstr "ディレクトリを作æˆ" msgid "Create empty bare repository" msgstr "空ã®bareレãƒã‚¸ãƒˆãƒªãƒ¼ã‚’作æˆ" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "" @@ -754,6 +942,9 @@ msgstr "ã‚¿ã‚°" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "個人用アクセストークンを作æˆ" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "Cron ã®ã‚¿ã‚¤ãƒ ゾーン" @@ -799,6 +990,12 @@ msgstr "" msgid "DashboardProjects|Personal" msgstr "" +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + msgid "Define a custom pattern with cron syntax" msgstr "Cron 構文ã§ã‚«ã‚¹ã‚¿ãƒ ãªãƒ‘ターンを指定ã™ã‚‹" @@ -872,6 +1069,72 @@ msgstr "パイプラインスケジュール %{id} を編集" msgid "Emails" msgstr "" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "" @@ -911,6 +1174,12 @@ msgstr "オーナーを変更ã§ãã¾ã›ã‚“ã§ã—ãŸ" msgid "Failed to remove the pipeline schedule" msgstr "パイプラインスケジュールを削除ã§ãã¾ã›ã‚“ã§ã—ãŸ" +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + msgid "File name" msgstr "" @@ -957,6 +1226,21 @@ msgstr "" msgid "Geo Nodes" msgstr "" +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" + msgid "Geo|File sync capacity" msgstr "" @@ -1020,9 +1304,6 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" -msgid "GroupsTreeRole|as" -msgstr "" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "" @@ -1053,6 +1334,9 @@ msgstr "" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "" @@ -1111,9 +1395,6 @@ msgstr "サイクル分æžã®ã”紹介" msgid "Issue board focus mode" msgstr "" -msgid "Issue boards with milestones" -msgstr "" - msgid "Issue events" msgstr "" @@ -1126,6 +1407,24 @@ msgstr "" msgid "Issues" msgstr "" +msgid "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + msgid "LFSStatus|Disabled" msgstr "無効" @@ -1197,9 +1496,18 @@ msgstr "" msgid "Login" msgstr "" +msgid "Mar" +msgstr "" + +msgid "March" +msgstr "" + msgid "Maximum git storage failures" msgstr "" +msgid "May" +msgstr "" + msgid "Median" msgstr "ä¸å¤®å€¤" @@ -1243,9 +1551,15 @@ msgstr "æ–°è¦ãƒ‘イプラインスケジュール" msgid "New branch" msgstr "æ–°è¦ãƒ–ランãƒ" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "æ–°è¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "æ–°è¦ãƒ•ã‚¡ã‚¤ãƒ«" @@ -1282,6 +1596,9 @@ msgstr "レãƒã‚¸ãƒˆãƒªãƒ¼ã¯ã‚ã‚Šã¾ã›ã‚“" msgid "No schedules" msgstr "スケジュールãªã—" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "" @@ -1348,18 +1665,33 @@ msgstr "ã™ã¹ã¦é€šçŸ¥" msgid "Notifications" msgstr "" +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + msgid "Number of access attempts" msgstr "" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + msgid "OfSearchInADropdown|Filter" msgstr "フィルター" msgid "Only project members can comment." msgstr "" +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "オープンã•ã‚ŒãŸã®ã¯" @@ -1492,6 +1824,9 @@ msgstr "ステージã‚ã‚Š" msgid "Pipeline|with stages" msgstr "ステージã‚ã‚Š" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "" @@ -1597,9 +1932,15 @@ msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚°ãƒ©ãƒ•" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "" @@ -1636,6 +1977,39 @@ msgstr "" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "" @@ -1732,6 +2106,9 @@ msgstr "" msgid "Scheduling Pipelines" msgstr "パイプラインスケジューリング" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "ブランãƒã¾ãŸã¯ã‚¿ã‚°ã‚’検索" @@ -1753,6 +2130,12 @@ msgstr "タイムゾーンをé¸æŠž" msgid "Select target branch" msgstr "ターゲットブランãƒã‚’é¸æŠž" +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + msgid "Service Templates" msgstr "" @@ -1784,13 +2167,28 @@ msgid "Showing %d event" msgid_plural "Showing %d events" msgstr[0] "%d ã®ã‚¤ãƒ™ãƒ³ãƒˆã‚’表示ä¸" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "" msgid "Something went wrong on our end." msgstr "" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" msgstr "" msgid "Something went wrong while fetching the projects." @@ -1898,9 +2296,15 @@ msgstr "" msgid "SortOptions|Weight" msgstr "" +msgid "Source" +msgstr "" + msgid "Source code" msgstr "ソースコード" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "" @@ -1919,6 +2323,9 @@ msgstr "ã“ã®å¤‰æ›´ã§ %{new_merge_request} を作æˆã™ã‚‹" msgid "Start the Runner!" msgstr "" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "" @@ -1938,6 +2345,75 @@ msgstr[0] "ã‚¿ã‚°" msgid "Tags" msgstr "ã‚¿ã‚°" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "ターゲットブランãƒ" @@ -2019,6 +2495,9 @@ msgstr "得られãŸä¸€é€£ã®ãƒ‡ãƒ¼ã‚¿ã‚’å°ã•ã„é †ã«ä¸¦ã¹ãŸã¨ãã«ä¸å¤® msgid "There are problems accessing Git storage: " msgstr "" +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" @@ -2040,6 +2519,9 @@ msgstr "空レãƒã‚¸ãƒˆãƒªãƒ¼ã‚’作æˆã¾ãŸã¯æ—¢å˜ãƒ¬ãƒã‚¸ãƒˆãƒªãƒ¼ã‚’イン msgid "This merge request is locked." msgstr "" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "課題ãŒè¨ˆç”»ã•ã‚Œã‚‹ã¾ã§ã®æ™‚é–“" @@ -2186,15 +2668,27 @@ msgstr[0] "分" msgid "Time|s" msgstr "秒" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "åˆè¨ˆæ™‚é–“" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "ã™ã¹ã¦ã®ã‚³ãƒŸãƒƒãƒˆ/マージã®åˆè¨ˆãƒ†ã‚¹ãƒˆæ™‚é–“" msgid "Track activity with Contribution Analytics." msgstr "" +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "" @@ -2231,6 +2725,9 @@ msgstr "ファイルをアップãƒãƒ¼ãƒ‰" msgid "UploadLink|click to upload" msgstr "クリックã—ã¦ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "" @@ -2264,6 +2761,9 @@ msgstr "ã“ã®ãƒ‡ãƒ¼ã‚¿ã‚’å‚ç…§ã—ãŸã„ã§ã™ã‹ï¼Ÿã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ç®¡ msgid "We don't have enough data to show this stage." msgstr "データä¸è¶³ã®ãŸã‚ã€ã“ã®ã‚¹ãƒ†ãƒ¼ã‚¸ã®è¡¨ç¤ºã¯ã§ãã¾ã›ã‚“。" +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" @@ -2393,12 +2893,6 @@ msgstr "å…ƒã®ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆ (%{forked_from_project}) ã¨ã®ãƒªãƒ¬ãƒ¼ã‚·ãƒ§ã msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "%{project_name_with_namespace} プãƒã‚¸ã‚§ã‚¯ãƒˆã‚’別ã®ã‚ªãƒ¼ãƒŠãƒ¼ã«ç§»è²ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚本当ã«ã‚ˆã‚ã—ã„ã§ã™ã‹ï¼Ÿ" -msgid "You are on a read-only GitLab instance." -msgstr "" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "" - msgid "You can only add files when you are on a branch" msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ã‚’è¿½åŠ ã™ã‚‹ã«ã¯ã€ã©ã“ã‹ã®ãƒ–ランãƒã«ã„ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“" @@ -2438,6 +2932,9 @@ msgstr "%{set_password_link} ã§ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®ãƒ‘スワードãŒã‚»ãƒƒãƒˆã• msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "%{add_ssh_key_link} をプãƒãƒ•ã‚¡ã‚¤ãƒ«ã«è¿½åŠ ã—ã¦ã„ãªã„ã®ã§ã€ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã«ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’プッシュã€ãƒ—ルã§ãã¾ã›ã‚“" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "" @@ -2450,6 +2947,12 @@ msgstr "åå‰" msgid "Your projects" msgstr "" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" msgstr "" @@ -2473,6 +2976,9 @@ msgstr "" msgid "personal access token" msgstr "" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" msgstr "" diff --git a/locale/ko/gitlab.po b/locale/ko/gitlab.po index d6c1ff2deeb..9ec3d395c15 100644 --- a/locale/ko/gitlab.po +++ b/locale/ko/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-03 12:31-0400\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:41-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -51,6 +51,9 @@ msgid "%{storage_name}: failed storage access attempt on host:" msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" msgstr[0] "" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "설치 ë°©ë²•ì— ëŒ€í•œ ì •ë³´ë¥¼ 얻기 위해 %{link} 를 ì²´í¬ì•„웃하세요." @@ -109,9 +112,6 @@ msgstr "" msgid "Add License" msgstr "ë¼ì´ì„ 스 추가" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "í”„ë¡œí•„ì— SSH 키를 추가하여 SSH를 통해 Pull 하거나 Push합니다." - msgid "Add new directory" msgstr "새 ë””ë ‰í† ë¦¬ 추가" @@ -124,6 +124,15 @@ msgstr "" msgid "All" msgstr "ì „ì²´" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "" @@ -133,6 +142,12 @@ msgstr "" msgid "Applications" msgstr "" +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + msgid "Archived project! Repository is read-only" msgstr "프로ì 트가 ë³´ê´€ë˜ì—ˆìŠµë‹ˆë‹¤! ì €ìž¥ì†ŒëŠ” ì½ê¸°ë§Œ 가능합니다." @@ -160,6 +175,12 @@ msgstr "" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "드래그 & ë“œë¡ ë˜ëŠ” %{upload_link}" +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + msgid "Authentication Log" msgstr "" @@ -193,6 +214,9 @@ msgstr "" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "" +msgid "Available" +msgstr "" + msgid "Billing" msgstr "" @@ -257,6 +281,12 @@ msgstr "<strong>%{branch_name}</strong> 브랜치가 ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤. ìžë msgid "Branch has changed" msgstr "" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "브랜치 검색" @@ -404,6 +434,12 @@ msgstr "차트" msgid "Chat" msgstr "" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "ì´ ì»¤ë°‹ì„ Cherry-pick" @@ -479,7 +515,40 @@ msgstr "" msgid "Cluster" msgstr "" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" msgstr "" msgid "ClusterIntegration|Cluster details" @@ -503,21 +572,54 @@ msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "" @@ -527,27 +629,75 @@ msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "" +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "" @@ -560,7 +710,13 @@ msgstr "" msgid "ClusterIntegration|Remove integration" msgstr "" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" @@ -575,15 +731,33 @@ msgstr "" msgid "ClusterIntegration|See zones" msgstr "" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" + msgid "ClusterIntegration|Toggle Cluster" msgstr "" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" @@ -599,9 +773,15 @@ msgstr "" msgid "ClusterIntegration|cluster" msgstr "" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -615,10 +795,6 @@ msgid "Commit" msgid_plural "Commits" msgstr[0] "커밋" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "" - msgid "Commit Message" msgstr "" @@ -700,6 +876,15 @@ msgstr "ê¸°ì—¬ì— ëŒ€í•œ 안내" msgid "Contributors" msgstr "기여해 ì£¼ì‹ ë¶„ë“¤" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "" @@ -727,6 +912,9 @@ msgstr "ë””ë ‰í† ë¦¬ 만들기" msgid "Create empty bare repository" msgstr "빈 bare ì €ìž¥ì†Œ 만들기" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "" @@ -754,6 +942,9 @@ msgstr "태그" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "ê°œì¸ ì•¡ì„¸ìŠ¤ í† í° ë§Œë“¤ê¸°" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "Cron 시간대" @@ -799,6 +990,12 @@ msgstr "" msgid "DashboardProjects|Personal" msgstr "" +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + msgid "Define a custom pattern with cron syntax" msgstr "cron êµ¬ë¬¸ì„ ì‚¬ìš©í•˜ì—¬ ì‚¬ìš©ìž ì •ì˜ íŒ¨í„´ ì •ì˜" @@ -872,6 +1069,72 @@ msgstr "파ì´í”„ë¼ì¸ 스케줄 편집 %{id}" msgid "Emails" msgstr "" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "ëª¨ë“ ê°’ì„ ê¸°ì¤€ìœ¼ë¡œ í•„í„°" @@ -911,6 +1174,12 @@ msgstr "ì†Œìœ ìžë¥¼ 변경하지 못했습니다" msgid "Failed to remove the pipeline schedule" msgstr "파ì´í”„ë¼ì¸ ìŠ¤ì¼€ì¤„ì„ ì œê±°í•˜ì§€ 못했습니다." +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + msgid "File name" msgstr "" @@ -957,6 +1226,21 @@ msgstr "" msgid "Geo Nodes" msgstr "" +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" + msgid "Geo|File sync capacity" msgstr "" @@ -1020,9 +1304,6 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" -msgid "GroupsTreeRole|as" -msgstr "" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "" @@ -1053,6 +1334,9 @@ msgstr "" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "헬스 ì²´í¬" @@ -1111,9 +1395,6 @@ msgstr "Cycle Analytics 소개" msgid "Issue board focus mode" msgstr "" -msgid "Issue boards with milestones" -msgstr "" - msgid "Issue events" msgstr "ì´ìŠˆ ì´ë²¤íŠ¸" @@ -1126,6 +1407,24 @@ msgstr "" msgid "Issues" msgstr "" +msgid "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + msgid "LFSStatus|Disabled" msgstr "Disabled" @@ -1197,9 +1496,18 @@ msgstr "" msgid "Login" msgstr "" +msgid "Mar" +msgstr "" + +msgid "March" +msgstr "" + msgid "Maximum git storage failures" msgstr "" +msgid "May" +msgstr "" + msgid "Median" msgstr "중앙값" @@ -1243,9 +1551,15 @@ msgstr "새로운 파ì´í”„ë¼ì¸ ì¼ì •" msgid "New branch" msgstr "새 브랜치" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "새 ë””ë ‰í† ë¦¬" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "새 파ì¼" @@ -1282,6 +1596,9 @@ msgstr "ì €ìž¥ì†Œ ì—†ìŒ" msgid "No schedules" msgstr "ì¼ì • ì—†ìŒ" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "" @@ -1348,18 +1665,33 @@ msgstr "Watch" msgid "Notifications" msgstr "" +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + msgid "Number of access attempts" msgstr "" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + msgid "OfSearchInADropdown|Filter" msgstr "í•„í„°" msgid "Only project members can comment." msgstr "" +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "열린" @@ -1492,6 +1824,9 @@ msgstr "스테ì´ì§•" msgid "Pipeline|with stages" msgstr "스테ì´ì§•" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "" @@ -1597,9 +1932,15 @@ msgstr "그래프" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "" @@ -1636,6 +1977,39 @@ msgstr "" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "" @@ -1732,6 +2106,9 @@ msgstr "" msgid "Scheduling Pipelines" msgstr "파ì´í”„ë¼ì¸ 스케줄ë§" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "브랜치 ë° íƒœê·¸ 검색" @@ -1753,6 +2130,12 @@ msgstr "시간대 ì„ íƒ" msgid "Select target branch" msgstr "ëŒ€ìƒ ë¸Œëžœì¹˜ ì„ íƒ" +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + msgid "Service Templates" msgstr "" @@ -1784,13 +2167,28 @@ msgid "Showing %d event" msgid_plural "Showing %d events" msgstr[0] "%d ê°œì˜ ì´ë²¤íŠ¸ 표시 중" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "" msgid "Something went wrong on our end." msgstr "" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" msgstr "" msgid "Something went wrong while fetching the projects." @@ -1898,9 +2296,15 @@ msgstr "" msgid "SortOptions|Weight" msgstr "" +msgid "Source" +msgstr "" + msgid "Source code" msgstr "소스 코드" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "" @@ -1919,6 +2323,9 @@ msgstr "ì´ ë³€ê²½ 사í•ìœ¼ë¡œ %{new_merge_request} ì„ ì‹œìž‘í•˜ì‹ì‹œì˜¤." msgid "Start the Runner!" msgstr "Runner 시작!" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "" @@ -1938,6 +2345,75 @@ msgstr[0] "태그" msgid "Tags" msgstr "태그 " +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "ëŒ€ìƒ ë¸Œëžœì¹˜" @@ -2019,6 +2495,9 @@ msgstr "ê°’ì€ ì¼ë ¨ì˜ 관측 ê°’ 중ì ì— ìžˆìŠµë‹ˆë‹¤. 예를 들어, 3, 5, msgid "There are problems accessing Git storage: " msgstr "git storageì— ì ‘ê·¼í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. " +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" @@ -2040,6 +2519,9 @@ msgstr "즉, 빈 ì €ìž¥ì†Œë¥¼ 만들거나 기존 ì €ìž¥ì†Œë¥¼ ê°€ì ¸ì˜¬ 때까ì msgid "This merge request is locked." msgstr "" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "ì´ìŠˆê°€ 스케줄ë˜ê¸° ì „ì˜ ì‹œê°„" @@ -2186,15 +2668,27 @@ msgstr[0] "분" msgid "Time|s" msgstr "ì´ˆ" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "시간 합계:" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "ëª¨ë“ ì»¤ë°‹ / ë¨¸ì§€ì˜ ì´ í…ŒìŠ¤íŠ¸ 시간" msgid "Track activity with Contribution Analytics." msgstr "" +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "" @@ -2231,6 +2725,9 @@ msgstr "íŒŒì¼ ì—…ë¡œë“œ" msgid "UploadLink|click to upload" msgstr "ì—…ë¡œë“œí•˜ë ¤ë©´ í´ë¦í•˜ì‹ì‹œì˜¤." +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "ì„¤ì • ì¤‘ì— ë‹¤ìŒ ë“±ë¡ í† í° ì´ìš© : " @@ -2264,6 +2761,9 @@ msgstr "ì´ ë°ì´í„°ë¥¼ ë³´ê³ ì‹¶ì€ê°€ìš”? 관리ìžì—게 액세스 권한ì msgid "We don't have enough data to show this stage." msgstr "ì´ ë‹¨ê³„ë¥¼ ë³´ì—¬ì£¼ê¸°ì— ì¶©ë¶„í•œ ë°ì´í„°ê°€ 없습니다." +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" @@ -2393,12 +2893,6 @@ msgstr "í¬í¬ 관계를 소스 프로ì 트 %{forked_from_project}ì— ëŒ€í•´ ì msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "%{project_name_with_namespace}ì„ ë‹¤ë¥¸ ì†Œìœ ìžì—게 ì´ì „í•˜ë ¤ê³ í•©ë‹ˆë‹¤. \"ì •ë§ë¡œ\" 확실합니까?" -msgid "You are on a read-only GitLab instance." -msgstr "" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "" - msgid "You can only add files when you are on a branch" msgstr "ë¸Œëžœì¹˜ì— ìžˆì„ ë•Œì—만 파ì¼ì„ 추가 í• ìˆ˜ 있습니다." @@ -2438,6 +2932,9 @@ msgstr "ë‹¹ì‹ ì˜ ê³„ì •ì— %{set_password_link} ì„ í•˜ê¸° ì „ì—는 %{protocol msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "ë‹¹ì‹ ì˜ í”„ë¡œí•„ì— %{add_ssh_key_link} 를 하기 ì „ì—는 SSH를 통해 프로ì 트 코드를 Pull 하거나 Push í• ìˆ˜ 없습니다" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "" @@ -2450,6 +2947,12 @@ msgstr "ê·€í•˜ì˜ ì´ë¦„" msgid "Your projects" msgstr "" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" msgstr "" @@ -2473,6 +2976,9 @@ msgstr "" msgid "personal access token" msgstr "" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" msgstr "" diff --git a/locale/nl_NL/gitlab.po b/locale/nl_NL/gitlab.po index 68d1f809bb4..0abb727037c 100644 --- a/locale/nl_NL/gitlab.po +++ b/locale/nl_NL/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-03 12:31-0400\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:42-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -56,6 +56,9 @@ msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts msgstr[0] "" msgstr[1] "" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "(bekijk de %{link} voor meer info over hoe je het kan installeren)." @@ -101,7 +104,7 @@ msgid "Activity" msgstr "Activiteit" msgid "Add" -msgstr "Voeg toe" +msgstr "" msgid "Add Changelog" msgstr "Changelog toevoegen" @@ -115,9 +118,6 @@ msgstr "" msgid "Add License" msgstr "Licentie toevoegen" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "" - msgid "Add new directory" msgstr "Nieuwe map toevoegen" @@ -130,6 +130,15 @@ msgstr "" msgid "All" msgstr "Alles" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "" @@ -139,6 +148,12 @@ msgstr "Uiterlijk" msgid "Applications" msgstr "Applicaties" +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + msgid "Archived project! Repository is read-only" msgstr "" @@ -166,6 +181,12 @@ msgstr "" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "" +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + msgid "Authentication Log" msgstr "" @@ -199,8 +220,11 @@ msgstr "" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "" +msgid "Available" +msgstr "" + msgid "Billing" -msgstr "Facturatie" +msgstr "" msgid "BillingPlans|%{group_name} is currently on the %{plan_link} plan." msgstr "" @@ -264,6 +288,12 @@ msgstr "" msgid "Branch has changed" msgstr "" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "BranchSwitcherPlaceholder|Zoek branches" @@ -411,6 +441,12 @@ msgstr "Grafieken" msgid "Chat" msgstr "Chat" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "Cherry-pick deze commit" @@ -486,7 +522,40 @@ msgstr "" msgid "Cluster" msgstr "" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" msgstr "" msgid "ClusterIntegration|Cluster details" @@ -510,21 +579,54 @@ msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "" @@ -534,27 +636,75 @@ msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "" +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "" @@ -567,7 +717,13 @@ msgstr "" msgid "ClusterIntegration|Remove integration" msgstr "" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" @@ -582,15 +738,33 @@ msgstr "" msgid "ClusterIntegration|See zones" msgstr "" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" + msgid "ClusterIntegration|Toggle Cluster" msgstr "" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" @@ -606,9 +780,15 @@ msgstr "" msgid "ClusterIntegration|cluster" msgstr "" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -623,11 +803,6 @@ msgid_plural "Commits" msgstr[0] "" msgstr[1] "" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "" -msgstr[1] "" - msgid "Commit Message" msgstr "" @@ -709,6 +884,15 @@ msgstr "" msgid "Contributors" msgstr "" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "" @@ -736,6 +920,9 @@ msgstr "Maak map aan" msgid "Create empty bare repository" msgstr "" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "" @@ -763,6 +950,9 @@ msgstr "" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "" @@ -808,6 +998,12 @@ msgstr "" msgid "DashboardProjects|Personal" msgstr "" +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + msgid "Define a custom pattern with cron syntax" msgstr "" @@ -882,6 +1078,72 @@ msgstr "" msgid "Emails" msgstr "" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "" @@ -921,6 +1183,12 @@ msgstr "" msgid "Failed to remove the pipeline schedule" msgstr "" +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + msgid "File name" msgstr "" @@ -968,6 +1236,21 @@ msgstr "" msgid "Geo Nodes" msgstr "" +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" + msgid "Geo|File sync capacity" msgstr "" @@ -1031,9 +1314,6 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" -msgid "GroupsTreeRole|as" -msgstr "" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "" @@ -1064,6 +1344,9 @@ msgstr "" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "" @@ -1123,9 +1406,6 @@ msgstr "" msgid "Issue board focus mode" msgstr "" -msgid "Issue boards with milestones" -msgstr "" - msgid "Issue events" msgstr "" @@ -1138,6 +1418,24 @@ msgstr "" msgid "Issues" msgstr "" +msgid "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + msgid "LFSStatus|Disabled" msgstr "" @@ -1211,9 +1509,18 @@ msgstr "" msgid "Login" msgstr "" +msgid "Mar" +msgstr "" + +msgid "March" +msgstr "" + msgid "Maximum git storage failures" msgstr "" +msgid "May" +msgstr "" + msgid "Median" msgstr "" @@ -1258,9 +1565,15 @@ msgstr "" msgid "New branch" msgstr "" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "" @@ -1297,6 +1610,9 @@ msgstr "" msgid "No schedules" msgstr "" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "" @@ -1363,18 +1679,33 @@ msgstr "" msgid "Notifications" msgstr "" +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + msgid "Number of access attempts" msgstr "" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + msgid "OfSearchInADropdown|Filter" msgstr "" msgid "Only project members can comment." msgstr "" +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "Geopend" @@ -1507,6 +1838,9 @@ msgstr "" msgid "Pipeline|with stages" msgstr "" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "" @@ -1612,9 +1946,15 @@ msgstr "" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "" @@ -1651,6 +1991,39 @@ msgstr "" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "" @@ -1747,6 +2120,9 @@ msgstr "" msgid "Scheduling Pipelines" msgstr "" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "" @@ -1768,6 +2144,12 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + msgid "Service Templates" msgstr "" @@ -1800,13 +2182,28 @@ msgid_plural "Showing %d events" msgstr[0] "" msgstr[1] "" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "" msgid "Something went wrong on our end." msgstr "" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" msgstr "" msgid "Something went wrong while fetching the projects." @@ -1914,9 +2311,15 @@ msgstr "" msgid "SortOptions|Weight" msgstr "" +msgid "Source" +msgstr "" + msgid "Source code" msgstr "" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "" @@ -1935,6 +2338,9 @@ msgstr "" msgid "Start the Runner!" msgstr "" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "" @@ -1955,6 +2361,75 @@ msgstr[1] "" msgid "Tags" msgstr "" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "" @@ -2036,6 +2511,9 @@ msgstr "" msgid "There are problems accessing Git storage: " msgstr "" +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" @@ -2057,6 +2535,9 @@ msgstr "" msgid "This merge request is locked." msgstr "" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "" @@ -2205,15 +2686,27 @@ msgstr[1] "" msgid "Time|s" msgstr "s" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "" msgid "Track activity with Contribution Analytics." msgstr "" +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "" @@ -2250,6 +2743,9 @@ msgstr "" msgid "UploadLink|click to upload" msgstr "" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "" @@ -2283,6 +2779,9 @@ msgstr "" msgid "We don't have enough data to show this stage." msgstr "" +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" @@ -2412,12 +2911,6 @@ msgstr "" msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "" -msgid "You are on a read-only GitLab instance." -msgstr "" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "" - msgid "You can only add files when you are on a branch" msgstr "" @@ -2457,6 +2950,9 @@ msgstr "" msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "" @@ -2469,6 +2965,12 @@ msgstr "" msgid "Your projects" msgstr "" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" msgstr "" @@ -2494,6 +2996,9 @@ msgstr "" msgid "personal access token" msgstr "" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" msgstr "" diff --git a/locale/pl_PL/gitlab.po b/locale/pl_PL/gitlab.po index c48909540b1..5b65c42097e 100644 --- a/locale/pl_PL/gitlab.po +++ b/locale/pl_PL/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-20 11:16-0500\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:41-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -61,6 +61,9 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "" @@ -121,9 +124,6 @@ msgstr "" msgid "Add License" msgstr "" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "" - msgid "Add new directory" msgstr "" @@ -136,6 +136,15 @@ msgstr "" msgid "All" msgstr "" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "" @@ -145,6 +154,12 @@ msgstr "" msgid "Applications" msgstr "" +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + msgid "Archived project! Repository is read-only" msgstr "" @@ -172,6 +187,12 @@ msgstr "" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "" +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + msgid "Authentication Log" msgstr "" @@ -205,6 +226,9 @@ msgstr "" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "" +msgid "Available" +msgstr "" + msgid "Billing" msgstr "" @@ -271,6 +295,12 @@ msgstr "" msgid "Branch has changed" msgstr "" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "" @@ -418,6 +448,12 @@ msgstr "" msgid "Chat" msgstr "" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "" @@ -493,7 +529,40 @@ msgstr "" msgid "Cluster" msgstr "" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" msgstr "" msgid "ClusterIntegration|Cluster details" @@ -517,21 +586,54 @@ msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "" @@ -541,27 +643,75 @@ msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "" +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "" @@ -574,7 +724,13 @@ msgstr "" msgid "ClusterIntegration|Remove integration" msgstr "" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" @@ -589,15 +745,33 @@ msgstr "" msgid "ClusterIntegration|See zones" msgstr "" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" + msgid "ClusterIntegration|Toggle Cluster" msgstr "" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" @@ -613,9 +787,15 @@ msgstr "" msgid "ClusterIntegration|cluster" msgstr "" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -631,12 +811,6 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - msgid "Commit Message" msgstr "" @@ -718,6 +892,15 @@ msgstr "" msgid "Contributors" msgstr "" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "" @@ -745,6 +928,9 @@ msgstr "" msgid "Create empty bare repository" msgstr "" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "" @@ -772,6 +958,9 @@ msgstr "" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "" @@ -817,6 +1006,12 @@ msgstr "" msgid "DashboardProjects|Personal" msgstr "" +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + msgid "Define a custom pattern with cron syntax" msgstr "" @@ -892,6 +1087,72 @@ msgstr "" msgid "Emails" msgstr "" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "" @@ -931,6 +1192,12 @@ msgstr "" msgid "Failed to remove the pipeline schedule" msgstr "" +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + msgid "File name" msgstr "" @@ -979,6 +1246,21 @@ msgstr "" msgid "Geo Nodes" msgstr "" +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" + msgid "Geo|File sync capacity" msgstr "" @@ -1042,9 +1324,6 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" -msgid "GroupsTreeRole|as" -msgstr "" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "" @@ -1075,6 +1354,9 @@ msgstr "" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "" @@ -1135,9 +1417,6 @@ msgstr "" msgid "Issue board focus mode" msgstr "" -msgid "Issue boards with milestones" -msgstr "" - msgid "Issue events" msgstr "" @@ -1150,6 +1429,24 @@ msgstr "" msgid "Issues" msgstr "" +msgid "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + msgid "LFSStatus|Disabled" msgstr "" @@ -1225,9 +1522,18 @@ msgstr "" msgid "Login" msgstr "" +msgid "Mar" +msgstr "" + +msgid "March" +msgstr "" + msgid "Maximum git storage failures" msgstr "" +msgid "May" +msgstr "" + msgid "Median" msgstr "" @@ -1273,9 +1579,15 @@ msgstr "" msgid "New branch" msgstr "" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "" @@ -1312,6 +1624,9 @@ msgstr "" msgid "No schedules" msgstr "" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "" @@ -1378,18 +1693,33 @@ msgstr "" msgid "Notifications" msgstr "" +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + msgid "Number of access attempts" msgstr "" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + msgid "OfSearchInADropdown|Filter" msgstr "" msgid "Only project members can comment." msgstr "" +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "" @@ -1522,6 +1852,9 @@ msgstr "" msgid "Pipeline|with stages" msgstr "" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "" @@ -1627,9 +1960,15 @@ msgstr "" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "" @@ -1666,6 +2005,39 @@ msgstr "" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "" @@ -1762,6 +2134,9 @@ msgstr "" msgid "Scheduling Pipelines" msgstr "" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "" @@ -1783,6 +2158,12 @@ msgstr "" msgid "Select target branch" msgstr "" +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + msgid "Service Templates" msgstr "" @@ -1816,13 +2197,28 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "" msgid "Something went wrong on our end." msgstr "" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" msgstr "" msgid "Something went wrong while fetching the projects." @@ -1930,9 +2326,15 @@ msgstr "" msgid "SortOptions|Weight" msgstr "" +msgid "Source" +msgstr "" + msgid "Source code" msgstr "" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "" @@ -1951,6 +2353,9 @@ msgstr "" msgid "Start the Runner!" msgstr "" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "" @@ -1972,6 +2377,75 @@ msgstr[2] "" msgid "Tags" msgstr "" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "" @@ -2053,6 +2527,9 @@ msgstr "" msgid "There are problems accessing Git storage: " msgstr "" +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" @@ -2074,6 +2551,9 @@ msgstr "" msgid "This merge request is locked." msgstr "" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "" @@ -2224,15 +2704,27 @@ msgstr[2] "" msgid "Time|s" msgstr "" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "" msgid "Track activity with Contribution Analytics." msgstr "" +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "" @@ -2269,6 +2761,9 @@ msgstr "" msgid "UploadLink|click to upload" msgstr "" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "" @@ -2302,6 +2797,9 @@ msgstr "" msgid "We don't have enough data to show this stage." msgstr "" +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" @@ -2431,12 +2929,6 @@ msgstr "" msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "" -msgid "You are on a read-only GitLab instance." -msgstr "" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "" - msgid "You can only add files when you are on a branch" msgstr "" @@ -2476,6 +2968,9 @@ msgstr "" msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "" @@ -2488,6 +2983,12 @@ msgstr "" msgid "Your projects" msgstr "" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" msgstr "" @@ -2515,6 +3016,9 @@ msgstr "" msgid "personal access token" msgstr "" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" msgstr "" diff --git a/locale/pt_BR/gitlab.po b/locale/pt_BR/gitlab.po index 78e0967c3bc..9fe1cc3c11a 100644 --- a/locale/pt_BR/gitlab.po +++ b/locale/pt_BR/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-18 12:51-0500\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:41-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -56,6 +56,9 @@ msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts msgstr[0] "%{storage_name}: falha na tentativa de acesso ao storage no host:" msgstr[1] "%{storage_name}: %{failed_attempts} falhas de acesso ao storage:" +msgid "%{text} is available" +msgstr "%{text} está disponÃvel" + msgid "(checkout the %{link} for information on how to install it)." msgstr "(veja o %{link} para informações de como instalar)." @@ -110,14 +113,11 @@ msgid "Add Contribution guide" msgstr "Adicionar Guia de contribuição" msgid "Add Group Webhooks and GitLab Enterprise Edition." -msgstr "Adicione o grupo de Webhooks e GitLab Enterprise Edition." +msgstr "Adicione o Webhooks de Grupos e GitLab Enterprise Edition." msgid "Add License" msgstr "Adicionar Licença" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "Adicionar chave SSH ao seu perfil para fazer pull ou push via SSH." - msgid "Add new directory" msgstr "Adicionar novo diretório" @@ -130,6 +130,15 @@ msgstr "Configurações avançadas" msgid "All" msgstr "Todos" +msgid "An error occurred when toggling the notification subscription" +msgstr "Erro ao modificar notificação de assinatura" + +msgid "An error occurred when updating the issue weight" +msgstr "Um erro aconteceu ao atualizar o peso da issue" + +msgid "An error occurred while fetching sidebar data" +msgstr "Erro ao recuperar informações da barra lateral" + msgid "An error occurred. Please try again." msgstr "Ocorreu um erro. Tente novamente." @@ -139,6 +148,12 @@ msgstr "Aparência" msgid "Applications" msgstr "Aplicações" +msgid "Apr" +msgstr "Abr" + +msgid "April" +msgstr "Abril" + msgid "Archived project! Repository is read-only" msgstr "Projeto arquivado! O repositório é somente leitura" @@ -166,6 +181,12 @@ msgstr "Artefatos" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "Para anexar arquivo, arraste e solte ou %{upload_link}" +msgid "Aug" +msgstr "Ago" + +msgid "August" +msgstr "Agosto" + msgid "Authentication Log" msgstr "Log de autenticação" @@ -199,6 +220,9 @@ msgstr "Saiba mais em %{link_to_documentation}" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "Você pode ativar %{link_to_settings} para esse projeto." +msgid "Available" +msgstr "DisponÃvel" + msgid "Billing" msgstr "Cobrança" @@ -218,28 +242,28 @@ msgid "BillingPlans|Downgrade" msgstr "Downgrade" msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}." -msgstr "Aprenda mais sobre cada plano lendo nossa %{faq_link}." +msgstr "Saiba mais sobre cada plano lendo nossa %{faq_link}." msgid "BillingPlans|Manage plan" msgstr "Gerenciar plano" msgid "BillingPlans|Please contact %{customer_support_link} in that case." -msgstr "Por favor contacte o %{customer_support_link} para resolver seu caso." +msgstr "Por favor, entre em contato com %{customer_support_link} para resolver seu caso." msgid "BillingPlans|See all %{plan_name} features" -msgstr "Veja todas as funcionalidades do seu plano %{plan_name}" +msgstr "Veja todas as funcionalidades de %{plan_name}" msgid "BillingPlans|This group uses the plan associated with its parent group." msgstr "Esse grupo utiliza o plano associado ao seu grupo pai." msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}." -msgstr "Para gerenciar o plano para esse grupo, visite a sessão de cobrança de %{parent_billing_page_link}." +msgstr "Para gerenciar o plano desse grupo, visite a sessão de cobrança de %{parent_billing_page_link}." msgid "BillingPlans|Upgrade" -msgstr "Atualizar" +msgstr "Upgrade" msgid "BillingPlans|You are currently on the %{plan_link} plan." -msgstr "Vocês está utilizando o plano %{plan_link}." +msgstr "Você está atualmente no plano %{plan_link}." msgid "BillingPlans|frequently asked questions" msgstr "perguntas frequentes" @@ -264,6 +288,12 @@ msgstr "O branch <strong>%{branch_name}</strong> foi criado. Para configurar o d msgid "Branch has changed" msgstr "Branch foi alterado" +msgid "Branch is already taken" +msgstr "Branch já utilizada" + +msgid "Branch name" +msgstr "Nome da branch" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "Procurar por branches" @@ -325,7 +355,7 @@ msgid "Branches|Sort by" msgstr "Ordernar por" msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." -msgstr "A branch não pode ser atualizada automaticamente porque diverge do seu upstream." +msgstr "O branch não pode ser atualizado automaticamente porque diverge do seu upstream." msgid "Branches|The default branch cannot be deleted" msgstr "A branch padrão não pode ser apagada" @@ -340,13 +370,13 @@ msgid "Branches|To confirm, type %{branch_name_confirmation}:" msgstr "Para confirmar, digite %{branch_name_confirmation}:" msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." -msgstr "Para descartar as mudanças locais e sobrescrever a branch com a versão de upstream, apague-o aqui e escolha 'Atualizar agora', acima." +msgstr "" msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." msgstr "Você irá apagar irreparavelmente a branch protegida '%{branch_name}'." msgid "Branches|diverged from upstream" -msgstr "divergiu do upstream" +msgstr "" msgid "Branches|merged" msgstr "merge realizado" @@ -388,7 +418,7 @@ msgid "Cancel edit" msgstr "Cancelar edição" msgid "Change Weight" -msgstr "Mudar peso" +msgstr "Alterar peso" msgid "ChangeTypeActionLabel|Pick into branch" msgstr "Pick para um branch" @@ -411,6 +441,12 @@ msgstr "Gráficos" msgid "Chat" msgstr "Bate-papo" +msgid "Checking %{text} availability…" +msgstr "Verificando disponibilidade de %{text}…" + +msgid "Checking branch availability..." +msgstr "Verificando disponibilidade de branch..." + msgid "Cherry-pick this commit" msgstr "Cherry-pick esse commit" @@ -418,7 +454,7 @@ msgid "Cherry-pick this merge request" msgstr "Cherry-pick esse merge request" msgid "Choose which groups you wish to replicate to this secondary node. Leave blank to replicate all." -msgstr "Escolha quais os grupos que você deseja replicar para este nó secundário. Deixe em branco para replicar todos." +msgstr "Escolha quais grupos você deseja replicar para este nó secundário. Deixe em branco para replicar tudo." msgid "CiStatusLabel|canceled" msgstr "cancelado" @@ -486,8 +522,41 @@ msgstr "Fechar" msgid "Cluster" msgstr "Cluster" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" -msgstr "Um %{link_to_container_project} deve ter sido criado com essa conta" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "%{appList} foi instalado no seu cluster" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "%{boldNotice} isso irá adicionar recursos extras como balanceamento de carga, que acarretará em custos adicionais. Veja %{pricingLink}" + +msgid "ClusterIntegration|API URL" +msgstr "API URL" + +msgid "ClusterIntegration|Active" +msgstr "Ativo" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "Adicionar um cluster existente" + +msgid "ClusterIntegration|Add cluster" +msgstr "Adicionar cluster" + +msgid "ClusterIntegration|All" +msgstr "Tudo" + +msgid "ClusterIntegration|Applications" +msgstr "Aplicações" + +msgid "ClusterIntegration|CA Certificate" +msgstr "Certificado CA" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "Pacote de autoridade certificadora (Formato PEM)" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "Escolher como configurar a integração de cluster" + +msgid "ClusterIntegration|Cluster" +msgstr "Cluster" msgid "ClusterIntegration|Cluster details" msgstr "Detalhes do cluster" @@ -505,56 +574,137 @@ msgid "ClusterIntegration|Cluster integration is enabled for this project. Disab msgstr "Integração do cluster está ativada para esse projeto. Desabilitar a integração não afetará seu cluster, mas desligará temporariamente a conexão do Gitlab com ele." msgid "ClusterIntegration|Cluster is being created on Google Kubernetes Engine..." -msgstr "O cluster está sendo criado no Google Kubernetes Engine..." +msgstr "O Cluster está sendo criado no Google Kubernetes Engine..." msgid "ClusterIntegration|Cluster name" msgstr "Nome do cluster" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" -msgstr "O cluster foi criado com sucesso no Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "Clusters permitem que você utilize review apps, faça deploy de suas aplicações, rode pipelines, e muito mais de um jeito simples. %{link_to_help_page}" + +msgid "ClusterIntegration|Copy API URL" +msgstr "Copiar URL da API" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "Copiar certificado CA" + +msgid "ClusterIntegration|Copy Token" +msgstr "Copiar token" msgid "ClusterIntegration|Copy cluster name" msgstr "Copiar nome do cluster" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "Criar um novo cluster do Google Engine pelo GitLab" + msgid "ClusterIntegration|Create cluster" msgstr "Criar cluster" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" -msgstr "Criar novo cluster no Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" +msgstr "Criar no GKE" msgid "ClusterIntegration|Enable cluster integration" msgstr "Ativar integração com o cluster" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "Insira os detalhes para o cluster Kubernetes existente" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "Insira os detalhes para seu cluster" + +msgid "ClusterIntegration|Environment pattern" +msgstr "Padrão de ambiente" + +msgid "ClusterIntegration|GKE pricing" +msgstr "Preços do GKE" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "Gitlab Runner" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "ID do projeto no Google Cloud Platform" msgid "ClusterIntegration|Google Kubernetes Engine" -msgstr "Google Kubernetes Engine" +msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" -msgstr "Projeto no Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Helm Tiller" +msgstr "Helm Tiller" + +msgid "ClusterIntegration|Inactive" +msgstr "Inativo" + +msgid "ClusterIntegration|Ingress" +msgstr "Ingressar" + +msgid "ClusterIntegration|Install" +msgstr "Instalar" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "Instalar aplicações no seu cluster. Leia mais em %{helpLink}" + +msgid "ClusterIntegration|Installed" +msgstr "Instalado" + +msgid "ClusterIntegration|Installing" +msgstr "Instalando" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "Integrar cluster de automação" msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "Leia mais sobre %{link_to_documentation}" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "Ler mais sobre clusters" + msgid "ClusterIntegration|Machine type" msgstr "Tipo de máquina" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "Confira se sua conta %{link_to_requirements} para criar clusters" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" -msgstr "Gerenciar integração de cluster com o projeto no GitLab" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" +msgstr "Gerenciar cluster de integração no projeto do GitLab" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "Gerencie seu cluster visitando %{link_gke}" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "Múltiplos clusters estão disponÃveis no GitLab Enterprise Premium e Ultimate" + +msgid "ClusterIntegration|Note:" +msgstr "Nota:" + msgid "ClusterIntegration|Number of nodes" msgstr "Número de nós" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "Por favor, insira informações de acesso para seu cluster. Se precisar de ajuda, você pode ler %{link_to_help_page} em cluster" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "Por favor, tenha certeza que sua conta no Google cumpre com os requisitos:" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "Problema ao configurar o cluster" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "Problema ao configurar a lista de cluster" + +msgid "ClusterIntegration|Project ID" +msgstr "ID do projeto" + +msgid "ClusterIntegration|Project namespace" +msgstr "Namespace do projeto" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "Namespace do projeto (opcional, único)" @@ -567,8 +717,14 @@ msgstr "Remover integração com cluster" msgid "ClusterIntegration|Remove integration" msgstr "Remover integração" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." -msgstr "Remover integração com o cluster irá apagar a configuração de cluster que você adicionou à esse projeto. Não excluirá seu projeto." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "Solicitação para inÃcio de instalação falhou" + +msgid "ClusterIntegration|Save changes" +msgstr "Salvar alterações" msgid "ClusterIntegration|See and edit the details for your cluster" msgstr "Ver e editar os detalhes para seu cluster" @@ -582,33 +738,57 @@ msgstr "Ver seus projetos" msgid "ClusterIntegration|See zones" msgstr "Ver zonas" +msgid "ClusterIntegration|Service token" +msgstr "Token de serviço" + +msgid "ClusterIntegration|Show" +msgstr "Mostrar" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "Alguma coisa deu errado do nosso lado." msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" -msgstr "Algo deu errado ao criar seu cluster no Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "Algo deu errado ao instalar %{title}" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "Não há clusters para mostrar" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "Essa conta precisa de permissão para criar um cluster no %{link_to_container_project} especificado." msgid "ClusterIntegration|Toggle Cluster" msgstr "Alternar cluster" +msgid "ClusterIntegration|Token" +msgstr "Token" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "Com um cluster associado à esse projeto, você pode usar revisão de apps, fazer deploy de suas aplicações, rodar suas pipelines e muito mais de um jeito simples." msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" -msgstr "Sua conta precisa ter %{link_to_kubernetes_engine}" +msgstr "" msgid "ClusterIntegration|Zone" msgstr "Zona" msgid "ClusterIntegration|access to Google Kubernetes Engine" -msgstr "Acesso ao Google Kubernetes Engine" +msgstr "" msgid "ClusterIntegration|cluster" msgstr "cluster" +msgid "ClusterIntegration|documentation" +msgstr "documentação" + msgid "ClusterIntegration|help page" msgstr "ajuda" +msgid "ClusterIntegration|installing applications" +msgstr "Instalando aplicações" + msgid "ClusterIntegration|meets the requirements" msgstr "atende aos requisitos" @@ -623,11 +803,6 @@ msgid_plural "Commits" msgstr[0] "Commit" msgstr[1] "Commits" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "Commit %d arquivo" -msgstr[1] "Commit %d arquivos" - msgid "Commit Message" msgstr "Mensagem de Commit" @@ -709,14 +884,23 @@ msgstr "Guia de contribuição" msgid "Contributors" msgstr "Contribuidores" +msgid "ContributorsPage|Building repository graph." +msgstr "Gerando gráfico do repositório." + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "Commits à %{branch_name}, excluindo commits de merge. Limitado à 6000 commits." + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "Por favor, espere um momento, essa página será atualizada automaticamente." + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" -msgstr "Controle a concorrência máxima de LFS/preenchimento de anexos para o nó secundário" +msgstr "" msgid "Control the maximum concurrency of repository backfill for this secondary node" -msgstr "Controle a concorrência máxima de preenchimento de repositórios para o nó secundário" +msgstr "" msgid "Copy SSH public key to clipboard" -msgstr "Copiar chave SSH pública para área de transferência" +msgstr "" msgid "Copy URL to clipboard" msgstr "Copiar URL para área de transferência" @@ -736,6 +920,9 @@ msgstr "Criar diretório" msgid "Create empty bare repository" msgstr "Criar repositório bruto vazio" +msgid "Create epic" +msgstr "Criar épico" + msgid "Create file" msgstr "Criar arquivo" @@ -763,6 +950,9 @@ msgstr "Tag" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "criar um token de acesso pessoal" +msgid "Creating epic" +msgstr "Criando épico" + msgid "Cron Timezone" msgstr "Fuso horário do cron" @@ -808,6 +998,12 @@ msgstr "Todos" msgid "DashboardProjects|Personal" msgstr "Pessoal" +msgid "Dec" +msgstr "Dez" + +msgid "December" +msgstr "Dezembro" + msgid "Define a custom pattern with cron syntax" msgstr "Defina um padrão personalizado utilizando a sintaxe do cron" @@ -826,7 +1022,7 @@ msgid "Description" msgstr "Descrição" msgid "Description templates allow you to define context-specific templates for issue and merge request description fields for your project." -msgstr "Modelos de descrição permitem que você defina modelos de contextos especÃficos para issue e descrição de merge requests para seu projeto." +msgstr "Modelos de descrição permitem que você defina modelos de contextos especÃficos para issue e campos de descrição de merge requests para seu projeto." msgid "Details" msgstr "Detalhes" @@ -882,6 +1078,72 @@ msgstr "Alterar Agendamento do Pipeline %{id}" msgid "Emails" msgstr "Emails" +msgid "Environments|An error occurred while fetching the environments." +msgstr "Um erro ocorreu ao recuperar ambientes." + +msgid "Environments|An error occurred while making the request." +msgstr "Um erro ocorreu ao fazer a requisição." + +msgid "Environments|Commit" +msgstr "Commit" + +msgid "Environments|Deployment" +msgstr "Deploy" + +msgid "Environments|Environment" +msgstr "Ambiente" + +msgid "Environments|Environments" +msgstr "Ambientes" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "Ambientes são lugares onde códigos são implantados (deploy), como homologação ou produção." + +msgid "Environments|Job" +msgstr "Job" + +msgid "Environments|New environment" +msgstr "Novo ambiente" + +msgid "Environments|No deployments yet" +msgstr "Nenhum deploy" + +msgid "Environments|Open" +msgstr "Abrir" + +msgid "Environments|Re-deploy" +msgstr "Refazer" + +msgid "Environments|Read more about environments" +msgstr "Ler mais sobre ambiente" + +msgid "Environments|Rollback" +msgstr "Rollback" + +msgid "Environments|Show all" +msgstr "Mostrar tudo" + +msgid "Environments|Updated" +msgstr "Atualizado" + +msgid "Environments|You don't have any environments right now." +msgstr "Você não tem nenhum ambiente." + +msgid "Epic will be removed! Are you sure?" +msgstr "Épico será removido! Tem certeza?" + +msgid "Epics" +msgstr "Épicos" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "Epics permite que você gerencie seu portfólio de projetos de forma mais eficiente e com menos esforço" + +msgid "Error creating epic" +msgstr "Erro ao criar épico" + +msgid "Error occurred when toggling the notification subscription" +msgstr "Erro ao alterar configuração de notificação de assinatura" + msgid "EventFilterBy|Filter by all" msgstr "EventFilterBy|Filtrar por tudo" @@ -921,6 +1183,12 @@ msgstr "Erro ao alterar o proprietário" msgid "Failed to remove the pipeline schedule" msgstr "Erro ao excluir o agendamento do pipeline" +msgid "Feb" +msgstr "Fev" + +msgid "February" +msgstr "Fevereiro" + msgid "File name" msgstr "Nome do arquivo" @@ -968,17 +1236,32 @@ msgstr "Chaves GPG" msgid "Geo Nodes" msgstr "Nós de geo" +msgid "GeoNodeSyncStatus|Failed" +msgstr "Falhou" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "Nó está falhando ou quebrado." + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "Nó está lento, sobrecarregado, ou acabou de recuperar após uma interrupção." + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "Sem sincronia" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "Sincronizado" + msgid "Geo|File sync capacity" -msgstr "Capacidade de sincronização de arquivo" +msgstr "Capacidade de sincronização de arquivos" msgid "Geo|Groups to replicate" -msgstr "Grupos para replicar" +msgstr "Grupos para replicação" msgid "Geo|Repository sync capacity" -msgstr "Capacidade de sincronização de repositório" +msgstr "Capacidade de sincronização do repositório" msgid "Geo|Select groups to replicate." -msgstr "Selecione grupos para replicar." +msgstr "" msgid "Git storage health information has been reset" msgstr "Informações sobre o status de saúde do storage Git foram reiniciadas" @@ -1031,9 +1314,6 @@ msgstr "Nenhum grupo encontrado" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "Você pode gerenciar permissões de membros e acesso do seu grupo para cada projeto no grupo." -msgid "GroupsTreeRole|as" -msgstr "como" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "Você tem certeza que deseja sair do grupo \"${this.group.fullName}\"?" @@ -1064,6 +1344,9 @@ msgstr "Desculpe, nenhum grupo corresponde à sua pesquisa" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "Desculpe, nenhum grupo ou projeto correspondem à sua pesquisa" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "Status de Saúde" @@ -1092,21 +1375,21 @@ msgid "Import repository" msgstr "Importar repositório" msgid "Improve Issue boards with GitLab Enterprise Edition." -msgstr "Melhorar issue boards com o GitLab Enterprise Edition." +msgstr "" msgid "Improve issues management with Issue weight and GitLab Enterprise Edition." -msgstr "Melhore gestão das issues com os pesos no GitLab Enterprise Edition." +msgstr "" msgid "Improve search with Advanced Global Search and GitLab Enterprise Edition." -msgstr "Encontre o que precisa mais facilmente com a pesquisa global avançada com GitLab Enterprise Edition." +msgstr "" msgid "Install a Runner compatible with GitLab CI" msgstr "Instalar um Runner compatÃvel com o GitLab CI" msgid "Instance" msgid_plural "Instances" -msgstr[0] "Instância" -msgstr[1] "Instâncias" +msgstr[0] "" +msgstr[1] "" msgid "Internal - The group and any internal projects can be viewed by any logged in user." msgstr "Interno - O grupo e projetos internos podem ser visualizados por qualquer usuário autenticado." @@ -1121,10 +1404,7 @@ msgid "Introducing Cycle Analytics" msgstr "Apresentando a Análise de Ciclo" msgid "Issue board focus mode" -msgstr "Modo de foco no issue board" - -msgid "Issue boards with milestones" -msgstr "Issue board com milestone" +msgstr "" msgid "Issue events" msgstr "Eventos de issue" @@ -1133,11 +1413,29 @@ msgid "IssueBoards|Board" msgstr "Board" msgid "IssueBoards|Boards" -msgstr "Boards" +msgstr "" msgid "Issues" msgstr "Issues" +msgid "Jan" +msgstr "Jan" + +msgid "January" +msgstr "Janeiro" + +msgid "Jul" +msgstr "Jul" + +msgid "July" +msgstr "Julho" + +msgid "Jun" +msgstr "Jun" + +msgid "June" +msgstr "Junho" + msgid "LFSStatus|Disabled" msgstr "Desabilitado" @@ -1192,7 +1490,7 @@ msgid "Leave project" msgstr "Sair do projeto" msgid "License" -msgstr "Licença" +msgstr "" msgid "Limited to showing %d event at most" msgid_plural "Limited to showing %d events at most" @@ -1206,14 +1504,23 @@ msgid "Locked" msgstr "Bloqueado" msgid "Locked Files" -msgstr "Arquivos bloqueados" +msgstr "" msgid "Login" msgstr "Entrar" +msgid "Mar" +msgstr "Mar" + +msgid "March" +msgstr "Março" + msgid "Maximum git storage failures" msgstr "Máximo de falhas do git storage" +msgid "May" +msgstr "Mai" + msgid "Median" msgstr "Mediana" @@ -1242,7 +1549,7 @@ msgid "More information is available|here" msgstr "Mais informações estão disponÃveis|aqui" msgid "Multiple issue boards" -msgstr "Múltiplos issue boards" +msgstr "" msgid "New Cluster" msgstr "Novo cluster" @@ -1258,9 +1565,15 @@ msgstr "Novo Agendamento de Pipeline" msgid "New branch" msgstr "Novo branch" +msgid "New branch unavailable" +msgstr "Novo branch indisponÃvel" + msgid "New directory" msgstr "Novo diretório" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "Novo arquivo" @@ -1297,6 +1610,9 @@ msgstr "Nenhum repositório" msgid "No schedules" msgstr "Nenhum agendamento" +msgid "No time spent" +msgstr "Nenhum tempo gasto" + msgid "None" msgstr "Nenhum" @@ -1363,18 +1679,33 @@ msgstr "Observar" msgid "Notifications" msgstr "Notificações" +msgid "Nov" +msgstr "Nov" + +msgid "November" +msgstr "Novembro" + msgid "Number of access attempts" msgstr "Número de tentativas de acesso" msgid "Number of failures before backing off" msgstr "Número de falhas antes de reverter" +msgid "Oct" +msgstr "Out" + +msgid "October" +msgstr "Outubro" + msgid "OfSearchInADropdown|Filter" msgstr "Filtrar" msgid "Only project members can comment." msgstr "Somente membros do projeto podem comentar." +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "Aberto" @@ -1421,7 +1752,7 @@ msgid "Pipeline Schedules" msgstr "Agendamentos da Pipeline" msgid "Pipeline quota" -msgstr "Cota de pipeline" +msgstr "" msgid "PipelineCharts|Failed:" msgstr "Falhou:" @@ -1507,6 +1838,9 @@ msgstr "com etapa" msgid "Pipeline|with stages" msgstr "com etapas" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "Preferências" @@ -1610,22 +1944,28 @@ msgid "ProjectNetworkGraph|Graph" msgstr "Ãrvore" msgid "ProjectSettings|Contact an admin to change this setting." -msgstr "Fale com um administrador para mudar essa configuração." +msgstr "" + +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "Rodar pipeline na branch default imediatamente" msgid "ProjectSettings|Only signed commits can be pushed to this repository." -msgstr "Esse repositório só aceita push de commits assinados." +msgstr "" + +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "Problema ao definir configurações de CI/CD Javascript" msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." -msgstr "Essa configuração está aplicada à nivel de servidor e pode ser sobrescrita por um adminstrador." +msgstr "" msgid "ProjectSettings|This setting is applied on the server level but has been overridden for this project." -msgstr "Essa configuração está aplicada à nivel de servidor mas pode ser sobrescrita para esse projeto." +msgstr "" msgid "ProjectSettings|This setting will be applied to all projects unless overridden by an admin." -msgstr "Essa configuração será aplicada à todos os projetos, a não ser que sejam sobrescritos pelo administrador." +msgstr "" msgid "ProjectSettings|Users can only push commits to this repository that were committed with one of their own verified emails." -msgstr "Nesse repositório, usuários só podem fazer push de commits verificados pelos seus e-mails." +msgstr "" msgid "Projects" msgstr "Projetos" @@ -1651,6 +1991,39 @@ msgstr "Desculpe, nenhum projeto corresponde a sua pesquisa" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "Esta funcionalidade necessita de suporte à localStorage do navegador" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "Por padrão, Prometheus escuta em 'http://localhost:9090'. Não é recomendado mudar o endereço padrão e sua porta, porque pode conflitar com outros serviços que estão executando no sevidor do Gitlab." + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "Encontrando e configurando métricas..." + +msgid "PrometheusService|Metrics" +msgstr "Métricas" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "Métricas são automaticamente configuradas e monitoradas baseadas na biblioteca de métricas de exportadores populares." + +msgid "PrometheusService|Missing environment variable" +msgstr "Variável de ambiente ausente" + +msgid "PrometheusService|Monitored" +msgstr "Monitorado" + +msgid "PrometheusService|More information" +msgstr "Mais informações" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "Nenhuma métrica está sendo monitorada. Para inicar o monitoramento, faça deploy em um ambiente." + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "URL da API base do Prometheus. como http://prometheus.example.com/" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "Monitoramento com Prometheus" + +msgid "PrometheusService|View environments" +msgstr "Ver ambientes" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "Público - O grupo e seus projetos podem ser visualizados por todos sem autenticação." @@ -1658,13 +2031,13 @@ msgid "Public - The project can be accessed without any authentication." msgstr "Público - O projeto pode ser acessado sem nenhuma autenticação." msgid "Push Rules" -msgstr "Regras de push" +msgstr "" msgid "Push events" msgstr "Eventos de push" msgid "PushRule|Committer restriction" -msgstr "Restrição de commit" +msgstr "" msgid "Read more" msgstr "Leia mais" @@ -1679,7 +2052,7 @@ msgid "RefSwitcher|Tags" msgstr "Tags" msgid "Registry" -msgstr "Registry" +msgstr "Registro" msgid "Related Commits" msgstr "Commits Relacionados" @@ -1747,6 +2120,9 @@ msgstr "Agendamentos" msgid "Scheduling Pipelines" msgstr "Agendando pipelines" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "Procurar branch e tags" @@ -1768,6 +2144,12 @@ msgstr "Selecionar fuso horário" msgid "Select target branch" msgstr "Selecionar branch de destino" +msgid "Sep" +msgstr "Set" + +msgid "September" +msgstr "Setembro" + msgid "Service Templates" msgstr "Modelos de serviço" @@ -1800,14 +2182,29 @@ msgid_plural "Showing %d events" msgstr[0] "Mostrando %d evento" msgstr[1] "Mostrando %d eventos" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "Snippets" msgid "Something went wrong on our end." msgstr "Algo deu errado do nosso lado." -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" -msgstr "Algo deu errado ao tentar mudar o estado de bloqueio de ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" +msgstr "Algo deu errado ao tentar mudar o estado de ${this.issuableDisplayName}" msgid "Something went wrong while fetching the projects." msgstr "Algo deu errado ao recuperar os projetos." @@ -1858,7 +2255,7 @@ msgid "SortOptions|Least popular" msgstr "Menos populares" msgid "SortOptions|Less weight" -msgstr "Menor peso" +msgstr "" msgid "SortOptions|Milestone" msgstr "Milestone" @@ -1870,7 +2267,7 @@ msgid "SortOptions|Milestone due soon" msgstr "Milestone de fim mais próximo" msgid "SortOptions|More weight" -msgstr "Mais peso" +msgstr "" msgid "SortOptions|Most popular" msgstr "Mais populares" @@ -1912,11 +2309,17 @@ msgid "SortOptions|Start soon" msgstr "Iniciar mais próximo" msgid "SortOptions|Weight" -msgstr "Peso" +msgstr "" + +msgid "Source" +msgstr "Origem" msgid "Source code" msgstr "Código-fonte" +msgid "Source is not available" +msgstr "Origem não está disponÃvel" + msgid "Spam Logs" msgstr "Logs de spam" @@ -1935,6 +2338,9 @@ msgstr "Iniciar um %{new_merge_request} a partir dessas alterações" msgid "Start the Runner!" msgstr "Inicie o Runner!" +msgid "Stopped" +msgstr "Parado" + msgid "Subgroups" msgstr "Subgrupos" @@ -1955,6 +2361,75 @@ msgstr[1] "Tags" msgid "Tags" msgstr "Tags" +msgid "TagsPage|Browse commits" +msgstr "Navegar nos commits" + +msgid "TagsPage|Browse files" +msgstr "Navegar nos arquivos" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "Não foi possÃvel encontrar o commit HEAD para esse tag" + +msgid "TagsPage|Cancel" +msgstr "Cancelar" + +msgid "TagsPage|Create tag" +msgstr "Criar tag" + +msgid "TagsPage|Delete tag" +msgstr "Apagar tag" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "Apagar a tag %{tag_name} é uma ação destrutiva e irreversÃvel. Tem certeza?" + +msgid "TagsPage|Edit release notes" +msgstr "Editar o release notes" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "Nome de branch, tag ou SHA do commit existente" + +msgid "TagsPage|Filter by tag name" +msgstr "Filtrar tag por nome" + +msgid "TagsPage|New Tag" +msgstr "Novo tag" + +msgid "TagsPage|New tag" +msgstr "Novo tag" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "Opcionalmente, adicionar a mensagem à essa tag." + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "Opcionalmente, adicionar release notes à tag. Eles serão armazenados no banco de dados do GitLab e mostrado na página de tags." + +msgid "TagsPage|Release notes" +msgstr "Release notes" + +msgid "TagsPage|Repository has no tags yet." +msgstr "Repositório ainda não tem tags." + +msgid "TagsPage|Sort by" +msgstr "Ordenar por" + +msgid "TagsPage|Tags" +msgstr "Tags" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "Tags dão capacidade de marcar pontos especÃficos na história como sendo importantes" + +msgid "TagsPage|This tag has no release notes." +msgstr "Essa tag não tem release notes." + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "Use o comando \"git tag\" para adiciona uma nova tag:" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "Escreve seu release notes ou arraste o arquivo aqui..." + +msgid "TagsPage|protected" +msgstr "protegido" + msgid "Target Branch" msgstr "Branch de destino" @@ -1962,10 +2437,10 @@ msgid "Team" msgstr "Equipe" msgid "Thanks! Don't show me this again" -msgstr "Obrigado! Não mostrar novamente" +msgstr "" msgid "The Advanced Global Search in GitLab is a powerful search service that saves you time. Instead of creating duplicate code and wasting time, you can now search for code within other teams that can help your own project." -msgstr "A pesquisa global avançado no GitLab é um serviço poderoso de pesquisa que poupa seu tempo. Ao invés de criar código duplicado e perder seu tempo, você pode agora pesquisar por código de outros times que podem ajudar no seu próprio projeto." +msgstr "" msgid "The circuitbreaker backoff threshold should be lower than the failure count threshold" msgstr "O limite do recuso do circuitbreaker deve ser inferior ao limite de contagem de falhas" @@ -2036,6 +2511,9 @@ msgstr "O valor situado no ponto médio de uma série de valores observados. Ex. msgid "There are problems accessing Git storage: " msgstr "Há problemas para acessar o storage Git: " +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "Esse branch mudou desde quando você começou sua edição. Você quer criar um novo branch?" @@ -2057,6 +2535,9 @@ msgstr "Isto significa que você não pode entregar código até que crie um rep msgid "This merge request is locked." msgstr "Esse merge request está bloqueado." +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "Tempo até que uma issue seja agendada" @@ -2205,14 +2686,26 @@ msgstr[1] "mins" msgid "Time|s" msgstr "s" +msgid "Title" +msgstr "TÃtulo" + msgid "Total Time" msgstr "Tempo Total" +msgid "Total issue time spent" +msgstr "Tempo total gasto" + msgid "Total test time for all commits/merges" msgstr "Tempo de teste total para todos os commits/merges" msgid "Track activity with Contribution Analytics." -msgstr "Acompanhar atividade com o Contribution Analytics." +msgstr "Acompanhe a atividade com o Contribution Analytics." + +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "Acompanhe grupos de questões que compartilhem um tema, em projetos e milestones" + +msgid "Turn on Service Desk" +msgstr "Ativar Service Desk" msgid "Unlock" msgstr "Desbloquear" @@ -2227,13 +2720,13 @@ msgid "Unsubscribe" msgstr "Desassinar" msgid "Upgrade your plan to activate Advanced Global Search." -msgstr "Atualize seu plano para ativar a pesquisa global avançada." +msgstr "Atualize seu plano para ativar a Pesquisa Global Avançada." msgid "Upgrade your plan to activate Contribution Analytics." msgstr "Atualize seu plano para ativar o Contribution Analytics." msgid "Upgrade your plan to activate Group Webhooks." -msgstr "Atualize seu plano para ativar Webhooks de grupo." +msgstr "Atualize seu plano para ativar Webhooks do grupo." msgid "Upgrade your plan to activate Issue weight." msgstr "Atualize seu plano para ativar peso nas issues." @@ -2250,6 +2743,9 @@ msgstr "Enviar arquivo" msgid "UploadLink|click to upload" msgstr "clique para fazer upload" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "Use o Service Desk para se conectar com seus usuários (por exemplo, para oferecer suporte ao cliente) por email dentro do GitLab" + msgid "Use the following registration token during setup:" msgstr "Use o seguinte token de registro durante a configuração:" @@ -2283,8 +2779,11 @@ msgstr "Precisa visualizar os dados? Solicite acesso ao administrador." msgid "We don't have enough data to show this stage." msgstr "Esta etapa não possui dados suficientes para exibição." +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "Queremos ter certeza de que é você, confirme que você não é um robô." + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." -msgstr "Webhooks permitem que você acione uma URL se, por exemplo, um novo código for feito push ou uma nova issue criada. Você pode configurar os webhooks para escutar eventos especÃficos como push, issue ou merge request. Webhooks de grupo aplicarão para todos os projetos no grupo, permitindo você padronizar o funcionamento em todo o grupo." +msgstr "Webhooks permitem que você acione uma URL se, por exemplo, quando um novo código for feito push ou uma nova issue criada. Você pode configurar os webhooks para escutar eventos especÃficos como push, issue ou merge request. Webhooks de grupo aplicarão para todos os projetos no grupo, permitindo você padronizar o funcionamento em todo o grupo." msgid "Weight" msgstr "Peso" @@ -2395,7 +2894,7 @@ msgid "Wiki|Wiki Pages" msgstr "Páginas Wiki" msgid "With contribution analytics you can have an overview for the activity of issues, merge requests and push events of your organization and its members." -msgstr "Com o contribution analytics você pode ter uma visão geral da atividade em issue, merge request e evento de push para sua organização e seus membros." +msgstr "Com a análise de contribuição, você pode ter uma visão geral da atividade de issues, merge requests e eventos push de sua organização e seus membros." msgid "Withdraw Access Request" msgstr "Remover Requisição de Acesso" @@ -2412,12 +2911,6 @@ msgstr "Você está prestes a remover a relação de fork do projeto original %{ msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "Você irá transferir %{project_name_with_namespace} para outro proprietário. Tem certeza ABSOLUTA?" -msgid "You are on a read-only GitLab instance." -msgstr "Você está em uma instância somente-leitura do GitLab." - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "Você está em uma instância somente-leitura do GitLab. Se você quiser fazer qualquer alteração visite %{link_to_primary_node}." - msgid "You can only add files when you are on a branch" msgstr "Você somente pode adicionar arquivos quando estiver em um branch" @@ -2457,6 +2950,9 @@ msgstr "Você não poderá fazer pull ou push via %{protocol} até que %{set_pas msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "Você não conseguirá fazer pull ou push no projeto via SSH até que adicione %{add_ssh_key_link} ao seu perfil" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "Você não poderá fazer push ou pull do código via SSH enquanto não adicionar sua chave SSH no seu perfil" + msgid "Your comment will not be visible to the public." msgstr "Seu comentário não estará visÃvel ao público." @@ -2469,6 +2965,12 @@ msgstr "Seu nome" msgid "Your projects" msgstr "Seus projetos" +msgid "branch name" +msgstr "nome da branch" + +msgid "by" +msgstr "por" + msgid "commit" msgstr "commit" @@ -2494,6 +2996,9 @@ msgstr "senha" msgid "personal access token" msgstr "token de acesso pessoal" +msgid "source" +msgstr "origem" + msgid "to help your contributors communicate effectively!" msgstr "para ajudar seus contribuintes à se comunicar de maneira eficaz!" diff --git a/locale/ru/gitlab.po b/locale/ru/gitlab.po index b25a5d1e75b..898d55e7d4e 100644 --- a/locale/ru/gitlab.po +++ b/locale/ru/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-17 07:55-0500\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:40-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -61,6 +61,9 @@ msgstr[0] "%{storage_name}: Ð½ÐµÑƒÐ´Ð°Ñ‡Ð½Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° доÑтупа к msgstr[1] "%{storage_name}: %{failed_attempts} - неудачные попытки доÑтупа к хранилищу:" msgstr[2] "%{storage_name}: %{failed_attempts} - неудачные попытки доÑтупа к хранилищу:" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "(перейдите по ÑÑылке %{link} Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ об уÑтановке)." @@ -107,7 +110,7 @@ msgid "Activity" msgstr "ÐктивноÑÑ‚ÑŒ" msgid "Add" -msgstr "Добавить" +msgstr "" msgid "Add Changelog" msgstr "Добавить Журнал Изменений" @@ -116,14 +119,11 @@ msgid "Add Contribution guide" msgstr "Добавить РуководÑтво учаÑтника" msgid "Add Group Webhooks and GitLab Enterprise Edition." -msgstr "Добавить групповые веб-обработчики и GitLab Enterprise Edition." +msgstr "" msgid "Add License" msgstr "Добавить Лицензию" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "Добавьте ключ SSH в Ñвой профиль, чтобы отправлÑÑ‚ÑŒ или получать код через SSH." - msgid "Add new directory" msgstr "Добавить новый каталог" @@ -136,6 +136,15 @@ msgstr "РаÑширенные наÑтройки" msgid "All" msgstr "Ð’Ñе" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "Произошла ошибка. ПожалуйÑта, попробуйте Ñнова." @@ -145,6 +154,12 @@ msgstr "Оформление" msgid "Applications" msgstr "ПриложениÑ" +msgid "Apr" +msgstr "Ðпр." + +msgid "April" +msgstr "Ðпрель" + msgid "Archived project! Repository is read-only" msgstr "Ðрхивный проект! Репозиторий доÑтупен только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" @@ -172,6 +187,12 @@ msgstr "Ðртефакты" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "Приложить файл через drag & drop или %{upload_link}" +msgid "Aug" +msgstr "Ðвг." + +msgid "August" +msgstr "ÐвгуÑÑ‚" + msgid "Authentication Log" msgstr "Журнал аутентификации" @@ -191,7 +212,7 @@ msgid "AutoDevOps|Auto DevOps (Beta)" msgstr "Auto DevOps (бета)" msgid "AutoDevOps|Auto DevOps documentation" -msgstr "" +msgstr "Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾ Auto DevOps" msgid "AutoDevOps|Enable in settings" msgstr "Включить в наÑтройках" @@ -205,14 +226,17 @@ msgstr "Подробнее по ÑÑылке %{link_to_documentation}" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "Ð’Ñ‹ можете активировать %{link_to_settings} Ð´Ð»Ñ Ñтого проекта." +msgid "Available" +msgstr "" + msgid "Billing" -msgstr "Тариф" +msgstr "" msgid "BillingPlans|%{group_name} is currently on the %{plan_link} plan." msgstr "%{group_name} иÑпользует тарифный план %{plan_link}." msgid "BillingPlans|Automatic downgrade and upgrade to some plans is currently not available." -msgstr "ÐвтоматичеÑкое повышение или понижение недоÑтупно Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… тарифных планов в наÑтоÑщее времÑ." +msgstr "Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкое повышение или понижение недоÑтупно Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… тарифных планов." msgid "BillingPlans|Current plan" msgstr "Текущий тарифный план" @@ -221,10 +245,10 @@ msgid "BillingPlans|Customer Support" msgstr "Поддержка Клиентов" msgid "BillingPlans|Downgrade" -msgstr "Понижение" +msgstr "Понизить" msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}." -msgstr "Узнайте больше о каждом тарифном плане прочитав наш %{faq_link}." +msgstr "Узнайте больше о каждом тарифном плане, прочитав нашу Ñтраницу %{faq_link}." msgid "BillingPlans|Manage plan" msgstr "Управление тарифным планом" @@ -236,19 +260,19 @@ msgid "BillingPlans|See all %{plan_name} features" msgstr "ПоÑмотреть возможноÑти %{plan_name} полноÑтью" msgid "BillingPlans|This group uses the plan associated with its parent group." -msgstr "Ðта группа иÑпользует тарифный план ÑвÑзанный Ñ Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÑкой группой." +msgstr "Ðта группа иÑпользует тарифный план, ÑвÑзанный Ñ Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÑкой группой." msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}." msgstr "Ð”Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð°Ñ€Ð¸Ñ„Ð½Ñ‹Ð¼ планом Ñтой группы поÑетите раздел тарификации %{parent_billing_page_link}." msgid "BillingPlans|Upgrade" -msgstr "Повышение" +msgstr "ПовыÑить" msgid "BillingPlans|You are currently on the %{plan_link} plan." msgstr "Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹ иÑпользуете тарифный план %{plan_link}." msgid "BillingPlans|frequently asked questions" -msgstr "ЧаÑто задаваемые вопроÑÑ‹" +msgstr "чаÑто задаваемых вопроÑов" msgid "BillingPlans|monthly" msgstr "ежемеÑÑчно" @@ -271,6 +295,12 @@ msgstr "Ветка <strong>%{branch_name}</strong> Ñоздана. Ð”Ð»Ñ Ð½Ð°Ñ msgid "Branch has changed" msgstr "Ветка была изменена" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "ПоиÑк веток" @@ -332,7 +362,7 @@ msgid "Branches|Sort by" msgstr "Сортировать по" msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." -msgstr "Ветка не может быть обновлена автоматичеÑки, потому что она имеет раÑÑ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ñ ÐµÑ‘ двойником в родительÑком репозитории." +msgstr "" msgid "Branches|The default branch cannot be deleted" msgstr "Ветка \"по умолчанию\" не может быть удалена" @@ -347,13 +377,13 @@ msgid "Branches|To confirm, type %{branch_name_confirmation}:" msgstr "Ð”Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ, введите %{branch_name_confirmation}:" msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." -msgstr "Чтобы отменить локальные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ перезапиÑать ветку верÑией из родительÑкого репозиториÑ, удалите её здеÑÑŒ и выберите \"Обновить ÑейчаÑ\" выше." +msgstr "" msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." msgstr "Ð’Ñ‹ ÑобираетеÑÑŒ безвозвратно удалить защищённую ветку %{branch_name}." msgid "Branches|diverged from upstream" -msgstr "раÑходÑÑ‚ÑÑ Ñ Ñ€Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÑким репозиторием" +msgstr "" msgid "Branches|merged" msgstr "влита" @@ -395,7 +425,7 @@ msgid "Cancel edit" msgstr "Отменить редактирование" msgid "Change Weight" -msgstr "Изменить ВеÑ" +msgstr "" msgid "ChangeTypeActionLabel|Pick into branch" msgstr "Выбрать в ветке" @@ -418,6 +448,12 @@ msgstr "Диаграммы" msgid "Chat" msgstr "Чат" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "Подобрать в Ñтом коммите" @@ -425,7 +461,7 @@ msgid "Cherry-pick this merge request" msgstr "Подобрать Ñтот Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние" msgid "Choose which groups you wish to replicate to this secondary node. Leave blank to replicate all." -msgstr "Выберите группы, которые хотите Ñкопировать на вторичный узел. ОÑтавьте пуÑтым Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ вÑего." +msgstr "" msgid "CiStatusLabel|canceled" msgstr "отменено" @@ -488,13 +524,46 @@ msgid "Clone repository" msgstr "Клонировать репозиторий" msgid "Close" -msgstr "Закрыть" +msgstr "" msgid "Cluster" msgstr "КлаÑтер" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" -msgstr "%{link_to_container_project} должен быть Ñоздан под Ñтой учетной запиÑью" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" +msgstr "" msgid "ClusterIntegration|Cluster details" msgstr "Параметры клаÑтера" @@ -512,56 +581,137 @@ msgid "ClusterIntegration|Cluster integration is enabled for this project. Disab msgstr "Ð”Ð»Ñ Ñтого проекта включена Ð¸Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ð¸Ñ ÐºÐ»Ð°Ñтеров. Отключение интеграции не повлиÑет на клаÑтер, но Ñоединение Ñ GitLab будет временно отключено." msgid "ClusterIntegration|Cluster is being created on Google Kubernetes Engine..." -msgstr "СоздаетÑÑ ÐºÐ»Ð°Ñтер в Google Kubernetes Engine..." +msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "Ðазвание клаÑтера" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" -msgstr "КлаÑтер был уÑпешно Ñоздан в Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" +msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "Копировать название клаÑтера" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "Создать клаÑтер" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" -msgstr "Создать новый клаÑтер в Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" +msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "Включить интеграцию Ñ ÐºÐ»Ð°Ñтерами" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "Идентификатор проекта в Google Cloud Platform" msgid "ClusterIntegration|Google Kubernetes Engine" -msgstr "Google Kubernetes Engine" +msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" -msgstr "Проект Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "Узнайте больше на %{link_to_documentation}" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "Тип машины" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "УбедитеÑÑŒ, что ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ %{link_to_requirements} Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ñтеров" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" -msgstr "Управление интеграцией клаÑтера на вашем проекте Gitlab" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" +msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "УправлÑйте клаÑтером, Ð¿ÐµÑ€ÐµÐ¹Ð´Ñ Ð¿Ð¾ ÑÑылке %{link_gke}" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "Примечание:" + msgid "ClusterIntegration|Number of nodes" msgstr "КоличеÑтво узлов" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "ПожалуйÑта, убедитеÑÑŒ, что ваш аккаунт Google отвечает Ñледующим требованиÑм:" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "ПроÑтранÑтво имен проекта (необÑзательное, уникальное)" @@ -574,8 +724,14 @@ msgstr "Удалить интеграцию Ñ ÐºÐ»Ð°Ñтером" msgid "ClusterIntegration|Remove integration" msgstr "Удалить интеграцию" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." -msgstr "При удалении интеграции Ñ ÐºÐ»Ð°Ñтером будет удалена ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÐºÐ»Ð°Ñтера, которую вы добавили в Ñтот проект. Данное дейÑтвие не удалит Ñам проект." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" +msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" msgstr "ПроÑмотреть и отредактировать параметры Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ клаÑтера" @@ -589,33 +745,57 @@ msgstr "См. ваши проекты" msgid "ClusterIntegration|See zones" msgstr "См. зоны" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr " У Ð½Ð°Ñ Ñ‡Ñ‚Ð¾-то пошло не так." msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" -msgstr "Что-то пошло не так во Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»Ð°Ñтера в Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" msgid "ClusterIntegration|Toggle Cluster" msgstr "Переключить КлаÑтер" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "ЕÑли привÑзать клаÑтер к Ñтому проекту, вы Ñ Ð»Ñ‘Ð³ÐºÐ¾Ñтью Ñможете иÑпользовать Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€ÐµÐ²ÑŒÑŽ, развертывать ваши приложениÑ, запуÑкать Ñборочные линии и многое другое." msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" -msgstr "Ваша ÑƒÑ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ должна иметь %{link_to_kubernetes_engine}" +msgstr "" msgid "ClusterIntegration|Zone" msgstr "Зона" msgid "ClusterIntegration|access to Google Kubernetes Engine" -msgstr "доÑтуп к Google Kubernetes Engine" +msgstr "" msgid "ClusterIntegration|cluster" msgstr "клаÑтер" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "Ñтраница Ñправки" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "отвечает требованиÑм" @@ -631,12 +811,6 @@ msgstr[0] "Коммит" msgstr[1] "Коммиты" msgstr[2] "Коммиты" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "ЗафикÑировать %d файл" -msgstr[1] "ЗафикÑировать %d файла" -msgstr[2] "ЗафикÑировать %d файлов" - msgid "Commit Message" msgstr "ОпиÑание Коммита" @@ -718,14 +892,23 @@ msgstr "РуководÑтво учаÑтника" msgid "Contributors" msgstr "УчаÑтники" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" -msgstr "Контролировать макÑимальное количеÑтво потоков фоновой загрузки LFS/вложений Ð´Ð»Ñ Ñтого вторичного узла" +msgstr "" msgid "Control the maximum concurrency of repository backfill for this secondary node" -msgstr "Контролировать макÑимальное количеÑтво потоков фоновой загрузки хранилища Ð´Ð»Ñ Ñтого вторичного узла" +msgstr "" msgid "Copy SSH public key to clipboard" -msgstr "Скопировать публичный ключ SSH в буфер обмена" +msgstr "" msgid "Copy URL to clipboard" msgstr "Копировать URL в буфер обмена" @@ -745,6 +928,9 @@ msgstr "Создать каталог" msgid "Create empty bare repository" msgstr "Создать пуÑтой репозиторий" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "Создать файл" @@ -772,6 +958,9 @@ msgstr "Тег" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "Ñоздать перÑональный токен доÑтупа" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "Ð’Ñ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð·Ð¾Ð½Ð° Cron" @@ -817,6 +1006,12 @@ msgstr "Ð’Ñе" msgid "DashboardProjects|Personal" msgstr "Личные" +msgid "Dec" +msgstr "Дек." + +msgid "December" +msgstr "Декабрь" + msgid "Define a custom pattern with cron syntax" msgstr "Определить наÑтраиваемый шаблон Ñ ÑинтакÑиÑом cron" @@ -836,7 +1031,7 @@ msgid "Description" msgstr "ОпиÑание" msgid "Description templates allow you to define context-specific templates for issue and merge request description fields for your project." -msgstr "Шаблоны опиÑаний позволÑÑŽÑ‚ вам определить Ñпецифичные шаблоны Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð±Ñуждений и запроÑов на ÑлиÑние в вашем проекте." +msgstr "" msgid "Details" msgstr "ÐŸÐ¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ" @@ -851,7 +1046,7 @@ msgid "Dismiss Cycle Analytics introduction box" msgstr "Отключить блок Ð²Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð² Ðналитику Цикла" msgid "Dismiss Merge Request promotion" -msgstr "Отключить анонÑÑ‹ Ð´Ð»Ñ Ð—Ð°Ð¿Ñ€Ð¾Ñов на СлиÑние" +msgstr "" msgid "Don't show again" msgstr "Ðе показывать Ñнова" @@ -892,6 +1087,72 @@ msgstr "Изменить раÑпиÑание Ñборочной линии %{id msgid "Emails" msgstr "Email-адреÑа" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "Показать вÑе" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "Фильтр по вÑему" @@ -931,6 +1192,12 @@ msgstr "Ðе удалоÑÑŒ изменить владельца" msgid "Failed to remove the pipeline schedule" msgstr "Ðе удалоÑÑŒ удалить раÑпиÑание Ñборочной линии" +msgid "Feb" +msgstr "Фев." + +msgid "February" +msgstr "Февраль" + msgid "File name" msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" @@ -977,19 +1244,34 @@ msgid "GPG Keys" msgstr "GPG Ключи" msgid "Geo Nodes" -msgstr "ГеографичеÑкие Узлы" +msgstr "" + +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" msgid "Geo|File sync capacity" -msgstr "Объем хранилища Ð´Ð»Ñ Ñинхронизации файлов" +msgstr "" msgid "Geo|Groups to replicate" -msgstr "Группы Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸" +msgstr "" msgid "Geo|Repository sync capacity" -msgstr "Объем хранилища Ð´Ð»Ñ Ñинхронизации репозиториÑ" +msgstr "" msgid "Geo|Select groups to replicate." -msgstr "Выберите группы Ð´Ð»Ñ Ñ€ÐµÐ¿Ð»Ð¸ÐºÐ°Ñ†Ð¸Ð¸." +msgstr "" msgid "Git storage health information has been reset" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ ÑтабильноÑти Git хранилища была Ñброшена" @@ -1042,9 +1324,6 @@ msgstr "Группы не найдены" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "Ð’Ñ‹ можете управлÑÑ‚ÑŒ правами и доÑтупом учаÑтников вашей группы к каждому проекту в группе." -msgid "GroupsTreeRole|as" -msgstr "как" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "Ð’Ñ‹ уверены, что вы хотите покинуть группу \"${this.group.fullName}\"?" @@ -1075,6 +1354,9 @@ msgstr "К Ñожалению, по вашему запроÑу групп не msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "К Ñожалению, по вашему запроÑу групп или проектов не найдено" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "Проверка работоÑпоÑобноÑти" @@ -1103,22 +1385,22 @@ msgid "Import repository" msgstr "Импорт репозиториÑ" msgid "Improve Issue boards with GitLab Enterprise Edition." -msgstr "Улучшить доÑки обÑуждений Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ верÑии GitLab Enterprise Edition." +msgstr "" msgid "Improve issues management with Issue weight and GitLab Enterprise Edition." -msgstr "Улучшить управление обÑуждениÑми Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтью Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð²ÐµÑа обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ помощи GitLab Enterprise Edition." +msgstr "" msgid "Improve search with Advanced Global Search and GitLab Enterprise Edition." -msgstr "Улучшить поиÑк при помощи РаÑширенного Глобального ПоиÑка в верÑии GitLab Enterprise Edition." +msgstr "" msgid "Install a Runner compatible with GitLab CI" msgstr "УÑтановите Gitlab Runner ÑовмеÑтимый Ñ Gitlab CI" msgid "Instance" msgid_plural "Instances" -msgstr[0] "ÐкземплÑÑ€" -msgstr[1] "ÐкземплÑры" -msgstr[2] "ÐкземплÑры" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" msgid "Internal - The group and any internal projects can be viewed by any logged in user." msgstr "Внутренний - Группу и включённые в неё проекты может видеть любой зарегиÑтрированный пользователь." @@ -1133,10 +1415,7 @@ msgid "Introducing Cycle Analytics" msgstr "Внедрение Цикла Ðналитик" msgid "Issue board focus mode" -msgstr "Режим фокуÑировки над доÑкой обÑуждений" - -msgid "Issue boards with milestones" -msgstr "ДоÑки обÑуждений Ñ Ð²ÐµÑ…Ð°Ð¼Ð¸" +msgstr "" msgid "Issue events" msgstr "Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¾Ð±Ñуждений" @@ -1145,11 +1424,29 @@ msgid "IssueBoards|Board" msgstr "ДоÑка" msgid "IssueBoards|Boards" -msgstr "ДоÑки" +msgstr "" msgid "Issues" msgstr "ОбÑуждениÑ" +msgid "Jan" +msgstr "Янв." + +msgid "January" +msgstr "Январь" + +msgid "Jul" +msgstr "Июл." + +msgid "July" +msgstr "Июль" + +msgid "Jun" +msgstr "Июн." + +msgid "June" +msgstr "Июнь" + msgid "LFSStatus|Disabled" msgstr "Отключено" @@ -1205,7 +1502,7 @@ msgid "Leave project" msgstr "Покинуть проект" msgid "License" -msgstr "ЛицензиÑ" +msgstr "" msgid "Limited to showing %d event at most" msgid_plural "Limited to showing %d events at most" @@ -1220,14 +1517,23 @@ msgid "Locked" msgstr "Заблокировано" msgid "Locked Files" -msgstr "Заблокированные Файлы" +msgstr "" msgid "Login" msgstr "Войти" +msgid "Mar" +msgstr "Мар." + +msgid "March" +msgstr "Март" + msgid "Maximum git storage failures" msgstr "МакÑимальное количеÑтво Ñбоев хранилища git" +msgid "May" +msgstr "Май" + msgid "Median" msgstr "Среднее" @@ -1256,7 +1562,7 @@ msgid "More information is available|here" msgstr "Больше информации доÑтупно|тут" msgid "Multiple issue boards" -msgstr "Сводные доÑки задач" +msgstr "" msgid "New Cluster" msgstr "Ðовый КлаÑтер" @@ -1273,9 +1579,15 @@ msgstr "Ðовое РаÑпиÑание Сборочной Линии" msgid "New branch" msgstr "ÐÐ¾Ð²Ð°Ñ Ð²ÐµÑ‚ÐºÐ°" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "Ðовый каталог" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "Ðовый файл" @@ -1312,6 +1624,9 @@ msgstr "Ðет репозиториÑ" msgid "No schedules" msgstr "Ðет раÑпиÑаний" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "ПуÑто" @@ -1378,11 +1693,23 @@ msgstr "ОтÑлеживать" msgid "Notifications" msgstr "УведомлениÑ" +msgid "Nov" +msgstr "ÐоÑб." + +msgid "November" +msgstr "ÐоÑбрь" + msgid "Number of access attempts" msgstr "КоличеÑтво попыток доÑтупа" msgid "Number of failures before backing off" -msgstr "" +msgstr "КоличеÑтво ошибок перед откатом" + +msgid "Oct" +msgstr "Окт." + +msgid "October" +msgstr "ОктÑбрь" msgid "OfSearchInADropdown|Filter" msgstr "Фильтр" @@ -1390,6 +1717,9 @@ msgstr "Фильтр" msgid "Only project members can comment." msgstr "Только учаÑтники проекта могут оÑтавлÑÑ‚ÑŒ комментарии." +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "Открыто" @@ -1436,7 +1766,7 @@ msgid "Pipeline Schedules" msgstr "РаÑпиÑÐ°Ð½Ð¸Ñ Ð¡Ð±Ð¾Ñ€Ð¾Ñ‡Ð½Ñ‹Ñ… Линий" msgid "Pipeline quota" -msgstr "Квота Ñборочной линии" +msgstr "" msgid "PipelineCharts|Failed:" msgstr "Ðеудача:" @@ -1522,6 +1852,9 @@ msgstr "Ñо Ñтадией" msgid "Pipeline|with stages" msgstr "Ñо ÑтадиÑми" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "ПредпочтениÑ" @@ -1625,19 +1958,25 @@ msgid "ProjectNetworkGraph|Graph" msgstr "Граф" msgid "ProjectSettings|Contact an admin to change this setting." -msgstr "ОбратитеÑÑŒ к админиÑтратору Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтой наÑтройки." +msgstr "" + +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" msgid "ProjectSettings|Only signed commits can be pushed to this repository." -msgstr "Только подпиÑанные коммиты могут быть помещены в Ñтот репозиторий." +msgstr "" + +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." -msgstr "Ðта наÑтройка применÑетÑÑ Ð½Ð° уровне Ñервера и может быть переопределена админиÑтратором." +msgstr "" msgid "ProjectSettings|This setting is applied on the server level but has been overridden for this project." -msgstr "Ðта наÑтройка применÑетÑÑ Ð½Ð° уровне Ñервера, но была переопределена Ð´Ð»Ñ Ñтого проекта." +msgstr "" msgid "ProjectSettings|This setting will be applied to all projects unless overridden by an admin." -msgstr "Ðта наÑтройка будет применена Ð´Ð»Ñ Ð²Ñех проектов, еÑли иное поведение не переопределено админиÑтратором." +msgstr "" msgid "ProjectSettings|Users can only push commits to this repository that were committed with one of their own verified emails." msgstr "" @@ -1666,6 +2005,39 @@ msgstr "К Ñожалению, по вашему запроÑу проекты Ð msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "Ðта функциональноÑÑ‚ÑŒ требует поддержки localStorage в вашем браузере" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "Публичный - Группу и включённые в неё проекты могут видеть вÑе, без какой-либо проверки подлинноÑти." @@ -1673,7 +2045,7 @@ msgid "Public - The project can be accessed without any authentication." msgstr "Публичный - ДоÑтуп к проекту возможен без какой-либо проверки подлинноÑти." msgid "Push Rules" -msgstr "Правила Отправки" +msgstr "" msgid "Push events" msgstr "Ð¡Ð¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸" @@ -1694,7 +2066,7 @@ msgid "RefSwitcher|Tags" msgstr "Теги" msgid "Registry" -msgstr "РееÑÑ‚Ñ€" +msgstr "" msgid "Related Commits" msgstr "СвÑзанные коммиты" @@ -1762,6 +2134,9 @@ msgstr "РаÑпиÑаниÑ" msgid "Scheduling Pipelines" msgstr "Планирование Сборочных Линий" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "Ðайти ветки и теги" @@ -1783,6 +2158,12 @@ msgstr "Выбор временной зоны" msgid "Select target branch" msgstr "Выбор целевой ветки" +msgid "Sep" +msgstr "Сент." + +msgid "September" +msgstr "СентÑбрь" + msgid "Service Templates" msgstr "Шаблоны Служб" @@ -1816,14 +2197,29 @@ msgstr[0] "Показано %d Ñобытие" msgstr[1] "Показано %d Ñобытий" msgstr[2] "Показано %d Ñобытий" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "Сниппеты" msgid "Something went wrong on our end." msgstr "У Ð½Ð°Ñ Ñ‡Ñ‚Ð¾-то пошло не так." -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" -msgstr "Что-то пошло не так при попытке Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑоÑтоÑÐ½Ð¸Ñ Ñтого ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" +msgstr "" msgid "Something went wrong while fetching the projects." msgstr "Что-то пошло не так при получении проектов." @@ -1874,7 +2270,7 @@ msgid "SortOptions|Least popular" msgstr "Ðаименее популÑрный" msgid "SortOptions|Less weight" -msgstr "Меньший веÑ" +msgstr "" msgid "SortOptions|Milestone" msgstr "Веха" @@ -1886,7 +2282,7 @@ msgid "SortOptions|Milestone due soon" msgstr "Веха, наÑÑ‚ÑƒÐ¿Ð°ÑŽÑ‰Ð°Ñ Ñ€Ð°Ð½ÑŒÑˆÐµ" msgid "SortOptions|More weight" -msgstr "Больший веÑ" +msgstr "" msgid "SortOptions|Most popular" msgstr "Ðаиболее популÑрный" @@ -1928,11 +2324,17 @@ msgid "SortOptions|Start soon" msgstr "Ðачатые недавно" msgid "SortOptions|Weight" -msgstr "ВеÑ" +msgstr "" + +msgid "Source" +msgstr "ИÑточник" msgid "Source code" msgstr "ИÑходный код" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "Спам Логи" @@ -1951,6 +2353,9 @@ msgstr "Ðачать %{new_merge_request} Ñ Ñтих изменений" msgid "Start the Runner!" msgstr "ЗапуÑтить GitLab Runner!" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "Подгруппы" @@ -1972,6 +2377,75 @@ msgstr[2] "Теги" msgid "Tags" msgstr "Теги" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "Сортировать по" + +msgid "TagsPage|Tags" +msgstr "Теги" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "Ветка" @@ -1979,10 +2453,10 @@ msgid "Team" msgstr "Команда" msgid "Thanks! Don't show me this again" -msgstr "СпаÑибо! Больше не показывайте мне Ñто Ñообщение" +msgstr "" msgid "The Advanced Global Search in GitLab is a powerful search service that saves you time. Instead of creating duplicate code and wasting time, you can now search for code within other teams that can help your own project." -msgstr "РаÑширенный глобальный поиÑк в GitLab - Ñто Ñерьезный инÑтрумент который Ñокращает ваше времÑ. ВмеÑто ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð´ÑƒÐ±Ð»Ð¸Ñ€ÑƒÑŽÑ‰ÐµÐ³Ð¾ кода и траты времени, вы можете иÑкать код внутри других команд, который поможет вам в вашем проекте." +msgstr "" msgid "The circuitbreaker backoff threshold should be lower than the failure count threshold" msgstr "Порог ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¡ircuitBreaker должен быть меньше, чем порог ÑÑ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑбоÑ" @@ -2053,6 +2527,9 @@ msgstr "Среднее значение в Ñ€Ñду. Пример: между 3, msgid "There are problems accessing Git storage: " msgstr "Проблемы Ñ Ð´Ð¾Ñтупом к Git хранилищу: " +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "Ðта ветка была изменена, пока вы её редактировали. Ð’Ñ‹ хотите Ñоздать новую ветку?" @@ -2074,6 +2551,9 @@ msgstr "Ðто означает, что вы не можете Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ñ msgid "This merge request is locked." msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° ÑлиÑние заблокирован." +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð´Ð¾ начала Ð¿Ð¾Ð¿Ð°Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð² планировщик" @@ -2224,14 +2704,26 @@ msgstr[2] "мин" msgid "Time|s" msgstr "Ñ" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "Общее времÑ" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "Общее Ð²Ñ€ÐµÐ¼Ñ Ñ‚ÐµÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð¸ÐºÑаций/ÑлиÑний" msgid "Track activity with Contribution Analytics." -msgstr "ОтÑлеживать активноÑÑ‚ÑŒ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ðналитики УчаÑтников." +msgstr "" + +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" msgid "Unlock" msgstr "Разблокировать" @@ -2246,19 +2738,19 @@ msgid "Unsubscribe" msgstr "ОтпиÑатьÑÑ" msgid "Upgrade your plan to activate Advanced Global Search." -msgstr "ПовыÑьте ваш тарифный план, чтобы активировать Улучшенный Глобальный ПоиÑк." +msgstr "" msgid "Upgrade your plan to activate Contribution Analytics." -msgstr "ПовыÑьте ваш тарифный план, чтобы активировать Ðналитики УчаÑтников." +msgstr "" msgid "Upgrade your plan to activate Group Webhooks." -msgstr "ПовыÑьте ваш тарифный план, чтобы активировать Групповые Веб-Обработчики." +msgstr "" msgid "Upgrade your plan to activate Issue weight." -msgstr "Обновите ваш тарифный план Ð´Ð»Ñ Ð¿Ð¾ÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð²ÐµÑа у обÑуждений." +msgstr "" msgid "Upgrade your plan to improve Issue boards." -msgstr "Обновите ваш тарифный план, чтобы улучшить доÑки обÑуждений." +msgstr "" msgid "Upload New File" msgstr "Загрузить новый файл" @@ -2269,6 +2761,9 @@ msgstr "Загрузить файл" msgid "UploadLink|click to upload" msgstr "кликните Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "ИÑпользуйте Ñледующий токен региÑтрации в процеÑÑе уÑтановки:" @@ -2302,11 +2797,14 @@ msgstr "Хотите увидеть данные? ОбратитеÑÑŒ к адм msgid "We don't have enough data to show this stage." msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ð¾ Ñтапу отÑутÑтвует." +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." -msgstr "Веб-обработчики позволÑÑŽÑ‚ вам вызывать Ð°Ð´Ñ€ÐµÑ URL еÑли, например, отправлен новый код или Ñоздано новое обÑуждение. Ð’Ñ‹ можете наÑтроить веб-обработчики так, чтобы они реагировали на определённые ÑобытиÑ, такие как отправки кода, обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ запроÑÑ‹ на ÑлиÑние. Групповые веб-обработчики применÑÑŽÑ‚ÑÑ ÐºÐ¾ вÑем проектам в группе и позволÑÑŽÑ‚ вам Ñтандартизовать функциональноÑÑ‚ÑŒ веб-обработчиков Ð´Ð»Ñ Ð²Ñей вашей группы." +msgstr "" msgid "Weight" -msgstr "ВеÑ" +msgstr "" msgid "When access to a storage fails. GitLab will prevent access to the storage for the time specified here. This allows the filesystem to recover. Repositories on failing shards are temporarly unavailable" msgstr "Когда доÑтуп к хранилищу получить не удалоÑÑŒ, GitLab приоÑтановит доÑтуп к хранилищу на времÑ, указанное здеÑÑŒ. Ðто позволит файловой ÑиÑтеме воÑÑтановитьÑÑ. Репозитории на Ñбойных \"шардах\" будут временно недоÑтупны" @@ -2414,7 +2912,7 @@ msgid "Wiki|Wiki Pages" msgstr "Вики Страницы" msgid "With contribution analytics you can have an overview for the activity of issues, merge requests and push events of your organization and its members." -msgstr "С аналитикой учаÑтников вы можете изучать активноÑÑ‚ÑŒ в обÑуждениÑÑ…, запроÑах на ÑлиÑние и Ñобытий отправки кода Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ организации и её учаÑтников." +msgstr "" msgid "Withdraw Access Request" msgstr "Отменить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð´Ð¾Ñтупа" @@ -2431,17 +2929,11 @@ msgstr "Ð’Ñ‹ ÑобираетеÑÑŒ удалить ÑвÑзь ответвлен msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "Ð’Ñ‹ ÑобираетеÑÑŒ передать проект %{project_name_with_namespace} другому владельцу. Ð’Ñ‹ ÐБСОЛЮТÐО уверены?" -msgid "You are on a read-only GitLab instance." -msgstr "Ð’Ñ‹ находитеÑÑŒ на ÑкземплÑре \"только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ\" клаÑтера GitLab." - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "Ð’Ñ‹ находитеÑÑŒ на ÑкземплÑре \"только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ\" клаÑтера GitLab. ЕÑли вы хотите произвеÑти любые изменениÑ, вы должны перейти на \"оÑновной\" ÑкземплÑÑ€ по ÑÑылке %{link_to_primary_node}." - msgid "You can only add files when you are on a branch" msgstr "Ð’Ñ‹ можете добавлÑÑ‚ÑŒ только файлы, когда находитеÑÑŒ в ветке" msgid "You cannot write to a read-only secondary GitLab Geo instance. Please use %{link_to_primary_node} instead." -msgstr "Ð’Ñ‹ не можете запиÑывать на подчиненные ÑкземплÑры \"только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ\" клаÑтера GitLab Geo. ИÑпользуйте вмеÑто Ñтого %{link_to_primary_node}." +msgstr "" msgid "You cannot write to this read-only GitLab instance." msgstr "Ð’Ñ‹ не можете запиÑывать на Ñтот ÑкземплÑÑ€ \"только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ\" клаÑтера GitLab." @@ -2476,6 +2968,9 @@ msgstr "Ð’Ñ‹ не Ñможете получать и отправлÑÑ‚ÑŒ код msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "Ð’Ñ‹ не Ñможете получать и отправлÑÑ‚ÑŒ код проекта через SSH пока %{add_ssh_key_link} в ваш профиль." +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "Ваш комментарий не будет виден вÑем." @@ -2488,8 +2983,14 @@ msgstr "Ваше имÑ" msgid "Your projects" msgstr "Ваши проекты" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" -msgstr "коммит" +msgstr "" msgid "day" msgid_plural "days" @@ -2515,8 +3016,11 @@ msgstr "пароль" msgid "personal access token" msgstr "токен Ð´Ð»Ñ Ð¿ÐµÑ€Ñонального доÑтупа" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" -msgstr "чтобы помочь вашим учаÑтникам взаимодейÑтвовать Ñффективнее!" +msgstr "" msgid "username" msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" diff --git a/locale/uk/gitlab.po b/locale/uk/gitlab.po index 53054bdaa27..fc62776a7a4 100644 --- a/locale/uk/gitlab.po +++ b/locale/uk/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-21 16:43-0500\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 06:39-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Ukrainian\n" "Language: uk_UA\n" @@ -61,6 +61,9 @@ msgstr[0] "%{storage_name}: Ñпроба невдалого доÑтупу до msgstr[1] "%{storage_name}: %{failed_attempts} невдалі Ñпроби доÑтупу до Ñховища:" msgstr[2] "%{storage_name}: %{failed_attempts} невдалих Ñпроб доÑтупу до Ñховища:" +msgid "%{text} is available" +msgstr "%{text} доÑтупний" + msgid "(checkout the %{link} for information on how to install it)." msgstr "(перейдіть за поÑиланнÑм %{link} Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— ÑтоÑовно вÑтановленнÑ)." @@ -83,7 +86,7 @@ msgid "2FA enabled" msgstr "Двоетапна Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð°" msgid "A collection of graphs regarding Continuous Integration" -msgstr "Це набір графічних елементів Ð´Ð»Ñ Ð±ÐµÐ·Ð¿ÐµÑ€ÐµÑ€Ð²Ð½Ð¾Ñ— інтеграції" +msgstr "Ðабір графіків відноÑно безперервної інтеграції" msgid "About auto deploy" msgstr "Про авто розгортаннÑ" @@ -95,7 +98,7 @@ msgid "Access Tokens" msgstr "Токени доÑтупу" msgid "Access to failing storages has been temporarily disabled to allow the mount to recover. Reset storage information after the issue has been resolved to allow access again." -msgstr "ДоÑтуп до помилкових Ñховищ тимчаÑово відключений Ð´Ð»Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ÑÑ‚Ñ– Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° відновленнÑ. Скиньте інформацію про Ñховища піÑÐ»Ñ ÑƒÑÑƒÐ½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¸, щоб дозволити доÑтуп." +msgstr "ДоÑтуп до Ñховищ, що вийшли з ладу, тимчаÑово прибраний Ð·Ð°Ð´Ð»Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ. ПіÑÐ»Ñ Ð²Ð¸Ñ€Ñ–ÑˆÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¸ обнуліть інформацію Ñховища Ð´Ð»Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупу." msgid "Account" msgstr "Обліковий запиÑ" @@ -113,17 +116,14 @@ msgid "Add Changelog" msgstr "Додати ÑпиÑок змін (Changelog)" msgid "Add Contribution guide" -msgstr "Додати керівництво Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¸Ð±â€™ÑŽÑ‚Ð¾Ñ€Ñ–Ð²" +msgstr "" msgid "Add Group Webhooks and GitLab Enterprise Edition." -msgstr "Додайте групу Webhooks та GitLab Enterprise Edition." +msgstr "" msgid "Add License" msgstr "Додати ліцензію" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "Додайте SSH ключ в Ñвій профіль, щоб мати можливіÑÑ‚ÑŒ завантажити чи надіÑлати зміни через SSH." - msgid "Add new directory" msgstr "Додати новий каталог" @@ -136,6 +136,15 @@ msgstr "Додаткові параметри" msgid "All" msgstr "Ð’ÑÑ–" +msgid "An error occurred when toggling the notification subscription" +msgstr "Виникла помилка під Ñ‡Ð°Ñ Ð·Ð¼Ñ–Ð½Ð¸ підпиÑки на ÑповіщеннÑ" + +msgid "An error occurred when updating the issue weight" +msgstr "Збій під Ñ‡Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð°Ð³Ð¸ проблеми" + +msgid "An error occurred while fetching sidebar data" +msgstr "Виникла помилка під Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… Ð´Ð»Ñ Ð±Ñ–Ñ‡Ð½Ð¾Ñ— панелі" + msgid "An error occurred. Please try again." msgstr "СталаÑÑŒ помилка. Спробуйте ще раз." @@ -145,11 +154,17 @@ msgstr "Зовнішній виглÑд" msgid "Applications" msgstr "Додатки" +msgid "Apr" +msgstr "квіт." + +msgid "April" +msgstr "квітень" + msgid "Archived project! Repository is read-only" msgstr "Заархівований проект! Репозиторій доÑтупний лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ" msgid "Are you sure you want to delete this pipeline schedule?" -msgstr "Ви впевнені, що хочете видалити цей розклад Ð´Ð»Ñ ÐšÐ¾Ð½Ð²ÐµÑ”Ñ€Ð°?" +msgstr "" msgid "Are you sure you want to discard your changes?" msgstr "Ви впевнені, що бажаєте ÑкаÑувати ваші зміни?" @@ -161,7 +176,7 @@ msgid "Are you sure you want to reset registration token?" msgstr "Ви впевнені, що бажаєте Ñкинути реєÑтраційний токен?" msgid "Are you sure you want to reset the health check token?" -msgstr "Ви впевнені, що Ви хочете Ñкинути цей ключ перевірки працездатноÑÑ‚Ñ–?" +msgstr "Ви впевнені, що хочете Ñкинути цей ключ перевірки працездатноÑÑ‚Ñ–?" msgid "Are you sure?" msgstr "Ви впевнені?" @@ -172,6 +187,12 @@ msgstr "Ðртефакти" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "Прикріпити файл за допомогою перетÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ %{upload_link}" +msgid "Aug" +msgstr "Ñерп." + +msgid "August" +msgstr "Ñерпень" + msgid "Authentication Log" msgstr "Журнал автентифікації" @@ -205,6 +226,9 @@ msgstr "ДізнайтеÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ в %{link_to_documentation}" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "Ви можете активувати %{link_to_settings} Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ проекту." +msgid "Available" +msgstr "ДоÑтупний" + msgid "Billing" msgstr "Білінг" @@ -236,10 +260,10 @@ msgid "BillingPlans|See all %{plan_name} features" msgstr "ПодивітьÑÑ Ð²ÑÑ– можливоÑÑ‚Ñ– %{plan_name}" msgid "BillingPlans|This group uses the plan associated with its parent group." -msgstr "Ð¦Ñ Ð³Ñ€ÑƒÐ¿Ð° викориÑтовує план, пов'Ñзаний з батьківÑькою групою." +msgstr "Ð¦Ñ Ð³Ñ€ÑƒÐ¿Ð° викориÑтовує план, пов'Ñзаний із батьківÑькою групою." msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}." -msgstr "Ð”Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ð»Ð°Ð½Ð¾Ð¼ цієї групи відвідайте Ñекцію оплати %{parent_billing_page_link}." +msgstr "Щоб керувати планом цієї групи, відвідайте розділ білінгу на %{parent_billing_page_link}." msgid "BillingPlans|Upgrade" msgstr "Підвищити" @@ -257,7 +281,7 @@ msgid "BillingPlans|paid annually at %{price_per_year}" msgstr "ОплачуєтьÑÑ Ñ‰Ð¾Ñ€Ñ–Ñ‡Ð½Ð¾ %{price_per_year}" msgid "BillingPlans|per user" -msgstr "За кориÑтувача" +msgstr "" msgid "Branch" msgid_plural "Branches" @@ -271,11 +295,17 @@ msgstr "Гілка <strong>%{branch_name}</strong> Ñтворена. Ð”Ð»Ñ Ð½Ð° msgid "Branch has changed" msgstr "Гілка змінилаÑÑŒ" +msgid "Branch is already taken" +msgstr "Гілка вже Ñ–Ñнує" + +msgid "Branch name" +msgstr "Ðазва гілки" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "Пошук гілок" msgid "BranchSwitcherTitle|Switch branch" -msgstr "Переключити гілку" +msgstr "" msgid "Branches" msgstr "Гілки" @@ -401,13 +431,13 @@ msgid "ChangeTypeActionLabel|Pick into branch" msgstr "Вибрати в гілці" msgid "ChangeTypeActionLabel|Revert in branch" -msgstr "СкаÑувати у гілці" +msgstr "Ðнулювати у гілці" msgid "ChangeTypeAction|Cherry-pick" -msgstr "Cherry-pick" +msgstr "" msgid "ChangeTypeAction|Revert" -msgstr "СкаÑувати" +msgstr "Ðнулювати коміт" msgid "Changelog" msgstr "СпиÑок змін (Changelog)" @@ -418,14 +448,20 @@ msgstr "Графіки" msgid "Chat" msgstr "Чат" +msgid "Checking %{text} availability…" +msgstr "Перевірка доÑтупноÑÑ‚Ñ– %{text}…" + +msgid "Checking branch availability..." +msgstr "Перевірка доÑтупноÑÑ‚Ñ– гілки..." + msgid "Cherry-pick this commit" -msgstr "Cherry-pick в цьому коміті" +msgstr "" msgid "Cherry-pick this merge request" -msgstr "Cherry-pick в цьому запиті на злиттÑ" +msgstr "" msgid "Choose which groups you wish to replicate to this secondary node. Leave blank to replicate all." -msgstr "Виберіть, Ñкі групи ви хочете реплікувати на цю вторинну ноду. Залиште порожнім, щоб реплікувати вÑе." +msgstr "" msgid "CiStatusLabel|canceled" msgstr "ÑкаÑовано" @@ -493,8 +529,41 @@ msgstr "Закрити" msgid "Cluster" msgstr "КлаÑтер" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" -msgstr "%{link_to_container_project} напевно було Ñтворено під цим обліковим запиÑом" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "%{appList} уÑпішно вÑтановлені на вашому клаÑтері" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "%{boldNotice} Це додаÑÑ‚ÑŒ реÑурÑи (наприклад баланÑер навантаженнÑ), що Ñпричинить додаткові витрати. ПереглÑньте %{pricingLink}" + +msgid "ClusterIntegration|API URL" +msgstr "API URL" + +msgid "ClusterIntegration|Active" +msgstr "Ðктивний" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "Додати Ñ–Ñнуючий клаÑтер" + +msgid "ClusterIntegration|Add cluster" +msgstr "Додати клаÑтер" + +msgid "ClusterIntegration|All" +msgstr "Ð’ÑÑ–" + +msgid "ClusterIntegration|Applications" +msgstr "Додатки" + +msgid "ClusterIntegration|CA Certificate" +msgstr "Сертифікат центру Ñертифікації" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "Ðабір Ñертифікатів (формат PEM)" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "Виберіть ÑпоÑіб Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ñ–Ñ— з клаÑтером" + +msgid "ClusterIntegration|Cluster" +msgstr "КлаÑтер" msgid "ClusterIntegration|Cluster details" msgstr "Параметри клаÑтера" @@ -509,7 +578,7 @@ msgid "ClusterIntegration|Cluster integration is enabled for this project." msgstr "Ð†Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ñ–Ñ Ñ–Ð· клаÑтером увімкнена Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ проекту." msgid "ClusterIntegration|Cluster integration is enabled for this project. Disabling this integration will not affect your cluster, it will only temporarily turn off GitLab's connection to it." -msgstr "Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ проекту увімкнена Ñ–Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ñ–Ñ Ñ–Ð· клаÑтером. Ð’Ð¸ÐºÐ½ÐµÐ½Ð½Ñ Ñ–Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ñ–Ñ— не вплине на клаÑтер, але з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ GitLab з ним буде тимчаÑово розірване." +msgstr "" msgid "ClusterIntegration|Cluster is being created on Google Kubernetes Engine..." msgstr "СтворюєтьÑÑ ÐºÐ»Ð°Ñтер в Google Kubernetes Engine..." @@ -517,21 +586,54 @@ msgstr "СтворюєтьÑÑ ÐºÐ»Ð°Ñтер в Google Kubernetes Engine..." msgid "ClusterIntegration|Cluster name" msgstr "Ім'Ñ ÐºÐ»Ð°Ñтера" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" -msgstr "КлаÑтер був уÑпішно Ñтворений в Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "КлаÑтер був уÑпішно Ñтворено в Google Kubernetes Engine. Оновіть Ñторінку, щоб переглÑнути додатову інформацію" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "КлаÑтери дозволÑÑŽÑ‚ÑŒ вам викориÑтовувати Review Apps, розгортати ваші програми, запуÑкати ваші конвеєри Ñ– багато іншого проÑтим ÑпоÑобом. %{link_to_help_page}" + +msgid "ClusterIntegration|Copy API URL" +msgstr "Скопіювати URL API" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "Скопіювати Ñертифікат центру Ñертифікації" + +msgid "ClusterIntegration|Copy Token" +msgstr "Скопіювати Токен" msgid "ClusterIntegration|Copy cluster name" msgstr "Копіювати назву клаÑтера" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "Створити новий клаÑтер у Google Engine прÑмо з GitLab" + msgid "ClusterIntegration|Create cluster" msgstr "Створити клаÑтер" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" -msgstr "Створити новий клаÑтер в Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "Створити клаÑтер в Google Kubernetes Engine" + +msgid "ClusterIntegration|Create on GKE" +msgstr "Створити в GKE" msgid "ClusterIntegration|Enable cluster integration" msgstr "Увімкнути інтеграцію із клаÑтерами" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "Вкажіть параметри Ñ–Ñнуючого клаÑтера Kubernetes" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "Введіть докладний Ð¾Ð¿Ð¸Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ клаÑтера" + +msgid "ClusterIntegration|Environment pattern" +msgstr "Шаблон Ñередовища" + +msgid "ClusterIntegration|GKE pricing" +msgstr "ВартіÑÑ‚ÑŒ GKE" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "GitLab Runner" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "Ідентифікатор проекту в Google Cloud Platform" @@ -541,29 +643,77 @@ msgstr "Google Kubernetes Engine" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "Проект Google Kubernetes Engine" +msgid "ClusterIntegration|Helm Tiller" +msgstr "Helm Tiller" + +msgid "ClusterIntegration|Inactive" +msgstr "Ðеактивні" + +msgid "ClusterIntegration|Ingress" +msgstr "Ingress" + +msgid "ClusterIntegration|Install" +msgstr "Ð’Ñтановити" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "Ð’Ñтановіть додатки у ваш клаÑтер. Докладніше про %{helpLink}" + +msgid "ClusterIntegration|Installed" +msgstr "Ð’Ñтановлений" + +msgid "ClusterIntegration|Installing" +msgstr "Ð’ÑтановленнÑ" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "Ð†Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ñ–Ñ ÐºÐ»Ð°Ñтерної автоматизації" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "ДізнайтеÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ про %{link_to_documentation}" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "ДізнайтеÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ про клаÑтери" + msgid "ClusterIntegration|Machine type" msgstr "Тип машини" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "ПереконайтеÑÑ, що ваш обліковий Ð·Ð°Ð¿Ð¸Ñ %{link_to_requirements} Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ñтерів" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" -msgstr "Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ñ–Ñ”ÑŽ із клаÑтером у вашому Gitlab-проекті." +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" +msgstr "Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ–Ð½Ñ‚ÐµÐ³Ñ€Ð°Ñ†Ñ–Ñ”ÑŽ із клаÑтером у вашому Gitlab-проекті" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "Ð”Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñвоїм клаÑтером перейдіть на %{link_gke}" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "Кілька клаÑтерів доÑтупні в GitLab Enterprise Edition Premium Ñ– Ultimate" + +msgid "ClusterIntegration|Note:" +msgstr "Примітка:" + msgid "ClusterIntegration|Number of nodes" msgstr "КількіÑÑ‚ÑŒ вузлів" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "Введіть інформацію про доÑтуп до Ñвого клаÑтера. Якщо вам потрібна допомога, ви можете прочитати наші %{link_to_help_page} по клаÑтерам" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" -msgstr "Будь-лаÑка впевнітьÑÑ, що ваш Google-аккаунт задовольнÑÑ” наÑтупним вимогам:" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "Проблема Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»Ð°Ñтера" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "Проблема Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑпиÑку клаÑтерів" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" msgid "ClusterIntegration|Project namespace (optional, unique)" -msgstr "Namespace проекту (не обов’Ñзковий, унікальний)" +msgstr "" msgid "ClusterIntegration|Read our %{link_to_help_page} on cluster integration." msgstr "Прочитайте нашу документацію %{link_to_help_page} по інтеграції із клаÑтером." @@ -574,8 +724,14 @@ msgstr "Видалити інтеграцію з клаÑтером" msgid "ClusterIntegration|Remove integration" msgstr "Видалити інтеграцію" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." -msgstr "При видаленні інтеграції з клаÑтером буде видалена ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÐºÐ»Ð°Ñтера, Ñку ви додали в цей проект. Дана Ð´Ñ–Ñ Ð½Ðµ видалить Ñам проект." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ñтерної інтеграції призведе до Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ— клаÑтера, Ñку ви додали до цього проекту. Ð¦Ñ Ð´Ñ–Ñ Ð½Ðµ буде видалÑти ваш клаÑтер у Google Kubernetes Engine." + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "Запит про початок вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ðµ виконано" + +msgid "ClusterIntegration|Save changes" +msgstr "Зберегти зміни" msgid "ClusterIntegration|See and edit the details for your cluster" msgstr "ПереглÑнути та редагувати параметри вашого клаÑтера" @@ -589,15 +745,33 @@ msgstr "ПереглÑнути ваші проекти" msgid "ClusterIntegration|See zones" msgstr "ПереглÑнути зони" +msgid "ClusterIntegration|Service token" +msgstr "Токен СервіÑа" + +msgid "ClusterIntegration|Show" +msgstr "Показати" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "ЩоÑÑŒ пішло не так з нашого боку." msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "ЩоÑÑŒ пішло не так під Ñ‡Ð°Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ñтера в Google Kubernetes Engine" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "Під Ñ‡Ð°Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ %{title} ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "Ðемає клаÑтерів Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "Цей обліковий Ð·Ð°Ð¿Ð¸Ñ Ð¼Ð°Ñ” мати дозволи Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ»Ð°Ñтера в %{link_to_container_project}, зазначеному нижче" + msgid "ClusterIntegration|Toggle Cluster" msgstr "Переключити КлаÑтер" +msgid "ClusterIntegration|Token" +msgstr "Токен" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "За допомогою підключеного до цього проекту клаÑтера, ви можете викориÑтовувати Review Apps, розгортати ваші проекти, запуÑкати конвеєри збірки та багато іншого." @@ -613,9 +787,15 @@ msgstr "доÑтуп до Google Kubernetes Engine" msgid "ClusterIntegration|cluster" msgstr "клаÑтер" +msgid "ClusterIntegration|documentation" +msgstr "документаціÑ" + msgid "ClusterIntegration|help page" msgstr "Ñторінка допомоги" +msgid "ClusterIntegration|installing applications" +msgstr "вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÑ–Ð²" + msgid "ClusterIntegration|meets the requirements" msgstr "задовольнÑÑ” вимогам" @@ -631,12 +811,6 @@ msgstr[0] "Коміт" msgstr[1] "Коміта" msgstr[2] "Комітів" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "Закомітити %d файл" -msgstr[1] "Закомітити %d файли" -msgstr[2] "Закомітити %d файлів" - msgid "Commit Message" msgstr "Коміт-повідомелннÑ" @@ -704,7 +878,7 @@ msgid "ContainerRegistry|Tag" msgstr "Тег" msgid "ContainerRegistry|Tag ID" -msgstr "Тег ID" +msgstr "" msgid "ContainerRegistry|Use different image names" msgstr "ВикориÑтовуйте різні імена образів" @@ -713,11 +887,20 @@ msgid "ContainerRegistry|With the Docker Container Registry integrated into GitL msgstr "За допомогою вбудованого в GitLab реєÑтру Docker контейнерів кожен проект може мати влаÑне міÑце Ð´Ð»Ñ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Docker образів." msgid "Contribution guide" -msgstr "Керівництво контриб’юторів" +msgstr "" msgid "Contributors" msgstr "Контриб’ютори" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "Коміти в %{branch_name}, за винÑтком комітів злиттÑ. Обмежено 6000 комітів." + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "Будь лаÑка, зачекайте, Ñ†Ñ Ñторінка автоматично оновитьÑÑ, коли буде готова." + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "Задати макÑимальну кількіÑÑ‚ÑŒ потоків Ð´Ð»Ñ Ñ„Ð¾Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ LFS/вкладень Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ вторинного вузла" @@ -737,7 +920,7 @@ msgid "Create New Directory" msgstr "Створити новий каталог" msgid "Create a personal access token on your account to pull or push via %{protocol}." -msgstr "Створити токен доÑтупу Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ аккауета, щоб відправлÑти або отримувати через %{protocol}." +msgstr "" msgid "Create directory" msgstr "Створити каталог" @@ -745,6 +928,9 @@ msgstr "Створити каталог" msgid "Create empty bare repository" msgstr "Створити порожній репозиторій" +msgid "Create epic" +msgstr "Створити епік" + msgid "Create file" msgstr "Створити файл" @@ -772,6 +958,9 @@ msgstr "Тег" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "Створити токен Ð´Ð»Ñ Ð¾ÑобиÑтого доÑтупу" +msgid "Creating epic" +msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐµÐ¿Ñ–ÐºÑƒ" + msgid "Cron Timezone" msgstr "ЧаÑовий поÑÑ Cron" @@ -788,10 +977,10 @@ msgid "Cycle Analytics" msgstr "Ðналіз циклу" msgid "Cycle Analytics gives an overview of how much time it takes to go from idea to production in your project." -msgstr "Ðналітика циклу дає оглÑд того, Ñкільки чаÑу потрібно, щоб перейти від ідеї до виробництва у вашому проекті." +msgstr "" msgid "CycleAnalyticsStage|Code" -msgstr "Код" +msgstr "" msgid "CycleAnalyticsStage|Issue" msgstr "Проблема" @@ -800,13 +989,13 @@ msgid "CycleAnalyticsStage|Plan" msgstr "ПлануваннÑ" msgid "CycleAnalyticsStage|Production" -msgstr "ПРОД" +msgstr "" msgid "CycleAnalyticsStage|Review" msgstr "ЗатвердженнÑ" msgid "CycleAnalyticsStage|Staging" -msgstr "ДЕВ" +msgstr "Staging" msgid "CycleAnalyticsStage|Test" msgstr "ТеÑтуваннÑ" @@ -817,6 +1006,12 @@ msgstr "Ð’ÑÑ–" msgid "DashboardProjects|Personal" msgstr "ОÑобиÑÑ‚Ñ–" +msgid "Dec" +msgstr "груд." + +msgid "December" +msgstr "грудень" + msgid "Define a custom pattern with cron syntax" msgstr "Визначте влаÑний шаблон за допомогою ÑинтакÑиÑу cron" @@ -830,13 +1025,13 @@ msgstr[1] "РозгортаннÑ" msgstr[2] "Розгортань" msgid "Deploy Keys" -msgstr "Ключи Ð´Ð»Ñ Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ" +msgstr "" msgid "Description" msgstr "ОпиÑ" msgid "Description templates allow you to define context-specific templates for issue and merge request description fields for your project." -msgstr "Шаблони опиÑу дозволÑÑŽÑ‚ÑŒ визначити конкретні шаблони обговорень та запитів на Ð·Ð»Ð¸Ð²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ проекту." +msgstr "" msgid "Details" msgstr "Деталі" @@ -851,7 +1046,7 @@ msgid "Dismiss Cycle Analytics introduction box" msgstr "Відмінити блок вÑтупу до Ðналитики Циклу" msgid "Dismiss Merge Request promotion" -msgstr "Ðе показувати промоушн запитів на злиттÑ" +msgstr "Відхилити рекламу Ð´Ð»Ñ Ð—Ð°Ð¿Ð¸Ñ‚Ñ–Ð² на злиттÑ" msgid "Don't show again" msgstr "Ðе показувати знову" @@ -878,7 +1073,7 @@ msgid "DownloadCommit|Email Patches" msgstr "Email-патчи" msgid "DownloadCommit|Plain Diff" -msgstr "Plain Diff" +msgstr "" msgid "DownloadSource|Download" msgstr "Завантажити" @@ -892,6 +1087,72 @@ msgstr "Редагувати Розклад Конвеєра %{id}" msgid "Emails" msgstr "ÐдреÑи електронної пошти" +msgid "Environments|An error occurred while fetching the environments." +msgstr "Виникла помилка при завантаженні Ñередовищ." + +msgid "Environments|An error occurred while making the request." +msgstr "Під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°." + +msgid "Environments|Commit" +msgstr "Коміт" + +msgid "Environments|Deployment" +msgstr "РозгортаннÑ" + +msgid "Environments|Environment" +msgstr "Середовище" + +msgid "Environments|Environments" +msgstr "Середовища" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "ЗавданнÑ" + +msgid "Environments|New environment" +msgstr "Ðове Ñередовище" + +msgid "Environments|No deployments yet" +msgstr "Ще немає розгортань" + +msgid "Environments|Open" +msgstr "Відкрити" + +msgid "Environments|Re-deploy" +msgstr "Повторно розгорнути" + +msgid "Environments|Read more about environments" +msgstr "ДізнайтеÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ про Ñередовища" + +msgid "Environments|Rollback" +msgstr "Відкотити" + +msgid "Environments|Show all" +msgstr "Показати вÑÑ–" + +msgid "Environments|Updated" +msgstr "Оновлено" + +msgid "Environments|You don't have any environments right now." +msgstr "Ви поки не налаштували жодного Ñередовища." + +msgid "Epic will be removed! Are you sure?" +msgstr "Епік буде видалено! Ви впевнені?" + +msgid "Epics" +msgstr "Епіки" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "Епіки дозволÑÑŽÑ‚ÑŒ керувати вашим портфелем проектів ефективніше та з меншими зуÑиллÑми" + +msgid "Error creating epic" +msgstr "Помилка при Ñтворенні епіку" + +msgid "Error occurred when toggling the notification subscription" +msgstr "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´Ð¿Ð¸Ñки на ÑповіщеннÑ" + msgid "EventFilterBy|Filter by all" msgstr "Фільтрувати по вÑім" @@ -905,7 +1166,7 @@ msgid "EventFilterBy|Filter by merge events" msgstr "Фільтрувати по запитам на злиттÑ" msgid "EventFilterBy|Filter by push events" -msgstr "Фільтрувати по push-подіÑÑ…" +msgstr "" msgid "EventFilterBy|Filter by team" msgstr "Фільтрувати по команді" @@ -929,7 +1190,13 @@ msgid "Failed to change the owner" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ влаÑника" msgid "Failed to remove the pipeline schedule" -msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ розклад Конвеєра" +msgstr "" + +msgid "Feb" +msgstr "лют." + +msgid "February" +msgstr "лютий" msgid "File name" msgstr "Ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ" @@ -950,7 +1217,7 @@ msgid "FirstPushedBy|First" msgstr "Перший" msgid "FirstPushedBy|pushed by" -msgstr "ÐадіÑлані зміни від" +msgstr "" msgid "Fork" msgid_plural "Forks" @@ -968,10 +1235,10 @@ msgid "Format" msgstr "Формат" msgid "From issue creation until deploy to production" -msgstr "З моменту ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¸ до Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° ПРОД" +msgstr "" msgid "From merge request merge until deploy to production" -msgstr "З об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð´Ð¾ Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° ПРОД" +msgstr "" msgid "GPG Keys" msgstr "GPG ключі" @@ -979,6 +1246,21 @@ msgstr "GPG ключі" msgid "Geo Nodes" msgstr "Гео-Вузли" +msgid "GeoNodeSyncStatus|Failed" +msgstr "Ðевдало" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "Вузол не працює або зламаний." + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "Вузол працює повільно, перевантажений або тільки що відновивÑÑ Ð¿Ñ–ÑÐ»Ñ Ð·Ð±Ð¾ÑŽ." + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "ÐеÑинхронізовано" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "Синхронізовано" + msgid "Geo|File sync capacity" msgstr "ПропуÑкна здатніÑÑ‚ÑŒ Ñинхронізації файлів" @@ -1042,9 +1324,6 @@ msgstr "Групи не знайдені" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "Ви можете керувати правами доÑтупу членів групи мати доÑтуп до кожного проекту в ній." -msgid "GroupsTreeRole|as" -msgstr "Ñк" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "Ви впевнені, що хочете залишити групу \"${this.group.fullName}\"?" @@ -1075,6 +1354,9 @@ msgstr "Ðа жаль жодна группа не задовольнÑÑ” пар msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "Ðа жаль жодна группа чи проект не задовольнÑÑ” параметрам вашого запиту" +msgid "Have your users email" +msgstr "Електронна пошта Ð´Ð»Ñ Ð·Ð²ÐµÑ€Ñ‚Ð°Ð½ÑŒ кориÑтувачів" + msgid "Health Check" msgstr "Перевірки працездатноÑÑ‚Ñ–" @@ -1100,10 +1382,10 @@ msgid "Housekeeping successfully started" msgstr "ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ ÑƒÑпішно розпочато" msgid "Import repository" -msgstr "Імпорт репозеторіÑ" +msgstr "" msgid "Improve Issue boards with GitLab Enterprise Edition." -msgstr "Покращити дошки обговорень за допомогою верÑÑ–Ñ— GitLab Enterprise Edition." +msgstr "" msgid "Improve issues management with Issue weight and GitLab Enterprise Edition." msgstr "Покращити ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð°Ð¼Ð¸ з можливіÑÑ‚ÑŽ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð°Ð³Ð¸ проблеми за допомогою GitLab Enterprise Edition." @@ -1117,7 +1399,7 @@ msgstr "Ð’Ñтановіть Runner, ÑуміÑний з GitLab CI" msgid "Instance" msgid_plural "Instances" msgstr[0] "ІнÑтанÑ" -msgstr[1] "ІнÑтанÑа" +msgstr[1] "IнÑтанÑи" msgstr[2] "ІнÑтанÑів" msgid "Internal - The group and any internal projects can be viewed by any logged in user." @@ -1133,10 +1415,7 @@ msgid "Introducing Cycle Analytics" msgstr "ПредÑтавлÑємо аналітику циклу" msgid "Issue board focus mode" -msgstr "Режим фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð°Ð´ дошкою обговорень" - -msgid "Issue boards with milestones" -msgstr "Дошка обговорень із етапами" +msgstr "Режим фокуÑÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð´Ð¾ÑˆÐºÐ¸ обговорень" msgid "Issue events" msgstr "Проблеми" @@ -1150,6 +1429,24 @@ msgstr "Дошки" msgid "Issues" msgstr "Проблеми" +msgid "Jan" +msgstr "Ñіч." + +msgid "January" +msgstr "Ñічень" + +msgid "Jul" +msgstr "лип." + +msgid "July" +msgstr "липень" + +msgid "Jun" +msgstr "чер." + +msgid "June" +msgstr "червень" + msgid "LFSStatus|Disabled" msgstr "Вимкнено" @@ -1184,7 +1481,7 @@ msgid "Last updated" msgstr "ВоÑтаннє оновленно" msgid "LastPushEvent|You pushed to" -msgstr "Ви надіÑлали зміни до" +msgstr "" msgid "LastPushEvent|at" msgstr "в" @@ -1225,9 +1522,18 @@ msgstr "Заблоковані файли" msgid "Login" msgstr "Вхід" +msgid "Mar" +msgstr "бер." + +msgid "March" +msgstr "березень" + msgid "Maximum git storage failures" msgstr "МакÑимальна кількіÑÑ‚ÑŒ невдач в Ñховищі даних git" +msgid "May" +msgstr "травень" + msgid "Median" msgstr "Медіана" @@ -1238,7 +1544,7 @@ msgid "Merge Requests" msgstr "Запити на злиттÑ" msgid "Merge events" -msgstr "Запити на злиттÑ" +msgstr "" msgid "Merge request" msgstr "Запит на злиттÑ" @@ -1256,7 +1562,7 @@ msgid "More information is available|here" msgstr "тут" msgid "Multiple issue boards" -msgstr "Зведені дошки обговореннÑ" +msgstr "Кілька дошок обговореннÑ" msgid "New Cluster" msgstr "Ðовий клаÑтер" @@ -1273,9 +1579,15 @@ msgstr "Ðовий розклад Конвеєра" msgid "New branch" msgstr "Ðова гілка" +msgid "New branch unavailable" +msgstr "Ðова гілка недоÑтупна" + msgid "New directory" msgstr "Ðовий каталог" +msgid "New epic" +msgstr "Ðовий епік" + msgid "New file" msgstr "Ðовий файл" @@ -1295,7 +1607,7 @@ msgid "New schedule" msgstr "Ðовий Розклад" msgid "New snippet" -msgstr "Ðовий Ñніппет" +msgstr "" msgid "New subgroup" msgstr "Ðова підгрупа" @@ -1307,11 +1619,14 @@ msgid "No container images stored for this project. Add one by following the ins msgstr "Ð’ цьому проекті немає жодного образа контейнера. Додайте його за інÑтрукціÑми вище." msgid "No repository" -msgstr "Ðемає репозеторіÑ" +msgstr "" msgid "No schedules" msgstr "немає Розкладів" +msgid "No time spent" +msgstr "Ðемає витраченого чаÑу" + msgid "None" msgstr "Жоден" @@ -1328,13 +1643,13 @@ msgid "NotificationEvent|Close issue" msgstr "Проблема закрита" msgid "NotificationEvent|Close merge request" -msgstr "Запит на об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸Ð¹" +msgstr "" msgid "NotificationEvent|Failed pipeline" msgstr "Ðевдача в конвеєрі" msgid "NotificationEvent|Merge merge request" -msgstr "Об'єднати запит на злиттÑ" +msgstr "" msgid "NotificationEvent|New issue" msgstr "Ðова проблема" @@ -1349,7 +1664,7 @@ msgid "NotificationEvent|Reassign issue" msgstr "Перепризначити проблему" msgid "NotificationEvent|Reassign merge request" -msgstr "Перепризначити запит на злиттÑ" +msgstr "" msgid "NotificationEvent|Reopen issue" msgstr "Повторне Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ñƒ" @@ -1378,18 +1693,33 @@ msgstr "ВідÑтежувати" msgid "Notifications" msgstr "СповіщеннÑ" +msgid "Nov" +msgstr "лиÑÑ‚." + +msgid "November" +msgstr "лиÑтопад" + msgid "Number of access attempts" msgstr "КількіÑÑ‚ÑŒ Ñпроб доÑтупу" msgid "Number of failures before backing off" msgstr "КількіÑÑ‚ÑŒ помилок до призупиненнÑ" +msgid "Oct" +msgstr "жовт." + +msgid "October" +msgstr "жовтень" + msgid "OfSearchInADropdown|Filter" msgstr "Фільтр" msgid "Only project members can comment." msgstr "Тільки учаÑники проекту можуть залишати коментарі." +msgid "Opened" +msgstr "Відкрито" + msgid "OpenedNDaysAgo|Opened" msgstr "Відкрито" @@ -1469,7 +1799,7 @@ msgid "PipelineSchedules|Input variable key" msgstr "Введіть ім'Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—" msgid "PipelineSchedules|Input variable value" -msgstr "Вхідні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ…" +msgstr "" msgid "PipelineSchedules|Next Run" msgstr "ÐаÑтупний запуÑк" @@ -1478,7 +1808,7 @@ msgid "PipelineSchedules|None" msgstr "Ðемає" msgid "PipelineSchedules|Provide a short description for this pipeline" -msgstr "Задайте короткий Ð¾Ð¿Ð¸Ñ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Конвеєру" +msgstr "" msgid "PipelineSchedules|Remove variable row" msgstr "Видалити змінні" @@ -1493,7 +1823,7 @@ msgid "PipelineSchedules|Variables" msgstr "Змінні" msgid "PipelineSheduleIntervalPattern|Custom" -msgstr "ВлаÑні" +msgstr "" msgid "Pipelines" msgstr "Конвеєри" @@ -1522,11 +1852,14 @@ msgstr "зі Ñтадією" msgid "Pipeline|with stages" msgstr "зі ÑтадіÑми" +msgid "Please solve the reCAPTCHA" +msgstr "Будь лаÑка, пройдіть reCAPTCHA" + msgid "Preferences" msgstr "ÐалаштуваннÑ" msgid "Private - Project access must be granted explicitly to each user." -msgstr "Приватний — доÑтуп до проекту повинен надаватиÑÑ ÐºÐ¾Ð¶Ð½Ð¾Ð¼Ñƒ кориÑтувачеві." +msgstr "" msgid "Private - The group and its projects can only be viewed by members." msgstr "Приватна — цю групу та Ñ—Ñ— проекти можуть бачити тільки Ñ—Ñ— кориÑтувачі." @@ -1583,7 +1916,7 @@ msgid "Project '%{project_name}' was successfully updated." msgstr "Проект '%{project_name}' уÑпішно оновлено." msgid "Project access must be granted explicitly to each user." -msgstr "ДоÑтуп до проекту повинен надаватиÑÑ ÐºÐ¾Ð¶Ð½Ð¾Ð¼Ñƒ кориÑтувачеві." +msgstr "" msgid "Project details" msgstr "Деталі проекту" @@ -1607,7 +1940,7 @@ msgid "ProjectFeature|Disabled" msgstr "Вимкнено" msgid "ProjectFeature|Everyone with access" -msgstr "Ð’Ñе з доÑтупом" +msgstr "" msgid "ProjectFeature|Only team members" msgstr "Тільки члени команди" @@ -1619,7 +1952,7 @@ msgid "ProjectLastActivity|Never" msgstr "Ðіколи" msgid "ProjectLifecycle|Stage" -msgstr "Етап" +msgstr "СтадіÑ" msgid "ProjectNetworkGraph|Graph" msgstr "ІÑторіÑ" @@ -1627,9 +1960,15 @@ msgstr "ІÑторіÑ" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "ЗвернітьÑÑ Ð´Ð¾ адмініÑтратора, щоб змінити це налаштуваннÑ." +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "Зразу запуÑкати конвеєр у гілкці за замовчуваннÑм" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "Тільки підпиÑані коміти можуть бути надіÑлані в цей репозиторій." +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "Проблема Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² CI / CD JavaScript" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "Цей параметр заÑтоÑовуєтьÑÑ Ð½Ð° рівні Ñервера та може бути перевизначений адмініÑтратором." @@ -1640,7 +1979,7 @@ msgid "ProjectSettings|This setting will be applied to all projects unless overr msgstr "Цей параметр буде заÑтоÑовано до вÑÑ–Ñ… проектів, Ñкщо адмініÑтратор не змінить його." msgid "ProjectSettings|Users can only push commits to this repository that were committed with one of their own verified emails." -msgstr "КориÑтувачі можуть виконувати push в цей репозиторій лише тих комітів, Ñкі міÑÑ‚ÑÑ‚ÑŒ одну із підтверджених Ð°Ð´Ñ€ÐµÑ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾Ñ— пошти." +msgstr "" msgid "Projects" msgstr "Проекти" @@ -1666,6 +2005,39 @@ msgstr "Ðа жаль, по вашоу запиту проектів не зна msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "Ð¦Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” підтримки localStorage вашим браузером" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "За замовчуваннÑм, Prometheus запуÑкаєтьÑÑ Ð·Ð° адреÑою ‘http://localhost:9090’. Ðе рекомендуєтьÑÑ Ð·Ð¼Ñ–Ð½ÑŽÐ²Ð°Ñ‚Ð¸ цю адреÑу Ñ– порт, бо це може призвеÑти до конфлікту з іншими ÑервіÑами запущеними на GitLab Ñервері." + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "Пошук та Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼ÐµÑ‚Ñ€Ð¸Ðº..." + +msgid "PrometheusService|Metrics" +msgstr "Метрики" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "Метрики автоматично налаштовуютьÑÑ Ñ‚Ð° контролюютьÑÑ Ð½Ð° оÑнові набору метрик від популÑрних екÑпортерів." + +msgid "PrometheusService|Missing environment variable" +msgstr "Пропущена змінна Ñередовища" + +msgid "PrometheusService|Monitored" +msgstr "Моніторинг підключено" + +msgid "PrometheusService|More information" +msgstr "Додаткова інформаціÑ" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "Жодні метрики не відÑлідковуютьÑÑ. Ð”Ð»Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ моніторингу, розгорніть Ñередовище." + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "Базова адреÑа Prometheus API, наприклад http://prometheus.example.com/" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "Моніторинг Prometheus" + +msgid "PrometheusService|View environments" +msgstr "ПереглÑд Ñередовищ" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "Публічна — група та вÑÑ– публічні проекти можуть переглÑдатиÑÑ Ð±ÐµÐ· автентифікації." @@ -1673,10 +2045,10 @@ msgid "Public - The project can be accessed without any authentication." msgstr "Публічний — проект может переглÑдатиÑÑ Ð±ÐµÐ· автентифікації." msgid "Push Rules" -msgstr "Push-правила" +msgstr "" msgid "Push events" -msgstr "Push-події" +msgstr "" msgid "PushRule|Committer restriction" msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ ÐºÐ¾Ð¼Ñ–Ñ‚Ñ‚ÐµÑ€Ð°" @@ -1685,7 +2057,7 @@ msgid "Read more" msgstr "Докладніше" msgid "Readme" -msgstr "Прочитай Мене" +msgstr "ІнÑтрукціÑ" msgid "RefSwitcher|Branches" msgstr "Гілки" @@ -1700,19 +2072,19 @@ msgid "Related Commits" msgstr "Пов'Ñзані Коміти" msgid "Related Deployed Jobs" -msgstr "Пов’Ñзані розгорнуті задачі (Jobs)" +msgstr "Пов’Ñзані розгорнуті Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ (Jobs)" msgid "Related Issues" msgstr "Пов’Ñзані Проблеми (Issues)" msgid "Related Jobs" -msgstr "Пов’Ñзані Задачі (Jobs)" +msgstr "Пов’Ñзані Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ (Jobs)" msgid "Related Merge Requests" msgstr "Пов'Ñзані запити на злиттÑ" msgid "Related Merged Requests" -msgstr "Пов'Ñзані об'єднані запити" +msgstr "" msgid "Remind later" msgstr "Ðагадати пізніше" @@ -1736,10 +2108,10 @@ msgid "Reset runners registration token" msgstr "Скинути реєÑтраційний токен runner-ів" msgid "Revert this commit" -msgstr "СкаÑувати цей коміт" +msgstr "Ðнулювати цей коміт" msgid "Revert this merge request" -msgstr "СкаÑувати цей запит на злиттÑ" +msgstr "Ðнулювати цей запит на злиттÑ" msgid "SSH Keys" msgstr "Ключі SSH" @@ -1751,7 +2123,7 @@ msgid "Save changes" msgstr "Зберегти зміни" msgid "Save pipeline schedule" -msgstr "Зберегти Розклад Конвеєра" +msgstr "" msgid "Schedule a new pipeline" msgstr "Розклад нового конвеєра" @@ -1762,6 +2134,9 @@ msgstr "Розклади" msgid "Scheduling Pipelines" msgstr "ÐŸÐ»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ð²ÐµÑ”Ñ€Ñ–Ð²" +msgid "Scoped issue boards" +msgstr "Тематичні дошки проблем" + msgid "Search branches and tags" msgstr "Пошук гілок та тегів" @@ -1783,11 +2158,17 @@ msgstr "Вибрати чаÑовий поÑÑ" msgid "Select target branch" msgstr "Вибір цільової гілки" +msgid "Sep" +msgstr "вер." + +msgid "September" +msgstr "вереÑень" + msgid "Service Templates" msgstr "Ð¡ÐµÑ€Ð²Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²" msgid "Set a password on your account to pull or push via %{protocol}." -msgstr "Ð’Ñтановіть пароль Ñвого облікового запиÑу, щоб відправлÑти або отримувати код через %{protocol}." +msgstr "" msgid "Set up CI" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ CI" @@ -1816,14 +2197,29 @@ msgstr[0] "Показано %d подію" msgstr[1] "Показано %d події" msgstr[2] "Показано %d подій" +msgid "Sidebar|Change weight" +msgstr "Змінити вагу" + +msgid "Sidebar|Edit" +msgstr "Редагувати" + +msgid "Sidebar|No" +msgstr "ÐÑ–" + +msgid "Sidebar|None" +msgstr "Ðемає" + +msgid "Sidebar|Weight" +msgstr "Вага" + msgid "Snippets" -msgstr "Фрагменти" +msgstr "" msgid "Something went wrong on our end." msgstr "ЩоÑÑŒ пішло не так з нашого боку" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" -msgstr "ЩоÑÑŒ пішло не так, намагаючиÑÑŒ змінити ÑÑ‚Ð°Ñ‚ÑƒÑ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" +msgstr "ЩоÑÑŒ пішло не так, при Ñпробі зміни Ñтану Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ${this.issuableDisplayName}" msgid "Something went wrong while fetching the projects." msgstr "ЩоÑÑŒ пішло не так під Ñ‡Ð°Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñ–Ð²" @@ -1874,7 +2270,7 @@ msgid "SortOptions|Least popular" msgstr "Ðайменш популÑрний" msgid "SortOptions|Less weight" -msgstr "Ðайменша вага" +msgstr "Менша вага" msgid "SortOptions|Milestone" msgstr "Етап" @@ -1886,7 +2282,7 @@ msgid "SortOptions|Milestone due soon" msgstr "Етап запланований незабаром" msgid "SortOptions|More weight" -msgstr "Ðайбільша вага" +msgstr "Більша вага" msgid "SortOptions|Most popular" msgstr "Ðайбільш популÑрний" @@ -1930,9 +2326,15 @@ msgstr "Розпочатий нещодавно" msgid "SortOptions|Weight" msgstr "Вага" +msgid "Source" +msgstr "Джерело" + msgid "Source code" msgstr "Код" +msgid "Source is not available" +msgstr "Джерело недоÑтупне" + msgid "Spam Logs" msgstr "Спам-журнал" @@ -1951,6 +2353,9 @@ msgstr "Почати %{new_merge_request} з цими змінами" msgid "Start the Runner!" msgstr "ЗапуÑÑ‚Ñ–Ñ‚ÑŒ Runner!" +msgid "Stopped" +msgstr "Зупинено" + msgid "Subgroups" msgstr "Підгрупи" @@ -1958,10 +2363,10 @@ msgid "Subscribe" msgstr "ПідпиÑатиÑÑ" msgid "Switch branch/tag" -msgstr "тег" +msgstr "" msgid "System Hooks" -msgstr "СиÑтемні Hook'и" +msgstr "" msgid "Tag" msgid_plural "Tags" @@ -1972,6 +2377,75 @@ msgstr[2] "Тегів" msgid "Tags" msgstr "Теги" +msgid "TagsPage|Browse commits" +msgstr "ПереглÑнути коміти" + +msgid "TagsPage|Browse files" +msgstr "ПереглÑнути файли" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "Ðеможливо знайти HEAD коміт до цього тегу" + +msgid "TagsPage|Cancel" +msgstr "СкаÑувати" + +msgid "TagsPage|Create tag" +msgstr "Створити тег" + +msgid "TagsPage|Delete tag" +msgstr "Видалити тег" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ‚ÐµÐ³Ð° %{tag_name} не може бути ÑкаÑовано. Ви впевнені?" + +msgid "TagsPage|Edit release notes" +msgstr "Редагувати Ð¾Ð¿Ð¸Ñ Ñ€ÐµÐ»Ñ–Ð·Ñƒ" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "Ім'Ñ Ñ–Ñнуючої гілки, тега або SHA коміта" + +msgid "TagsPage|Filter by tag name" +msgstr "Фільтр по імені тега" + +msgid "TagsPage|New Tag" +msgstr "Ðовий тег" + +msgid "TagsPage|New tag" +msgstr "Ðовий тег" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "При бажанні Ви можете додати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² тег." + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "ÐžÐ¿Ð¸Ñ Ñ€ÐµÐ»Ñ–Ð·Ñƒ" + +msgid "TagsPage|Repository has no tags yet." +msgstr "Репозиторій не міÑтить тегів." + +msgid "TagsPage|Sort by" +msgstr "Сортувати за" + +msgid "TagsPage|Tags" +msgstr "Теги" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "Теги дають можливіÑÑ‚ÑŒ позначати певні моменти в Ñ–Ñторії Ñк важливі" + +msgid "TagsPage|This tag has no release notes." +msgstr "Цей тег не міÑтить опиÑу релізу." + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "ВикориÑтовуйте команду git tag, щоб додати новий:" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "Ðапишіть Ñвій Ð¾Ð¿Ð¸Ñ Ñ€ÐµÐ»Ñ–Ð·Ñƒ або перетÑгніть файли Ñюди..." + +msgid "TagsPage|protected" +msgstr "захищений" + msgid "Target Branch" msgstr "Цільова гілка" @@ -1982,22 +2456,22 @@ msgid "Thanks! Don't show me this again" msgstr "ДÑкую! Більше не показувати це повідомленнÑ" msgid "The Advanced Global Search in GitLab is a powerful search service that saves you time. Instead of creating duplicate code and wasting time, you can now search for code within other teams that can help your own project." -msgstr "Розширений глобальний пошук в GitLab - це потужний інÑтрумент Ñкий заощаджує ваш чаÑ. ЗаміÑÑ‚ÑŒ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ Ñ– витрати чаÑу, ви можете шукати код вÑередині інших команд, Ñкий може допомогти у вашому проекті." +msgstr "Розширений глобальний пошук в GitLab - це потужний інÑтрумент Ñкий заощаджує ваш чаÑ. ЗаміÑÑ‚ÑŒ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ Ñ– витрати чаÑу, ви можете шукати код інших команд, Ñкий може допомогти у вашому проекті." msgid "The circuitbreaker backoff threshold should be lower than the failure count threshold" msgstr "Поріг Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ð½Ñ circuitbreaker має бути нижчий за поріг повного відключеннÑ" msgid "The coding stage shows the time from the first commit to creating the merge request. The data will automatically be added here once you create your first merge request." -msgstr "Ðа Ñтадії напиÑÐ°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ, показує Ñ‡Ð°Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ коміту до ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ на об'єднаннÑ. Дані будуть автоматично додані піÑÐ»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ першого запиту на об'єднаннÑ." +msgstr "" msgid "The collection of events added to the data gathered for that stage." -msgstr "ÐšÐ¾Ð»ÐµÐºÑ†Ñ–Ñ Ð¿Ð¾Ð´Ñ–Ð¹ додана до даних, зібраних Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ етапу." +msgstr "" msgid "The fork relationship has been removed." -msgstr "Зв'Ñзок форка видалена." +msgstr "" msgid "The issue stage shows the time it takes from creating an issue to assigning the issue to a milestone, or add the issue to a list on your Issue Board. Begin creating issues to see data for this stage." -msgstr "Етап випуÑку показує, Ñкільки чаÑу потрібно від ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¸ до приÑÐ²Ð¾Ñ”Ð½Ð½Ñ Ð²Ð¸Ð¿ÑƒÑку, або Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¸ в вашу дошку проблем. Почніть Ñтворювати проблеми, щоб переглÑдати дані Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ етапу." +msgstr "" msgid "The number of attempts GitLab will make to access a storage." msgstr "КількіÑÑ‚ÑŒ Ñпроб, Ñкі зробить GitLab Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð¾Ñтупу до Ñховища даних." @@ -2015,10 +2489,10 @@ msgid "The pipelines schedule runs pipelines in the future, repeatedly, for spec msgstr "Розклад конвеєрів запуÑкає в майбутньому конвеєри, Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¸Ñ… гілок або тегів. Заплановані конвеєри уÑпадковують Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ð° доÑтуп до проекту на оÑнові пов'Ñзаного з ними кориÑтувача." msgid "The planning stage shows the time from the previous step to pushing your first commit. This time will be added automatically once you push your first commit." -msgstr "Ðа етапі Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶Ð°Ñ”Ñ‚ÑŒÑÑ Ñ‡Ð°Ñ Ð²Ñ–Ð´ попереднього кроку до першого коміту. ДодаєтьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾, Ñк тільки відправитÑÑ Ð¿ÐµÑ€ÑˆÐ¸Ð¹ коміт." +msgstr "" msgid "The production stage shows the total time it takes between creating an issue and deploying the code to production. The data will be automatically added once you have completed the full idea to production cycle." -msgstr "Ð¡Ñ‚Ð°Ð´Ñ–Ñ ÐŸÐ ÐžÐ”Ð°ÐºÑˆÐ¸Ð½ показує загальний Ñ‡Ð°Ñ Ð¼Ñ–Ð¶ ÑтвореннÑм проблеми та розгортаннÑм коду у ПРОДакшині. Дані будуть автоматично додані піÑÐ»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ð½Ð¾Ñ— ідеї до ПРОДакшин циклу." +msgstr "" msgid "The project can be accessed by any logged in user." msgstr "ДоÑтуп до проекту можливий будь-Ñким зареєÑтрованим кориÑтувачем." @@ -2030,13 +2504,13 @@ msgid "The repository for this project does not exist." msgstr "Репозиторій Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ проекту не Ñ–Ñнує." msgid "The review stage shows the time from creating the merge request to merging it. The data will automatically be added after you merge your first merge request." -msgstr "Ð¡Ñ‚Ð°Ð´Ñ–Ñ Ð¾Ð³Ð»Ñду показує Ñ‡Ð°Ñ Ð²Ñ–Ð´ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ про об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð´Ð¾ його виконаннÑ. Дані будуть автоматично додані піÑÐ»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ запиту на злиттÑ." +msgstr "" msgid "The staging stage shows the time between merging the MR and deploying code to the production environment. The data will be automatically added once you deploy to production for the first time." -msgstr "Ð¡Ñ‚Ð°Ð´Ñ–Ñ Ð”Ð•Ð’ показує Ñ‡Ð°Ñ Ð¼Ñ–Ð¶ злиттÑм \"MR\" та розгортаннÑм коду у ПРОДакшин. Дані автоматично додаютьÑÑ Ð¿Ñ–ÑÐ»Ñ Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ñƒ ПРОДакшин вперше." +msgstr "" msgid "The testing stage shows the time GitLab CI takes to run every pipeline for the related merge request. The data will automatically be added after your first pipeline finishes running." -msgstr "Ð¡Ñ‚Ð°Ð´Ñ–Ñ Ñ‚ÐµÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ” чаÑ, Ñкий GitLab CI виконує Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑку кожного конвеєра Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ запиту злиттÑ. Дані будуть автоматично додані піÑÐ»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ конвеєра." +msgstr "" msgid "The time in seconds GitLab will keep failure information. When no failures occur during this time, information about the mount is reset." msgstr "КількіÑÑ‚ÑŒ Ñекунд, протÑгом Ñкої GitLab зберігає інформацію про збої. Якщо протÑгом цього періоду жодних збоїв не відбуваєтьÑÑ, Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ точку Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑкидаєтьÑÑ." @@ -2045,13 +2519,16 @@ msgid "The time in seconds GitLab will try to access storage. After this time a msgstr "КількіÑÑ‚ÑŒ Ñекунд, протÑгом Ñкої GitLab намагатиметьÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ доÑтуп до Ñховища даних. По завершенню цього періоду буде згенерована помилка про Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð»Ñ–Ð¼Ñ–Ñ‚Ñƒ чаÑу." msgid "The time taken by each data entry gathered by that stage." -msgstr "ЧаÑ, витрачений на кожен елемент, зібраний на цьому етапі." +msgstr "" msgid "The value lying at the midpoint of a series of observed values. E.g., between 3, 5, 9, the median is 5. Between 3, 5, 7, 8, the median is (5+7)/2 = 6." msgstr "Середнє Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð² Ñ€Ñдку. Приклад: між 3, 5, 9, Ñередніми 5, між 3, 5, 7, 8, Ñередніми (5 + 7) / 2 = 6." msgid "There are problems accessing Git storage: " -msgstr "Є проблеми з доÑтупом до Ñховища: " +msgstr "" + +msgid "This board\\'s scope is reduced" +msgstr "ВидиміÑÑ‚ÑŒ цієї дошки обмежена" msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "Ð¦Ñ Ð³Ñ–Ð»ÐºÐ° була змінена піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾ моменту, коли ви почали Ñ—Ñ— редагувати. Ви хотіли б Ñтворити нову?" @@ -2069,11 +2546,14 @@ msgid "This issue is locked." msgstr "Ð¦Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° заблокована." msgid "This means you can not push code until you create an empty repository or import existing one." -msgstr "Це означає, що ви не можете відправлÑти код, поки не Ñтворите порожній репозиторій або ÐЕ імпортуєте Ñ–Ñнуючий." +msgstr "" msgid "This merge request is locked." msgstr "Цей запит на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð¾." +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "Ð§Ð°Ñ Ð´Ð¾ початку потраплÑÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¸ в планувальник" @@ -2081,7 +2561,7 @@ msgid "Time before an issue starts implementation" msgstr "Ð§Ð°Ñ Ð´Ð¾ початку роботи над проблемою" msgid "Time between merge request creation and merge/close" -msgstr "Ð§Ð°Ñ Ð¼Ñ–Ð¶ ÑтвореннÑм запиту Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ñ– злиттÑм або закриттÑм" +msgstr "" msgid "Time until first merge request" msgstr "Ð§Ð°Ñ Ð´Ð¾ першого запиту на злиттÑ" @@ -2224,14 +2704,26 @@ msgstr[2] "хвилин" msgid "Time|s" msgstr "Ñекунд(а)" +msgid "Title" +msgstr "Ðазва" + msgid "Total Time" msgstr "Загальний чаÑ" +msgid "Total issue time spent" +msgstr "Загальний витрачений Ñ‡Ð°Ñ Ð½Ð° проблему" + msgid "Total test time for all commits/merges" msgstr "Загальний чаÑ, щоб перевірити вÑÑ– коміти/злиттÑ" msgid "Track activity with Contribution Analytics." -msgstr "ВідÑтежувати активніÑÑ‚ÑŒ за допомогою Ðналітики контриб’юторів." +msgstr "" + +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "ВідÑтежуйте групи проблем зі Ñпільною темою з різних проектів та етапів" + +msgid "Turn on Service Desk" +msgstr "Ввімкнути Service Desk" msgid "Unlock" msgstr "Розблокувати" @@ -2249,16 +2741,16 @@ msgid "Upgrade your plan to activate Advanced Global Search." msgstr "Перейдіть на вищий тарифний план щоб активувати Покращений Глобальний Пошук." msgid "Upgrade your plan to activate Contribution Analytics." -msgstr "Перейдіть на вищий тарифний план Ð´Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ— Ðналітики контриб’юторів." +msgstr "" msgid "Upgrade your plan to activate Group Webhooks." -msgstr "Перейдіть на вищий тарифний план щоб активувати Групові Webhook’и." +msgstr "" msgid "Upgrade your plan to activate Issue weight." -msgstr "Підвищіть план щоб активувати вагу обговорень." +msgstr "" msgid "Upgrade your plan to improve Issue boards." -msgstr "Підвищіть Ñвій план, щоб покращити дошки обговорень." +msgstr "" msgid "Upload New File" msgstr "Завантажити новий файл" @@ -2269,6 +2761,9 @@ msgstr "Завантажити файл" msgid "UploadLink|click to upload" msgstr "ÐатиÑніть, щоб завантажити" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "ВикориÑтовуйте Service Desk Ð´Ð»Ñ Ð·Ð²â€™Ñзку з вашими кориÑтувачами (наприклад, щоб запропонувати клієнтÑьку підтримку) через електронну пошту безпоÑередньо із GitLab" + msgid "Use the following registration token during setup:" msgstr "ВикориÑтовувати токен під Ñ‡Ð°Ñ ÑƒÑтановки:" @@ -2300,10 +2795,13 @@ msgid "Want to see the data? Please ask an administrator for access." msgstr "Хочете побачити дані? Будь лаÑка, попроÑить у адмініÑтратора доÑтуп." msgid "We don't have enough data to show this stage." -msgstr "Ми не маємо доÑтатньо даних Ð´Ð»Ñ Ð¿Ð¾ÐºÐ°Ð·Ñƒ цього етапу." +msgstr "" + +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "Ми хочемо бути впевнені, що це ви, будь лаÑка, підтвердіть, що ви не робот." msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." -msgstr "Webhook дозволÑÑŽÑ‚ÑŒ вам викликати адреÑу URL Ñкщо, наприклад, відправлений новий код або Ñтворено нову тему повідомленнÑ. Ви можете налаштувати Webhook так, щоб він реагував на певні події, такі Ñк відправки коду, Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ запити на злиттÑ. Групові Webhook’и заÑтоÑовуютьÑÑ Ð´Ð¾ вÑÑ–Ñ… проектів в групі Ñ– дозволÑÑŽÑ‚ÑŒ вам Ñтандартизувати функціональніÑÑ‚ÑŒ Webhook’ів Ð´Ð»Ñ Ð²Ñієї вашої групи." +msgstr "" msgid "Weight" msgstr "Вага" @@ -2330,7 +2828,7 @@ msgid "WikiClone|Start Gollum and edit locally" msgstr "ЗапуÑÑ‚Ñ–Ñ‚ÑŒ Gollum Ñ– редагуйте локально" msgid "WikiEmptyPageError|You are not allowed to create wiki pages" -msgstr "Ви не можете Ñтворювати вікі-Ñторінки" +msgstr "" msgid "WikiHistoricalPage|This is an old version of this page." msgstr "Це — Ñтара верÑÑ–Ñ Ñторінки." @@ -2360,7 +2858,7 @@ msgid "WikiNewPageTip|Tip: You can specify the full path for the new file. We wi msgstr "Порада: можна вказати повний шлÑÑ… до нового файлу. Ми автоматично Ñтворимо вÑÑ– відÑутні каталоги." msgid "WikiNewPageTitle|New Wiki Page" -msgstr "Ðова Вікі-Ñторінка" +msgstr "" msgid "WikiPageConfirmDelete|Are you sure you want to delete this page?" msgstr "Ви дійÑно бажаєте видалити цю Ñторінку?" @@ -2390,7 +2888,7 @@ msgid "Wiki|Create page" msgstr "Створити Ñторінку" msgid "Wiki|Edit Page" -msgstr "Редагувати Ñторінку" +msgstr "Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ cторінки" msgid "Wiki|Empty page" msgstr "ÐŸÐ¾Ñ€Ð¾Ð¶Ð½Ñ Ñторінка" @@ -2411,10 +2909,10 @@ msgid "Wiki|Pages" msgstr "Сторінки" msgid "Wiki|Wiki Pages" -msgstr "Вікі-Ñторінки" +msgstr "" msgid "With contribution analytics you can have an overview for the activity of issues, merge requests and push events of your organization and its members." -msgstr "З аналітикою контриб’юторів ви може вивчати активніÑÑ‚ÑŒ в обговореннÑÑ…, запитах на Ð·Ð»Ð¸Ñ‚Ñ‚Ñ Ñ– подій відправки коду Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ñ— організації Ñ– Ñ—Ñ— учаÑників." +msgstr "" msgid "Withdraw Access Request" msgstr "СкаÑувати запит доÑтупу" @@ -2431,14 +2929,8 @@ msgstr "Ви збираєтеÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ зв'Ñзок з форка Ð msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "Ви збираєтеÑÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‚Ð¸ проект %{project_name_with_namespace} іншому влаÑнику. Ви ÐБСОЛЮТÐО впевнені?" -msgid "You are on a read-only GitLab instance." -msgstr "Ви знаходитеÑÑ Ð½Ð° інÑтанÑÑ– Gitlab \"тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ\"." - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "Ви знаходитеÑÑ Ð½Ð° інÑтанÑÑ– Gitlab \"тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ\". Якщо ви хочете внеÑти зміни, вам необхідно перейти на %{link_to_primary_node}." - msgid "You can only add files when you are on a branch" -msgstr "Ви можете додавати тільки файли, коли перебуваєте в гілці" +msgstr "" msgid "You cannot write to a read-only secondary GitLab Geo instance. Please use %{link_to_primary_node} instead." msgstr "Ви не можете запиÑувати на вторинні інÑтанÑи \"тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ\" GitLab Geo. Будь лаÑка викориÑтовуйте %{link_to_primary_node}." @@ -2471,10 +2963,13 @@ msgid "You will receive notifications only for comments in which you were @menti msgstr "Ви будете отримувати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ Ð´Ð»Ñ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ñ–Ð², в Ñких ви були @згадані" msgid "You won't be able to pull or push project code via %{protocol} until you %{set_password_link} on your account" -msgstr "Ви не зможете отримувати Ñ– відправлÑти код проекту через %{protocol} поки %{set_password_link} в ваш аккаунт" +msgstr "" msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" -msgstr "Ви не зможете отримувати Ñ– відправлÑти код проекту через SSH поки %{add_ssh_key_link} в ваш профіль." +msgstr "" + +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" msgid "Your comment will not be visible to the public." msgstr "Ваш коментар не буде видимим Ð´Ð»Ñ Ð²ÑÑ–Ñ…." @@ -2488,6 +2983,12 @@ msgstr "Ваше ім'Ñ" msgid "Your projects" msgstr "Ваші проекти" +msgid "branch name" +msgstr "ім'Ñ Ð³Ñ–Ð»ÐºÐ¸" + +msgid "by" +msgstr "від" + msgid "commit" msgstr "коміт" @@ -2505,9 +3006,9 @@ msgstr "ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾ÑŽ поштою" msgid "parent" msgid_plural "parents" -msgstr[0] "джерело" -msgstr[1] "джерела" -msgstr[2] "джерел" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" msgid "password" msgstr "пароль" @@ -2515,8 +3016,11 @@ msgstr "пароль" msgid "personal access token" msgstr "оÑобиÑтий токен доÑтупу" +msgid "source" +msgstr "джерело" + msgid "to help your contributors communicate effectively!" -msgstr "щоб допомогти вашим контриб’юторам ефективно ÑпілкуватиÑÑ!" +msgstr "" msgid "username" msgstr "ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача" diff --git a/locale/zh_CN/gitlab.po b/locale/zh_CN/gitlab.po index e1bc9219908..f0a5453f224 100644 --- a/locale/zh_CN/gitlab.po +++ b/locale/zh_CN/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-23 02:44-0500\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:42-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -51,6 +51,9 @@ msgid "%{storage_name}: failed storage access attempt on host:" msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" msgstr[0] "%{storage_name}:已 %{failed_attempts} 次å°è¯•è®¿é—®å˜å‚¨å¤±è´¥ï¼š" +msgid "%{text} is available" +msgstr "%{text}å¯ç”¨" + msgid "(checkout the %{link} for information on how to install it)." msgstr "(如需了解更多的安装信æ¯ï¼Œè¯·æŸ¥çœ‹ %{link})" @@ -104,14 +107,11 @@ msgid "Add Contribution guide" msgstr "æ·»åŠ è´¡çŒ®æŒ‡å—" msgid "Add Group Webhooks and GitLab Enterprise Edition." -msgstr "æ·»åŠ æ¥è‡ª Webhooks 或者 GitLab ä¼ä¸šç‰ˆçš„团队。" +msgstr "æ·»åŠ ç»„Webhookså’ŒGitLabä¼ä¸šç‰ˆã€‚" msgid "Add License" msgstr "æ·»åŠ è®¸å¯è¯" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "新建一个用于推é€æˆ–拉å–çš„ SSH 秘钥到账å·ä¸ã€‚" - msgid "Add new directory" msgstr "æ·»åŠ ç›®å½•" @@ -124,6 +124,15 @@ msgstr "高级设置" msgid "All" msgstr "全部" +msgid "An error occurred when toggling the notification subscription" +msgstr "切æ¢é€šçŸ¥è®¢é˜…æ—¶å‘生错误" + +msgid "An error occurred when updating the issue weight" +msgstr "更新议题æƒé‡æ—¶å‘生错误" + +msgid "An error occurred while fetching sidebar data" +msgstr "获å–侧边æ æ•°æ®æ—¶å‘生错误" + msgid "An error occurred. Please try again." msgstr "å‘生了错误,请å†è¯•ä¸€æ¬¡ã€‚" @@ -133,6 +142,12 @@ msgstr "外观" msgid "Applications" msgstr "应用程åº" +msgid "Apr" +msgstr "å››" + +msgid "April" +msgstr "四月" + msgid "Archived project! Repository is read-only" msgstr "项目已归档ï¼å˜å‚¨åº“为åªè¯»çŠ¶æ€" @@ -160,6 +175,12 @@ msgstr "产物" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "拖放文件到æ¤å¤„或者 %{upload_link}" +msgid "Aug" +msgstr "å…«" + +msgid "August" +msgstr "八月" + msgid "Authentication Log" msgstr "认è¯æ—¥å¿—" @@ -193,50 +214,53 @@ msgstr "想了解更多请访问 %{link_to_documentation}" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "您å¯ä»¥ä¸ºæ¤é¡¹ç›®æ¿€æ´» %{link_to_settings}。" +msgid "Available" +msgstr "å¯ç”¨çš„" + msgid "Billing" msgstr "è´¦å•" msgid "BillingPlans|%{group_name} is currently on the %{plan_link} plan." -msgstr "%{group_name} æ£åœ¨ä½¿ç”¨ %{plan_link} 方案。" +msgstr "%{group_name}ç›®å‰ä½äºŽ%{plan_link}计划ä¸ã€‚" msgid "BillingPlans|Automatic downgrade and upgrade to some plans is currently not available." -msgstr "在当å‰æ–¹æ¡ˆä¸ä¸å¯ä½¿ç”¨è‡ªåŠ¨é™çº§æˆ–自动å‡çº§ã€‚" +msgstr "自动é™çº§ã€å‡çº§åˆ°æŸäº›è®¡åˆ’ç›®å‰ä¸å¯ç”¨ã€‚" msgid "BillingPlans|Current plan" -msgstr "当å‰æ–¹æ¡ˆ" +msgstr "当å‰è®¡åˆ’" msgid "BillingPlans|Customer Support" -msgstr "用户支æŒ" +msgstr "客户支æŒ" msgid "BillingPlans|Downgrade" msgstr "é™çº§" msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}." -msgstr "阅读 %{faq_link} 以了解更多信æ¯ã€‚" +msgstr "通过阅读我们的%{faq_link}了解有关æ¯ä¸ªè®¡åˆ’的更多信æ¯ã€‚" msgid "BillingPlans|Manage plan" -msgstr "管ç†æ–¹æ¡ˆ" +msgstr "管ç†è®¡åˆ’" msgid "BillingPlans|Please contact %{customer_support_link} in that case." -msgstr "请è”ç³» %{customer_support_link}" +msgstr "在这ç§æƒ…况下请è”ç³»%{customer_support_link}。" msgid "BillingPlans|See all %{plan_name} features" -msgstr "查看所有 %{plan_name} 功能" +msgstr "查看所有%{plan_name}功能" msgid "BillingPlans|This group uses the plan associated with its parent group." -msgstr "使用与其父项目一致的方案" +msgstr "该群组使用其父群组相关è”的计划。" msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}." -msgstr "访问 %{parent_billing_page_link} 以管ç†è¯¥é¡¹ç›®çš„计费方案。" +msgstr "è¦ç®¡ç†æ¤ç¾¤ç»„的计划,请访问%{parent_billing_page_link}çš„è´¦å•éƒ¨åˆ†ã€‚" msgid "BillingPlans|Upgrade" msgstr "å‡çº§" msgid "BillingPlans|You are currently on the %{plan_link} plan." -msgstr "您目å‰æ£åœ¨ä½¿ç”¨ %{plan_link} 方案。" +msgstr "您目å‰æ£åœ¨ä½¿ç”¨%{plan_link}计划。" msgid "BillingPlans|frequently asked questions" -msgstr "常è§é—®é¢˜" +msgstr "常问问题" msgid "BillingPlans|monthly" msgstr "æ¯æœˆ" @@ -245,7 +269,7 @@ msgid "BillingPlans|paid annually at %{price_per_year}" msgstr "æ¯å¹´æ”¯ä»˜ %{price_per_year}" msgid "BillingPlans|per user" -msgstr "æ¯ä¸ªç”¨æˆ·" +msgstr "æ¯ç”¨æˆ·" msgid "Branch" msgid_plural "Branches" @@ -257,6 +281,12 @@ msgstr "已创建分支 <strong>%{branch_name}</strong> 。如需设置自动部 msgid "Branch has changed" msgstr "分支已有新å˜æ›´" +msgid "Branch is already taken" +msgstr "分支已被采用" + +msgid "Branch name" +msgstr "分支å称" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "æœç´¢åˆ†æ”¯" @@ -318,7 +348,7 @@ msgid "Branches|Sort by" msgstr "排åº" msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." -msgstr "åˆ†æ”¯æ— æ³•è‡ªåŠ¨æäº¤ï¼Œå› ä¸ºä¸Žä¸Šæ¸¸åˆ†æ”¯å†²çªã€‚" +msgstr "分支ä¸èƒ½è‡ªåŠ¨æ›´æ–°ï¼Œå› 为它与上游分支ä¸ä¸€è‡´ã€‚" msgid "Branches|The default branch cannot be deleted" msgstr "æ— æ³•åˆ é™¤é»˜è®¤åˆ†æ”¯" @@ -333,13 +363,13 @@ msgid "Branches|To confirm, type %{branch_name_confirmation}:" msgstr "è¦ç¡®è®¤ï¼Ÿè¯·è¾“å…¥ %{branch_name_confirmation} :" msgid "Branches|To discard the local changes and overwrite the branch with the upstream version, delete it here and choose 'Update Now' above." -msgstr "è‹¥è¦æ”¾å¼ƒæœ¬åœ°æ›´æ”¹å¹¶ä½¿ç”¨ä¸Šæ¸¸ç‰ˆæœ¬è¦†ç›–æœ¬åˆ†æ”¯ï¼Œè¯·å…ˆåˆ é™¤å¹¶â€œç«‹å³æ›´æ–°â€ã€‚" +msgstr "è¦æ”¾å¼ƒæœ¬åœ°æ›´æ”¹å¹¶è¦†ç›–上游版本的分支,请在æ¤å¤„å°†å…¶åˆ é™¤ï¼Œç„¶åŽé€‰æ‹©ä¸Šé¢çš„“立å³æ›´æ–°â€ã€‚" msgid "Branches|You’re about to permanently delete the protected branch %{branch_name}." msgstr "å°†è¦æ°¸ä¹…åˆ é™¤å—ä¿æŠ¤ %{branch_name} 分支。" msgid "Branches|diverged from upstream" -msgstr "与上游å˜åœ¨å·®å¼‚" +msgstr "上游分支" msgid "Branches|merged" msgstr "å·²åˆå¹¶çš„" @@ -381,7 +411,7 @@ msgid "Cancel edit" msgstr "å–消编辑" msgid "Change Weight" -msgstr "å˜æ›´æƒé‡" +msgstr "改å˜æƒé‡" msgid "ChangeTypeActionLabel|Pick into branch" msgstr "选择分支" @@ -404,6 +434,12 @@ msgstr "统计图" msgid "Chat" msgstr "å³æ—¶é€šè®¯" +msgid "Checking %{text} availability…" +msgstr "æ£åœ¨æ£€æŸ¥%{text}çš„å¯ç”¨æ€§..." + +msgid "Checking branch availability..." +msgstr "æ£åœ¨æ£€æŸ¥åˆ†æ”¯çš„å¯ç”¨æ€§..." + msgid "Cherry-pick this commit" msgstr "优选æ¤æ交" @@ -479,8 +515,41 @@ msgstr "å…³é—" msgid "Cluster" msgstr "集群" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" -msgstr "必须在æ¤å¸æˆ·ä¸‹åˆ›å»º %{link_to_container_project}" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "%{appList}å·²æˆåŠŸå®‰è£…在您的群集上" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "%{boldNotice}è¿™ä¼šå¢žåŠ ä¸€äº›é¢å¤–的资æºï¼Œå¦‚è´Ÿè½½å‡è¡¡å™¨ï¼Œè¿™ä¼šäº§ç”Ÿé¢å¤–çš„æˆæœ¬ã€‚请å‚阅%{pricingLink}" + +msgid "ClusterIntegration|API URL" +msgstr "API地å€" + +msgid "ClusterIntegration|Active" +msgstr "å¯ç”¨" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "æ·»åŠ ä¸€ä¸ªçŽ°æœ‰çš„é›†ç¾¤" + +msgid "ClusterIntegration|Add cluster" +msgstr "æ·»åŠ é›†ç¾¤" + +msgid "ClusterIntegration|All" +msgstr "所有" + +msgid "ClusterIntegration|Applications" +msgstr "应用程åº" + +msgid "ClusterIntegration|CA Certificate" +msgstr "CAè¯ä¹¦" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "è¯ä¹¦æŽˆæƒåŒ…(PEMæ ¼å¼)" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "选择如何设置集群集æˆ" + +msgid "ClusterIntegration|Cluster" +msgstr "集群" msgid "ClusterIntegration|Cluster details" msgstr "集群详情" @@ -498,26 +567,59 @@ msgid "ClusterIntegration|Cluster integration is enabled for this project. Disab msgstr "æ¤é¡¹ç›®å·²å¯ç”¨é›†ç¾¤é›†æˆã€‚ç¦ç”¨æ¤é›†æˆä¸ä¼šå½±å“您的集群,它åªä¼šæš‚æ—¶å…³é— GitLab 的连接。" msgid "ClusterIntegration|Cluster is being created on Google Kubernetes Engine..." -msgstr "集群æ£åœ¨ Google Kubernetes Engine 上创建..." +msgstr "群集æ£åœ¨Google Kubernetes Engine上创建..." msgid "ClusterIntegration|Cluster name" msgstr "集群å称" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" -msgstr "集群已在 Google Kubernetes Engine 上æˆåŠŸåˆ›å»º" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "集群已在Google Kubernetes Engine上æˆåŠŸåˆ›å»ºã€‚刷新页é¢ä»¥æŸ¥çœ‹é›†ç¾¤çš„详细信æ¯" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "集群å…许您使用审阅应用程åºã€éƒ¨ç½²åº”用程åºã€è¿è¡Œæµæ°´çº¿ç‰ç‰ã€‚%{link_to_help_page}" + +msgid "ClusterIntegration|Copy API URL" +msgstr "å¤åˆ¶API地å€" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "å¤åˆ¶CAè¯ä¹¦" + +msgid "ClusterIntegration|Copy Token" +msgstr "å¤åˆ¶ä»¤ç‰Œ" msgid "ClusterIntegration|Copy cluster name" msgstr "å¤åˆ¶é›†ç¾¤å称" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "在 GitLab 上创建一个 Google Engine 集群" + msgid "ClusterIntegration|Create cluster" msgstr "创建集群" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" -msgstr "在 Google Kubernetes Engine 上创建新集群" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "在 Google Kubernetes Engine 上创建集群" + +msgid "ClusterIntegration|Create on GKE" +msgstr "在GKEä¸åˆ›å»º" msgid "ClusterIntegration|Enable cluster integration" msgstr "å¯ç”¨é›†ç¾¤é›†æˆ" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "输入现有的 Kubernetes 集群详细信æ¯" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "输入您的集群详细信æ¯" + +msgid "ClusterIntegration|Environment pattern" +msgstr "环境模å¼" + +msgid "ClusterIntegration|GKE pricing" +msgstr "GKEä»·æ ¼" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "GitLab Runner" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "Google 云平å°é¡¹ç›®ID" @@ -527,27 +629,75 @@ msgstr "Google Kubernetes Engine" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "Google Kubernetes Engine 项目" +msgid "ClusterIntegration|Helm Tiller" +msgstr "Helm Tiller" + +msgid "ClusterIntegration|Inactive" +msgstr "待用" + +msgid "ClusterIntegration|Ingress" +msgstr "å…¥å£" + +msgid "ClusterIntegration|Install" +msgstr "安装" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "在集群上安装应用程åºã€‚阅读更多关于%{helpLink}" + +msgid "ClusterIntegration|Installed" +msgstr "已安装" + +msgid "ClusterIntegration|Installing" +msgstr "安装ä¸" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "集群自动化集æˆ" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "了解详细%{link_to_documentation}" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "了解更多集群的信æ¯" + msgid "ClusterIntegration|Machine type" msgstr "机器类型" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "ç¡®ä¿æ‚¨çš„å¸æˆ·ç¬¦åˆåˆ›å»ºé›†ç¾¤çš„%{link_to_requirements}" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" -msgstr "管ç†æ‚¨çš„ GitLab 项目集群集æˆ" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" +msgstr "在 GitLab 项目上管ç†é›†ç¾¤é›†æˆ" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "访问%{link_gke}æ¥ç®¡ç†æ‚¨çš„集群" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "GitLabä¼ä¸šé«˜çº§ç‰ˆå’Œæ——舰版æ供了多个集群" + +msgid "ClusterIntegration|Note:" +msgstr "注æ„:" + msgid "ClusterIntegration|Number of nodes" msgstr "节点数é‡" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "请为您的群集输入访问信æ¯ã€‚如果您需è¦å¸®åŠ©ï¼Œå¯ä»¥é˜…读我们关于集群的 %{link_to_help_page}" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "请确ä¿æ‚¨çš„ Google å¸æˆ·ç¬¦åˆä»¥ä¸‹è¦æ±‚:" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "设置集群时出现问题" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "设置集群列表时出现问题" + +msgid "ClusterIntegration|Project ID" +msgstr "项目 ID" + +msgid "ClusterIntegration|Project namespace" +msgstr "项目命å空间" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "项目命å空间(å¯é€‰ï¼Œå”¯ä¸€)" @@ -560,8 +710,14 @@ msgstr "åˆ é™¤é›†ç¾¤é›†æˆ" msgid "ClusterIntegration|Remove integration" msgstr "åˆ é™¤é›†æˆ" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." -msgstr "åˆ é™¤é›†ç¾¤é›†æˆå°†åˆ é™¤æ‚¨æ·»åŠ åˆ°æ¤é¡¹ç›®çš„集群é…置。它ä¸ä¼šåˆ 除您的项目。" +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "åˆ é™¤é›†ç¾¤é›†æˆå°†åˆ é™¤å·²æ·»åŠ åˆ°æ¤é¡¹ç›®çš„集群é…置。它ä¸ä¼šåˆ 除 Google Kubernetes Engine 上的集群。" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "请求安装失败" + +msgid "ClusterIntegration|Save changes" +msgstr "ä¿å˜æ›´æ”¹" msgid "ClusterIntegration|See and edit the details for your cluster" msgstr "查看并编辑集群的详细信æ¯" @@ -575,20 +731,38 @@ msgstr "看到您的项目" msgid "ClusterIntegration|See zones" msgstr "查看区域" +msgid "ClusterIntegration|Service token" +msgstr "æœåŠ¡ä»¤ç‰Œ" + +msgid "ClusterIntegration|Show" +msgstr "显示" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "å‘生了内部错误" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "在 Google Kubernetes Engine 上创建集群时å‘生错误" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "安装 %{title} æ—¶å‘生故障" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "没有è¦æ˜¾ç¤ºçš„集群" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "æ¤å¸æˆ·å¿…须有æƒåœ¨ä¸‹é¢æŒ‡å®šçš„%{link_to_container_project}ä¸åˆ›å»ºé›†ç¾¤" + msgid "ClusterIntegration|Toggle Cluster" msgstr "切æ¢é›†ç¾¤" +msgid "ClusterIntegration|Token" +msgstr "令牌" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "使用与æ¤é¡¹ç›®å…³è”的集群,您å¯ä»¥ä½¿ç”¨å®¡é˜…应用程åºï¼Œéƒ¨ç½²åº”用程åºï¼Œè¿è¡Œæµæ°´çº¿ç‰ç‰ã€‚" msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" -msgstr "您的å¸æˆ·å¿…须有%{link_to_kubernetes_engine}" +msgstr "您的å¸æˆ·å¿…须拥有%{link_to_kubernetes_engine}" msgid "ClusterIntegration|Zone" msgstr "区域" @@ -599,9 +773,15 @@ msgstr "访问 Google Kubernetes Engine" msgid "ClusterIntegration|cluster" msgstr "集群" +msgid "ClusterIntegration|documentation" +msgstr "文档" + msgid "ClusterIntegration|help page" msgstr "帮助页é¢" +msgid "ClusterIntegration|installing applications" +msgstr "安装应用程åº" + msgid "ClusterIntegration|meets the requirements" msgstr "符åˆè¦æ±‚" @@ -615,10 +795,6 @@ msgid "Commit" msgid_plural "Commits" msgstr[0] "æ交" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "æ交 %d 个文件" - msgid "Commit Message" msgstr "æ交消æ¯" @@ -700,11 +876,20 @@ msgstr "贡献指å—" msgid "Contributors" msgstr "贡献者" +msgid "ContributorsPage|Building repository graph." +msgstr "构建å˜å‚¨åº“å›¾æ ‡ã€‚" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "æ交到%{branch_name},排除åˆå¹¶æ交。é™äºŽ6000次æ交。" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "请ç¨ç‰ç‰‡åˆ»ï¼Œè¿™ä¸ªé¡µé¢ä¼šåœ¨å‡†å¤‡å¥½æ—¶è‡ªåŠ¨åˆ·æ–°ã€‚" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" -msgstr "控制æ¤æ¬¡è¦èŠ‚点的 LFS/attachment 的最大并å‘性" +msgstr "控制æ¤æ¬¡è¦èŠ‚点的 LFS/attachment 的最大并å‘" msgid "Control the maximum concurrency of repository backfill for this secondary node" -msgstr "控制æ¤æ¬¡è¦èŠ‚点的å˜å‚¨åº“的最大并å‘" +msgstr "控制æ¤æ¬¡è¦èŠ‚点的å˜å‚¨åº“最大并å‘" msgid "Copy SSH public key to clipboard" msgstr "å¤åˆ¶ SSH 公钥到剪贴æ¿" @@ -727,6 +912,9 @@ msgstr "创建目录" msgid "Create empty bare repository" msgstr "创建空的å˜å‚¨åº“" +msgid "Create epic" +msgstr "创建EPIC" + msgid "Create file" msgstr "创建文件" @@ -754,6 +942,9 @@ msgstr "æ ‡ç¾" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "创建个人访问令牌" +msgid "Creating epic" +msgstr "创建EPICä¸" + msgid "Cron Timezone" msgstr "Cron 时区" @@ -799,6 +990,12 @@ msgstr "所有" msgid "DashboardProjects|Personal" msgstr "个人" +msgid "Dec" +msgstr "å二" + +msgid "December" +msgstr "å二月" + msgid "Define a custom pattern with cron syntax" msgstr "使用 Cron è¯æ³•å®šä¹‰è‡ªå®šä¹‰æ¨¡å¼" @@ -816,7 +1013,7 @@ msgid "Description" msgstr "æè¿°" msgid "Description templates allow you to define context-specific templates for issue and merge request description fields for your project." -msgstr "æ述模æ¿å…许您为项目的议题和åˆå¹¶è¯·æ±‚在创建时选择特定的模版。" +msgstr "æ述模æ¿å…许您为项目的问题和åˆå¹¶è¯·æ±‚定义æè¿°å—段的特定模æ¿ã€‚" msgid "Details" msgstr "详情" @@ -872,6 +1069,72 @@ msgstr "编辑 %{id} æµæ°´çº¿è®¡åˆ’" msgid "Emails" msgstr "电å邮件" +msgid "Environments|An error occurred while fetching the environments." +msgstr "获å–环境时å‘生错误。" + +msgid "Environments|An error occurred while making the request." +msgstr "å‘é€è¯·æ±‚æ—¶å‘生错误。" + +msgid "Environments|Commit" +msgstr "æ交" + +msgid "Environments|Deployment" +msgstr "部署" + +msgid "Environments|Environment" +msgstr "环境" + +msgid "Environments|Environments" +msgstr "环境" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "环境是部署代ç 的地方,例如预生产或生产。" + +msgid "Environments|Job" +msgstr "作业" + +msgid "Environments|New environment" +msgstr "新建环境" + +msgid "Environments|No deployments yet" +msgstr "未部署" + +msgid "Environments|Open" +msgstr "打开" + +msgid "Environments|Re-deploy" +msgstr "é‡æ–°éƒ¨ç½²" + +msgid "Environments|Read more about environments" +msgstr "了解有关环境的更多信æ¯" + +msgid "Environments|Rollback" +msgstr "还原" + +msgid "Environments|Show all" +msgstr "显示全部" + +msgid "Environments|Updated" +msgstr "已更新" + +msgid "Environments|You don't have any environments right now." +msgstr "ä½ è¿˜æ²¡æœ‰è®¾ç½®çŽ¯å¢ƒ" + +msgid "Epic will be removed! Are you sure?" +msgstr "EPICå°†è¢«åˆ é™¤!是å¦ç¡®å®šï¼Ÿ" + +msgid "Epics" +msgstr "EPIC" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "EPICè®©ä½ æ›´æœ‰æ•ˆçŽ‡åœ°ç®¡ç†ä½ 的项目组åˆï¼Œè€Œä¸”ä¸è´¹å¹ç°ä¹‹åŠ›" + +msgid "Error creating epic" +msgstr "创建EPIC时出错" + +msgid "Error occurred when toggling the notification subscription" +msgstr "切æ¢é€šçŸ¥è®¢é˜…æ—¶å‘生错误" + msgid "EventFilterBy|Filter by all" msgstr "全部" @@ -911,6 +1174,12 @@ msgstr "æ— æ³•å˜æ›´æ‰€æœ‰è€…" msgid "Failed to remove the pipeline schedule" msgstr "æ— æ³•åˆ é™¤æµæ°´çº¿è®¡åˆ’" +msgid "Feb" +msgstr "二" + +msgid "February" +msgstr "二月" + msgid "File name" msgstr "文件å" @@ -957,14 +1226,29 @@ msgstr "GPG 密钥" msgid "Geo Nodes" msgstr "Geo 节点" +msgid "GeoNodeSyncStatus|Failed" +msgstr "失败" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "节点出现故障或æŸå。" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "节点è¿è¡Œç¼“æ…¢ã€è¶…è½½, 或者在åœæœºåŽåˆšåˆšæ¢å¤ã€‚" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "未åŒæ¥" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "å·²åŒæ¥" + msgid "Geo|File sync capacity" -msgstr "文件åŒæ¥å®¹é‡" +msgstr "文件åŒæ¥é‡" msgid "Geo|Groups to replicate" -msgstr "è¦å¤åˆ¶çš„群组" +msgstr "å¤åˆ¶ç¾¤ç»„" msgid "Geo|Repository sync capacity" -msgstr "å˜å‚¨åº“åŒæ¥å®¹é‡" +msgstr "å˜å‚¨åº“åŒæ¥é‡" msgid "Geo|Select groups to replicate." msgstr "选择è¦å¤åˆ¶çš„群组。" @@ -1020,9 +1304,6 @@ msgstr "找ä¸åˆ°ç¾¤ç»„" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "您å¯ä»¥ç®¡ç†ç¾¤ç»„æˆå‘˜çš„æƒé™å¹¶è®¿é—®ç¾¤ç»„ä¸çš„æ¯ä¸ªé¡¹ç›®ã€‚" -msgid "GroupsTreeRole|as" -msgstr "çš„" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "您确定è¦ç¦»å¼€ç¾¤ç»„“${this.group.fullName}â€å—?" @@ -1053,6 +1334,9 @@ msgstr "对ä¸èµ·ï¼Œæ²¡æœ‰æœç´¢åˆ°ä»»ä½•ç¬¦åˆçš„群组" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "对ä¸èµ·ï¼Œæ²¡æœ‰ä»»ä½•ç¾¤ç»„或项目符åˆæ‚¨çš„æœç´¢" +msgid "Have your users email" +msgstr "æœ‰ä½ çš„ç”¨æˆ·é‚®ä»¶" + msgid "Health Check" msgstr "å¥åº·æ£€æŸ¥" @@ -1111,9 +1395,6 @@ msgstr "周期分æžç®€ä»‹" msgid "Issue board focus mode" msgstr "议题看æ¿æ¨¡å¼" -msgid "Issue boards with milestones" -msgstr "议题看æ¿ä¸Žé‡Œç¨‹ç¢‘" - msgid "Issue events" msgstr "议题事件" @@ -1126,6 +1407,24 @@ msgstr "看æ¿" msgid "Issues" msgstr "议题" +msgid "Jan" +msgstr "一" + +msgid "January" +msgstr "一月" + +msgid "Jul" +msgstr "七" + +msgid "July" +msgstr "七月" + +msgid "Jun" +msgstr "å…" + +msgid "June" +msgstr "å…月" + msgid "LFSStatus|Disabled" msgstr "åœç”¨" @@ -1197,9 +1496,18 @@ msgstr "å·²é”定文件" msgid "Login" msgstr "登录" +msgid "Mar" +msgstr "三" + +msgid "March" +msgstr "三月" + msgid "Maximum git storage failures" msgstr "最大 git å˜å‚¨å¤±è´¥" +msgid "May" +msgstr "五" + msgid "Median" msgstr "ä¸ä½æ•°" @@ -1243,9 +1551,15 @@ msgstr "创建æµæ°´çº¿è®¡åˆ’" msgid "New branch" msgstr "新建分支" +msgid "New branch unavailable" +msgstr "新分支ä¸å¯ç”¨" + msgid "New directory" msgstr "新建目录" +msgid "New epic" +msgstr "æ–°EPIC" + msgid "New file" msgstr "新建文件" @@ -1282,6 +1596,9 @@ msgstr "没有å˜å‚¨åº“" msgid "No schedules" msgstr "没有计划" +msgid "No time spent" +msgstr "没有花费时间" + msgid "None" msgstr "æ— " @@ -1348,18 +1665,33 @@ msgstr "关注" msgid "Notifications" msgstr "通知" +msgid "Nov" +msgstr "å一" + +msgid "November" +msgstr "å一月" + msgid "Number of access attempts" msgstr "å°è¯•è®¿é—®æ¬¡æ•°" msgid "Number of failures before backing off" msgstr "退出å‰çš„失败次数" +msgid "Oct" +msgstr "å" + +msgid "October" +msgstr "å月" + msgid "OfSearchInADropdown|Filter" msgstr "ç›é€‰" msgid "Only project members can comment." msgstr "åªæœ‰é¡¹ç›®æˆå‘˜å¯ä»¥å‘表评论。" +msgid "Opened" +msgstr "已打开" + msgid "OpenedNDaysAgo|Opened" msgstr "创建于" @@ -1492,6 +1824,9 @@ msgstr "于阶段" msgid "Pipeline|with stages" msgstr "于阶段" +msgid "Please solve the reCAPTCHA" +msgstr "请填写验è¯ç 。" + msgid "Preferences" msgstr "å好设置" @@ -1597,9 +1932,15 @@ msgstr "分支图" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "è”系管ç†å‘˜æ›´æ”¹æ¤è®¾ç½®ã€‚" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "ç«‹å³åœ¨é»˜è®¤åˆ†æ”¯ä¸Šè¿è¡Œæµæ°´çº¿" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "åªæœ‰å·²ç¾ç½²æ交æ‰å¯ä»¥æŽ¨é€åˆ°æ¤å˜å‚¨åº“。" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "设置CI/CD时出现JavaScript问题" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "æ¤è®¾ç½®å·²åº”用于æœåŠ¡å™¨çº§åˆ«ï¼Œå¯ç”±ç®¡ç†å‘˜è¦†ç›–。" @@ -1636,6 +1977,39 @@ msgstr "对ä¸èµ·ï¼Œæ²¡æœ‰æœç´¢åˆ°ç¬¦åˆæ¡ä»¶çš„项目" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "æ¤åŠŸèƒ½éœ€è¦æµè§ˆå™¨æ”¯æŒ localStorage" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "默认情况下,Prometheus ä¾¦å¬ â€˜http://localhost:9090’。ä¸å»ºè®®æ›´æ”¹é»˜è®¤åœ°å€å’Œç«¯å£ï¼Œå› 为这å¯èƒ½ä¼šå½±å“或冲çªåœ¨ GitLab æœåŠ¡å™¨ä¸Šè¿è¡Œçš„其他æœåŠ¡ã€‚" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "查找和é…ç½®æŒ‡æ ‡..." + +msgid "PrometheusService|Metrics" +msgstr "æŒ‡æ ‡" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "æŒ‡æ ‡ä¼šæ ¹æ®æŒ‡å®šçš„æŒ‡æ ‡åº“è‡ªåŠ¨é…置和监控。" + +msgid "PrometheusService|Missing environment variable" +msgstr "没有环境å˜é‡" + +msgid "PrometheusService|Monitored" +msgstr "监测" + +msgid "PrometheusService|More information" +msgstr "更多的信æ¯" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "æ²¡æœ‰ç›‘æµ‹æŒ‡æ ‡ã€‚è¦å¼€å§‹ç›‘测,请部署到环境ä¸ã€‚" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "Prometheus API 地å€ï¼Œä¾‹å¦‚ http://prometheus.example.com/" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "Prometheus 监测" + +msgid "PrometheusService|View environments" +msgstr "查看环境" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "公开 - 群组和任何公共项目å¯ä»¥åœ¨æ²¡æœ‰ä»»ä½•èº«ä»½éªŒè¯çš„情况下查看。" @@ -1732,6 +2106,9 @@ msgstr "日程" msgid "Scheduling Pipelines" msgstr "æµæ°´çº¿è®¡åˆ’" +msgid "Scoped issue boards" +msgstr "议题看æ¿èŒƒå›´" + msgid "Search branches and tags" msgstr "æœç´¢åˆ†æ”¯å’Œæ ‡ç¾" @@ -1753,6 +2130,12 @@ msgstr "选择时区" msgid "Select target branch" msgstr "é€‰æ‹©ç›®æ ‡åˆ†æ”¯" +msgid "Sep" +msgstr "ä¹" + +msgid "September" +msgstr "ä¹æœˆ" + msgid "Service Templates" msgstr "æœåŠ¡æ¨¡æ¿" @@ -1784,14 +2167,29 @@ msgid "Showing %d event" msgid_plural "Showing %d events" msgstr[0] "显示 %d 个事件" +msgid "Sidebar|Change weight" +msgstr "编辑宽度" + +msgid "Sidebar|Edit" +msgstr "编辑" + +msgid "Sidebar|No" +msgstr "æ— " + +msgid "Sidebar|None" +msgstr "æ— " + +msgid "Sidebar|Weight" +msgstr "宽度" + msgid "Snippets" msgstr "代ç 片段" msgid "Something went wrong on our end." msgstr "å‘生了错误。" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" -msgstr "å°è¯•æ›´æ”¹ ${this.issuableDisplayName(this.issuableType)} çš„é”定状æ€æ—¶å‘生错误" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" +msgstr "è¯•å›¾æ”¹å˜ ${this.issuableDisplayName} çš„é”定状æ€æ—¶å‡ºé”™äº†" msgid "Something went wrong while fetching the projects." msgstr "拉å–项目时å‘生错误。" @@ -1854,7 +2252,7 @@ msgid "SortOptions|Milestone due soon" msgstr "å³å°†æˆªæ¢çš„里程碑" msgid "SortOptions|More weight" -msgstr "更大的æƒé‡" +msgstr "最高æƒé‡" msgid "SortOptions|Most popular" msgstr "最å—欢迎" @@ -1898,9 +2296,15 @@ msgstr "现在开始" msgid "SortOptions|Weight" msgstr "æƒé‡" +msgid "Source" +msgstr "æº" + msgid "Source code" msgstr "æºä»£ç " +msgid "Source is not available" +msgstr "æºä¸å¯ç”¨" + msgid "Spam Logs" msgstr "垃圾信æ¯æ—¥å¿—" @@ -1919,6 +2323,9 @@ msgstr "ç”±æ¤æ›´æ”¹ %{new_merge_request}" msgid "Start the Runner!" msgstr "å¯åŠ¨ Runner!" +msgid "Stopped" +msgstr "å·²åœæ¢" + msgid "Subgroups" msgstr "å群组" @@ -1938,6 +2345,75 @@ msgstr[0] "æ ‡ç¾" msgid "Tags" msgstr "æ ‡ç¾" +msgid "TagsPage|Browse commits" +msgstr "æµè§ˆæ交" + +msgid "TagsPage|Browse files" +msgstr "æµè§ˆæ–‡ä»¶" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "æ— æ³•æ‰¾åˆ°æ¤æ ‡è®°çš„HEADæ交" + +msgid "TagsPage|Cancel" +msgstr "å–消" + +msgid "TagsPage|Create tag" +msgstr "åˆ›å»ºæ ‡ç¾" + +msgid "TagsPage|Delete tag" +msgstr "åˆ é™¤æ ‡ç¾" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "åˆ é™¤ %{tag_name} åŽå°†æ— 法æ¢å¤ï¼Œæ‚¨ç¡®å®šï¼Ÿ" + +msgid "TagsPage|Edit release notes" +msgstr "编辑å‘行记录" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "å·²å˜åœ¨åˆ†æ”¯åç§°ï¼Œæ ‡è®°æˆ–æ交SHA" + +msgid "TagsPage|Filter by tag name" +msgstr "æ ¹æ®æ ‡ç¾å称过滤" + +msgid "TagsPage|New Tag" +msgstr "æ–°æ ‡ç¾" + +msgid "TagsPage|New tag" +msgstr "æ–°æ ‡ç¾" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "(å¯é€‰)æ·»åŠ ä¸€æ¡æ¶ˆæ¯åˆ°æ ‡ç¾ã€‚" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "(å¯é€‰)å°†å‘è¡Œè¯´æ˜Žæ·»åŠ åˆ°æ ‡ç¾ã€‚它们将被å˜å‚¨åœ¨GitLabæ•°æ®åº“ä¸å¹¶æ˜¾ç¤ºåœ¨æ ‡ç¾é¡µä¸Šã€‚" + +msgid "TagsPage|Release notes" +msgstr "å‘行说明" + +msgid "TagsPage|Repository has no tags yet." +msgstr "ç‰ˆæœ¬åº“è¿˜æ²¡æœ‰æ ‡ç¾ã€‚" + +msgid "TagsPage|Sort by" +msgstr "排åº" + +msgid "TagsPage|Tags" +msgstr "æ ‡ç¾" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "æ ‡ç¾å…·æœ‰åœ¨æ交历å²ä¸Šæ ‡è®°ç‰¹å®šæ交的能力" + +msgid "TagsPage|This tag has no release notes." +msgstr "æ¤æ ‡ç¾æ²¡æœ‰å‘行说明。" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "使用git tagå‘½ä»¤æ·»åŠ ä¸€ä¸ªï¼š" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "撰写å‘行说明或拖放文件到这里..." + +msgid "TagsPage|protected" +msgstr "å·²ä¿æŠ¤" + msgid "Target Branch" msgstr "ç›®æ ‡åˆ†æ”¯" @@ -1945,10 +2421,10 @@ msgid "Team" msgstr "团队" msgid "Thanks! Don't show me this again" -msgstr "ä¸å†æ˜¾ç¤ºè¯¥æ示" +msgstr "谢谢 ! 请ä¸è¦å†æ˜¾ç¤º" msgid "The Advanced Global Search in GitLab is a powerful search service that saves you time. Instead of creating duplicate code and wasting time, you can now search for code within other teams that can help your own project." -msgstr "GitLab ä¸çš„高级全局æœç´¢åŠŸèƒ½æ˜¯éžå¸¸å¼ºå¤§çš„æœç´¢æœåŠ¡ã€‚您å¯ä»¥æœç´¢å…¶ä»–团队的代ç 以帮助您完善自己项目ä¸çš„代ç 。从而é¿å…创建é‡å¤çš„代ç 或浪费时间。" +msgstr "GitLab ä¸çš„高级全局æœç´¢åŠŸèƒ½æ˜¯éžå¸¸å¼ºå¤§çš„æœç´¢æœåŠ¡ã€‚您å¯ä»¥æœç´¢å…¶ä»–团队的代ç 以帮助您完善自己项目ä¸çš„代ç 。从而é¿å…创建é‡å¤çš„代ç 和浪费时间。" msgid "The circuitbreaker backoff threshold should be lower than the failure count threshold" msgstr "æ–路器关é—阈值应该低于故障计数阈值" @@ -2019,6 +2495,9 @@ msgstr "ä¸ä½æ•°æ˜¯ä¸€ä¸ªæ•°åˆ—ä¸æœ€ä¸é—´çš„值。例如在 3ã€5ã€9 之间ï msgid "There are problems accessing Git storage: " msgstr "访问 Git å˜å‚¨æ—¶å‡ºçŽ°é—®é¢˜ï¼š" +msgid "This board\\'s scope is reduced" +msgstr "这个看æ¿çš„范围缩å°äº†" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "自您开始编辑åŽ, æ¤åˆ†æ”¯å·²æ›´æ”¹ã€‚您想创建一个新的分支å—?" @@ -2040,6 +2519,9 @@ msgstr "在创建一个空的å˜å‚¨åº“或导入现有å˜å‚¨åº“之å‰ï¼Œå°†æ— 法 msgid "This merge request is locked." msgstr "æ¤åˆå¹¶è¯·æ±‚å·²é”定。" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "这些电å邮件自动生æˆä¸ºé—®é¢˜(评论生æˆä¸ºç”µå邮件对è¯)在这里列出。" + msgid "Time before an issue gets scheduled" msgstr "议题被列入日程表的时间" @@ -2186,14 +2668,26 @@ msgstr[0] "分钟" msgid "Time|s" msgstr "秒" +msgid "Title" +msgstr "æ ‡é¢˜" + msgid "Total Time" msgstr "总时间" +msgid "Total issue time spent" +msgstr "议题花费时间总计" + msgid "Total test time for all commits/merges" msgstr "所有æ交和åˆå¹¶çš„总测试时间" msgid "Track activity with Contribution Analytics." -msgstr "跟踪分æžè´¡çŒ®ä¸Žæ´»åŠ¨ã€‚" +msgstr "跟踪活动与贡献的分æžã€‚" + +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "在项目和里程碑之间跟踪共享主题的议题组" + +msgid "Turn on Service Desk" +msgstr "打开æœåŠ¡å°" msgid "Unlock" msgstr "解é”" @@ -2231,6 +2725,9 @@ msgstr "ä¸Šä¼ æ–‡ä»¶" msgid "UploadLink|click to upload" msgstr "ç‚¹å‡»ä¸Šä¼ " +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "使用æœåŠ¡å°åœ¨GitLab内部通过电å邮件与用户è”系(例如æ供客户支æŒï¼‰" + msgid "Use the following registration token during setup:" msgstr "在安装过程ä¸ä½¿ç”¨ä»¥ä¸‹æ³¨å†Œä»¤ç‰Œï¼š" @@ -2264,6 +2761,9 @@ msgstr "æƒé™ä¸è¶³ã€‚如需查看相关数æ®ï¼Œè¯·å‘管ç†å‘˜ç”³è¯·æƒé™ã€‚ msgid "We don't have enough data to show this stage." msgstr "该阶段的数æ®ä¸è¶³ï¼Œæ— 法显示。" +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "我们è¦ç¡®å®šä½ 是ä¸æ˜¯æœºå™¨äººã€‚" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "如果有新的推é€æˆ–新的议题,Webhook将自动触å‘您设置URL。 您å¯ä»¥é…ç½® Webhook æ¥ç›‘å¬ç‰¹å®šäº‹ä»¶ï¼Œå¦‚推é€ã€è®®é¢˜æˆ–åˆå¹¶è¯·æ±‚。 群组 Webhook 将适用于团队ä¸çš„所有项目,并å…许您设置整个团队ä¸çš„ Webhook 。" @@ -2393,12 +2893,6 @@ msgstr "å³å°†åˆ 除与æºé¡¹ç›® %{forked_from_project} 的派生关系。确定 msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "å³å°† %{project_name_with_namespace} 转移给å¦ä¸€ä¸ªæ‰€æœ‰è€…。确定继ç»å—?" -msgid "You are on a read-only GitLab instance." -msgstr "您在一个åªè¯» GitLab 实例上。" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "您在一个åªè¯»çš„ GitLab 实例上。如果您想进行任何更改,您必须访问%{link_to_primary_node}。" - msgid "You can only add files when you are on a branch" msgstr "åªèƒ½åœ¨åˆ†æ”¯ä¸Šæ·»åŠ 文件" @@ -2438,6 +2932,9 @@ msgstr "在账å·ä¸ %{set_password_link} 之å‰å°†æ— 法通过 %{protocol} 拉å msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "在账å·ä¸ %{add_ssh_key_link} 之å‰å°†æ— 法通过 SSH 拉å–或推é€ä»£ç 。" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "在您的个人资料ä¸æ·»åŠ SSH密钥之å‰ï¼Œæ‚¨ä¸èƒ½é€šè¿‡SSHæ¥æ‹‰å–或推é€é¡¹ç›®ä»£ç 。" + msgid "Your comment will not be visible to the public." msgstr "您的评论将ä¸ä¼šå…¬å¼€æ˜¾ç¤ºã€‚" @@ -2450,6 +2947,12 @@ msgstr "您的åå—" msgid "Your projects" msgstr "您的项目" +msgid "branch name" +msgstr "分支å称" + +msgid "by" +msgstr "æ¥è‡ª" + msgid "commit" msgstr "æ交" @@ -2473,6 +2976,9 @@ msgstr "密ç " msgid "personal access token" msgstr "个人访问令牌" +msgid "source" +msgstr "æº" + msgid "to help your contributors communicate effectively!" msgstr "帮助您的贡献者进行有效沟通ï¼" diff --git a/locale/zh_HK/gitlab.po b/locale/zh_HK/gitlab.po index b851809fc7c..b368487ac71 100644 --- a/locale/zh_HK/gitlab.po +++ b/locale/zh_HK/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-15 02:54-0500\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:42-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Chinese Traditional, Hong Kong\n" "Language: zh_HK\n" @@ -51,6 +51,9 @@ msgid "%{storage_name}: failed storage access attempt on host:" msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" msgstr[0] "%{storage_name}:已訪å•æ¤ä¸»æ©Ÿå¤±æ•— %{failed_attempts} 次" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "(想了解更多的安è£è¨Šæ¯è«‹æŸ¥çœ‹ %{link})" @@ -109,9 +112,6 @@ msgstr "" msgid "Add License" msgstr "æ·»åŠ è¨±å¯è‰" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "新增壹個用於推é€æˆ–拉å–çš„ SSH 秘鑰到賬號ä¸ã€‚" - msgid "Add new directory" msgstr "æ·»åŠ æ–°ç›®éŒ„" @@ -124,6 +124,15 @@ msgstr "" msgid "All" msgstr "全部" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "" @@ -133,6 +142,12 @@ msgstr "" msgid "Applications" msgstr "" +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + msgid "Archived project! Repository is read-only" msgstr "æ¸æª”é …ç›®ï¼å˜å„²åº«ç‚ºåªè®€" @@ -160,6 +175,12 @@ msgstr "" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "拖放文件到æ¤è™•æˆ–者 %{upload_link}" +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + msgid "Authentication Log" msgstr "" @@ -193,6 +214,9 @@ msgstr "" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "" +msgid "Available" +msgstr "" + msgid "Billing" msgstr "" @@ -257,6 +281,12 @@ msgstr "分支 <strong>%{branch_name}</strong> 已創建。如需è¨ç½®è‡ªå‹•éƒ¨ msgid "Branch has changed" msgstr "" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "æœç´¢åˆ†æ”¯" @@ -404,6 +434,12 @@ msgstr "統計圖" msgid "Chat" msgstr "" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "優é¸æ¤æ交" @@ -479,7 +515,40 @@ msgstr "" msgid "Cluster" msgstr "" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" msgstr "" msgid "ClusterIntegration|Cluster details" @@ -503,21 +572,54 @@ msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "" @@ -527,27 +629,75 @@ msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" msgstr "" +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" + msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "" @@ -560,7 +710,13 @@ msgstr "" msgid "ClusterIntegration|Remove integration" msgstr "" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" @@ -575,15 +731,33 @@ msgstr "" msgid "ClusterIntegration|See zones" msgstr "" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" msgstr "" +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" + msgid "ClusterIntegration|Toggle Cluster" msgstr "" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "" @@ -599,9 +773,15 @@ msgstr "" msgid "ClusterIntegration|cluster" msgstr "" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "" @@ -615,10 +795,6 @@ msgid "Commit" msgid_plural "Commits" msgstr[0] "æ交" -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "" - msgid "Commit Message" msgstr "" @@ -700,6 +876,15 @@ msgstr "è²¢ç»æŒ‡å—" msgid "Contributors" msgstr "è²¢ç»è€…" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" msgstr "" @@ -727,6 +912,9 @@ msgstr "創建目錄" msgid "Create empty bare repository" msgstr "創建空的å˜å„²åº«" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "" @@ -754,6 +942,9 @@ msgstr "標籤" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "創建個人訪å•ä»¤ç‰Œ" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "Cron 時å€" @@ -799,6 +990,12 @@ msgstr "" msgid "DashboardProjects|Personal" msgstr "" +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + msgid "Define a custom pattern with cron syntax" msgstr "使用 Cron 語法定義自定義模å¼" @@ -872,6 +1069,72 @@ msgstr "編輯 %{id} æµæ°´ç·šè¨ˆåŠƒ" msgid "Emails" msgstr "" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "全部" @@ -911,6 +1174,12 @@ msgstr "無法變更所有者" msgid "Failed to remove the pipeline schedule" msgstr "無法刪除æµæ°´ç·šè¨ˆåŠƒ" +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + msgid "File name" msgstr "" @@ -957,6 +1226,21 @@ msgstr "" msgid "Geo Nodes" msgstr "" +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" + msgid "Geo|File sync capacity" msgstr "" @@ -1020,9 +1304,6 @@ msgstr "" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "" -msgid "GroupsTreeRole|as" -msgstr "" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "" @@ -1053,6 +1334,9 @@ msgstr "" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "å¥åº·æª¢æŸ¥ (Health Check)" @@ -1111,9 +1395,6 @@ msgstr "週期分æžç°¡ä»‹" msgid "Issue board focus mode" msgstr "" -msgid "Issue boards with milestones" -msgstr "" - msgid "Issue events" msgstr "è°é¡Œäº‹ä»¶ (issue event)" @@ -1126,6 +1407,24 @@ msgstr "" msgid "Issues" msgstr "" +msgid "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + msgid "LFSStatus|Disabled" msgstr "åœç”¨" @@ -1197,9 +1496,18 @@ msgstr "" msgid "Login" msgstr "" +msgid "Mar" +msgstr "" + +msgid "March" +msgstr "" + msgid "Maximum git storage failures" msgstr "" +msgid "May" +msgstr "" + msgid "Median" msgstr "ä¸ä½æ•¸" @@ -1243,9 +1551,15 @@ msgstr "創建æµæ°´ç·šè¨ˆåŠƒ" msgid "New branch" msgstr "新增分支" +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "新增目錄" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "新增文件" @@ -1282,6 +1596,9 @@ msgstr "沒有å˜å„²åº«" msgid "No schedules" msgstr "沒有計劃" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "" @@ -1348,18 +1665,33 @@ msgstr "關注" msgid "Notifications" msgstr "" +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + msgid "Number of access attempts" msgstr "" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + msgid "OfSearchInADropdown|Filter" msgstr "篩é¸" msgid "Only project members can comment." msgstr "" +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "開始於" @@ -1492,6 +1824,9 @@ msgstr "於階段" msgid "Pipeline|with stages" msgstr "於階段" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "" @@ -1597,9 +1932,15 @@ msgstr "分支圖" msgid "ProjectSettings|Contact an admin to change this setting." msgstr "" +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" + msgid "ProjectSettings|Only signed commits can be pushed to this repository." msgstr "" +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" + msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." msgstr "" @@ -1636,6 +1977,39 @@ msgstr "" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "" @@ -1732,6 +2106,9 @@ msgstr "" msgid "Scheduling Pipelines" msgstr "æµæ°´ç·šè¨ˆåŠƒ" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "æœç´¢åˆ†æ”¯å’Œæ¨™ç±¤" @@ -1753,6 +2130,12 @@ msgstr "é¸æ“‡æ™‚å€" msgid "Select target branch" msgstr "é¸æ“‡ç›®æ¨™åˆ†æ”¯" +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + msgid "Service Templates" msgstr "" @@ -1784,13 +2167,28 @@ msgid "Showing %d event" msgid_plural "Showing %d events" msgstr[0] "顯示 %d 個事件" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "" msgid "Something went wrong on our end." msgstr "" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" msgstr "" msgid "Something went wrong while fetching the projects." @@ -1898,9 +2296,15 @@ msgstr "" msgid "SortOptions|Weight" msgstr "" +msgid "Source" +msgstr "" + msgid "Source code" msgstr "æºä»£ç¢¼" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "" @@ -1919,6 +2323,9 @@ msgstr "ç”±æ¤æ›´æ”¹ %{new_merge_request}" msgid "Start the Runner!" msgstr "é‹ä½œ Runner!" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "" @@ -1938,6 +2345,75 @@ msgstr[0] "標籤" msgid "Tags" msgstr "標籤" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "目標分支" @@ -2019,6 +2495,9 @@ msgstr "ä¸ä½æ•¸æ˜¯å£¹å€‹æ•¸åˆ—ä¸æœ€ä¸é–“的值。例如在 3ã€5ã€9 之間ï msgid "There are problems accessing Git storage: " msgstr "è¨ªå• Git å˜å„²æ™‚出ç¾å•é¡Œï¼š" +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "" @@ -2040,6 +2519,9 @@ msgstr "在創建壹個空的å˜å„²åº«æˆ–å°Žå…¥ç¾æœ‰å˜å„²åº«ä¹‹å‰ï¼Œæ‚¨å°‡ç„¡ msgid "This merge request is locked." msgstr "" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "è°é¡Œè¢«åˆ—入日程表的時間" @@ -2186,15 +2668,27 @@ msgstr[0] "分é˜" msgid "Time|s" msgstr "秒" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "總時間" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "所有æ交和åˆä½µçš„總測試時間" msgid "Track activity with Contribution Analytics." msgstr "" +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" + msgid "Unlock" msgstr "" @@ -2231,6 +2725,9 @@ msgstr "上傳文件" msgid "UploadLink|click to upload" msgstr "點擊上傳" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "在安è£éŽç¨‹ä¸ä½¿ç”¨ä»¥ä¸‹è¨»å†Šä»¤ç‰Œï¼š" @@ -2264,6 +2761,9 @@ msgstr "權é™ä¸è¶³ã€‚如需查看相關數據,請å‘管ç†å“¡ç”³è«‹æ¬Šé™ã€‚ msgid "We don't have enough data to show this stage." msgstr "該階段的數據ä¸è¶³ï¼Œç„¡æ³•é¡¯ç¤ºã€‚" +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" @@ -2393,12 +2893,6 @@ msgstr "å³å°‡åˆªé™¤èˆ‡æºé …ç›® %{forked_from_project} 的派生關系。確定 msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "å³å°‡ %{project_name_with_namespace} 轉義給å¦å£¹å€‹æ‰€æœ‰è€…。確定繼續嗎?" -msgid "You are on a read-only GitLab instance." -msgstr "" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "" - msgid "You can only add files when you are on a branch" msgstr "åªèƒ½åœ¨åˆ†æ”¯ä¸Šæ·»åŠ 文件" @@ -2438,6 +2932,9 @@ msgstr "在賬號上 %{set_password_link} 之å‰å°‡ç„¡æ³•é€šéŽ %{protocol} 拉 msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "åœ¨è³¬è™Ÿä¸ %{add_ssh_key_link} 之å‰å°‡ç„¡æ³•é€šéŽ SSH 拉å–或推é€ä»£ç¢¼ã€‚" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "" @@ -2450,6 +2947,12 @@ msgstr "您的åå—" msgid "Your projects" msgstr "" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" msgstr "" @@ -2473,6 +2976,9 @@ msgstr "" msgid "personal access token" msgstr "" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" msgstr "" diff --git a/locale/zh_TW/gitlab.po b/locale/zh_TW/gitlab.po index b6d4ed27487..76c1e598433 100644 --- a/locale/zh_TW/gitlab.po +++ b/locale/zh_TW/gitlab.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: gitlab-ee\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-02 14:42+0100\n" -"PO-Revision-Date: 2017-11-20 03:59-0500\n" +"POT-Creation-Date: 2017-12-12 18:31+0000\n" +"PO-Revision-Date: 2018-01-05 04:42-0500\n" "Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" @@ -51,6 +51,9 @@ msgid "%{storage_name}: failed storage access attempt on host:" msgid_plural "%{storage_name}: %{failed_attempts} failed storage access attempts:" msgstr[0] "%{storage_name}:已å˜å–æ¤ä¸»æ©Ÿå¤±æ•— %{failed_attempts} 次" +msgid "%{text} is available" +msgstr "" + msgid "(checkout the %{link} for information on how to install it)." msgstr "(如何安è£è«‹åƒé–± %{link})" @@ -95,7 +98,7 @@ msgid "Activity" msgstr "活動" msgid "Add" -msgstr "å¢žåŠ " +msgstr "" msgid "Add Changelog" msgstr "新增更新日誌" @@ -104,14 +107,11 @@ msgid "Add Contribution guide" msgstr "新增å”作指å—" msgid "Add Group Webhooks and GitLab Enterprise Edition." -msgstr "åŠ å…¥ä¾†è‡ª Webhooks 或者是 GitLab ä¼æ¥ç‰ˆçš„群組" +msgstr "" msgid "Add License" msgstr "新增授權æ¢æ¬¾" -msgid "Add an SSH key to your profile to pull or push via SSH." -msgstr "å°‡ SSH 金鑰新增至您的個人帳號後, å³å¯é€éŽ SSH 來上傳 (push) 或下載 (pull) 。" - msgid "Add new directory" msgstr "新增目錄" @@ -124,6 +124,15 @@ msgstr "進階è¨å®š" msgid "All" msgstr "全部" +msgid "An error occurred when toggling the notification subscription" +msgstr "" + +msgid "An error occurred when updating the issue weight" +msgstr "" + +msgid "An error occurred while fetching sidebar data" +msgstr "" + msgid "An error occurred. Please try again." msgstr "發生錯誤,請å†è©¦ä¸€æ¬¡ã€‚" @@ -133,6 +142,12 @@ msgstr "外觀" msgid "Applications" msgstr "應用程å¼" +msgid "Apr" +msgstr "" + +msgid "April" +msgstr "" + msgid "Archived project! Repository is read-only" msgstr "æ¤å°ˆæ¡ˆå·²å°å˜ï¼æª”案庫 (repository) 為唯讀狀態" @@ -160,6 +175,12 @@ msgstr "" msgid "Attach a file by drag & drop or %{upload_link}" msgstr "拖放檔案到æ¤è™•æˆ–者 %{upload_link}" +msgid "Aug" +msgstr "" + +msgid "August" +msgstr "" + msgid "Authentication Log" msgstr "登入紀錄" @@ -193,59 +214,62 @@ msgstr "了解更多於 %{link_to_documentation}" msgid "AutoDevOps|You can activate %{link_to_settings} for this project." msgstr "ä½ å¯ä»¥ç‚ºæ¤å°ˆæ¡ˆå•Ÿå‹• %{link_to_settings}" +msgid "Available" +msgstr "" + msgid "Billing" -msgstr "方案" +msgstr "" msgid "BillingPlans|%{group_name} is currently on the %{plan_link} plan." -msgstr "%{group_name} ç›®å‰ä½¿ç”¨ %{plan_link} 方案。" +msgstr "" msgid "BillingPlans|Automatic downgrade and upgrade to some plans is currently not available." -msgstr "ç›®å‰ç„¡æ³•è‡ªå‹•å‡ç´šæˆ–é™ç´šè‡³å…¶ä»–方案。" +msgstr "" msgid "BillingPlans|Current plan" -msgstr "ç›®å‰æ–¹æ¡ˆ" +msgstr "" msgid "BillingPlans|Customer Support" -msgstr "客戶æœå‹™" +msgstr "" msgid "BillingPlans|Downgrade" -msgstr "é™ç´š" +msgstr "" msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}." -msgstr "了解更多我們的方案,或是閱讀 %{faq_link}" +msgstr "" msgid "BillingPlans|Manage plan" -msgstr "管ç†æ–¹æ¡ˆ" +msgstr "" msgid "BillingPlans|Please contact %{customer_support_link} in that case." -msgstr "è«‹è¯ç¹« %{customer_support_link}" +msgstr "" msgid "BillingPlans|See all %{plan_name} features" -msgstr "查看更多 %{plan_name} 功能" +msgstr "" msgid "BillingPlans|This group uses the plan associated with its parent group." -msgstr "æ¤ç¾¤çµ„與上層群組使用相åŒçš„方案。" +msgstr "" msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}." -msgstr "請至 %{parent_billing_page_link} 來管ç†æ¤ç¾¤çµ„的方案。" +msgstr "" msgid "BillingPlans|Upgrade" -msgstr "å‡ç´š" +msgstr "" msgid "BillingPlans|You are currently on the %{plan_link} plan." -msgstr "ç›®å‰ä½¿ç”¨ %{plan_link} 方案。" +msgstr "" msgid "BillingPlans|frequently asked questions" -msgstr "常見å•é¡Œ" +msgstr "" msgid "BillingPlans|monthly" -msgstr "æ¯å€‹æœˆ" +msgstr "" msgid "BillingPlans|paid annually at %{price_per_year}" -msgstr "æ¯å¹´æ”¶å– %{price_per_year}" +msgstr "" msgid "BillingPlans|per user" -msgstr "æ¯ä½ä½¿ç”¨è€…" +msgstr "" msgid "Branch" msgid_plural "Branches" @@ -257,6 +281,12 @@ msgstr "已建立分支 (branch) <strong>%{branch_name}</strong> 。如需è¨å®š msgid "Branch has changed" msgstr "分支(branch)已變更" +msgid "Branch is already taken" +msgstr "" + +msgid "Branch name" +msgstr "" + msgid "BranchSwitcherPlaceholder|Search branches" msgstr "æœå°‹åˆ†æ”¯ (branches)" @@ -318,7 +348,7 @@ msgid "Branches|Sort by" msgstr "排åºè‡ª" msgid "Branches|The branch could not be updated automatically because it has diverged from its upstream counterpart." -msgstr "分支無法自動é€äº¤ï¼Œå› 為與上游分支è¡çªã€‚" +msgstr "" msgid "Branches|The default branch cannot be deleted" msgstr "無法刪除é è¨åˆ†æ”¯" @@ -339,7 +369,7 @@ msgid "Branches|You’re about to permanently delete the protected branch %{bran msgstr "ä½ å°‡æ°¸ä¹…åˆªé™¤å—ä¿è·çš„ %{branch_name} 分支。" msgid "Branches|diverged from upstream" -msgstr "與上游分æ§" +msgstr "" msgid "Branches|merged" msgstr "å·²åˆä½µ" @@ -381,7 +411,7 @@ msgid "Cancel edit" msgstr "å–消編輯" msgid "Change Weight" -msgstr "變更權é‡" +msgstr "" msgid "ChangeTypeActionLabel|Pick into branch" msgstr "挑é¸åˆ°åˆ†æ”¯ (branch) " @@ -404,6 +434,12 @@ msgstr "統計圖" msgid "Chat" msgstr "å³æ™‚通訊" +msgid "Checking %{text} availability…" +msgstr "" + +msgid "Checking branch availability..." +msgstr "" + msgid "Cherry-pick this commit" msgstr "挑é¸æ¤æ›´å‹•è¨˜éŒ„ (commit) " @@ -411,7 +447,7 @@ msgid "Cherry-pick this merge request" msgstr "挑é¸æ¤åˆä½µè«‹æ±‚ (merge request) " msgid "Choose which groups you wish to replicate to this secondary node. Leave blank to replicate all." -msgstr "é¸æ“‡ä½ 想è¦è¤‡è£½åˆ°ç¬¬äºŒç¯€é»žçš„群組。若留白則會複製全部的群組。" +msgstr "" msgid "CiStatusLabel|canceled" msgstr "å·²å–消" @@ -474,13 +510,46 @@ msgid "Clone repository" msgstr "複製(clone)檔案庫(repository)" msgid "Close" -msgstr "關閉" +msgstr "" msgid "Cluster" msgstr "å¢é›†" -msgid "ClusterIntegration|A %{link_to_container_project} must have been created under this account" -msgstr "å¿…é ˆåœ¨æ¤å¸³è™Ÿä¸‹å»ºç«‹ %{link_to_container_project}" +msgid "ClusterIntegration|%{appList} was successfully installed on your cluster" +msgstr "" + +msgid "ClusterIntegration|%{boldNotice} This will add some extra resources like a load balancer, which incur additional costs. See %{pricingLink}" +msgstr "" + +msgid "ClusterIntegration|API URL" +msgstr "" + +msgid "ClusterIntegration|Active" +msgstr "" + +msgid "ClusterIntegration|Add an existing cluster" +msgstr "" + +msgid "ClusterIntegration|Add cluster" +msgstr "" + +msgid "ClusterIntegration|All" +msgstr "" + +msgid "ClusterIntegration|Applications" +msgstr "" + +msgid "ClusterIntegration|CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Certificate Authority bundle (PEM format)" +msgstr "" + +msgid "ClusterIntegration|Choose how to set up cluster integration" +msgstr "" + +msgid "ClusterIntegration|Cluster" +msgstr "" msgid "ClusterIntegration|Cluster details" msgstr "å¢é›†è©³æƒ…" @@ -498,56 +567,137 @@ msgid "ClusterIntegration|Cluster integration is enabled for this project. Disab msgstr "æ¤å°ˆæ¡ˆå·²å•Ÿç”¨å¢é›†æ•´åˆã€‚ç¦æ¢å¢é›†æ•´åˆä¸æœƒå½±éŸ¿æ‚¨çš„å¢é›†ï¼Œå®ƒåªæ˜¯æš«æ™‚關閉 GitLab 的連接。" msgid "ClusterIntegration|Cluster is being created on Google Kubernetes Engine..." -msgstr "在 Google 容器引擎ä¸å»ºç«‹æ–°çš„å¢é›†" +msgstr "" msgid "ClusterIntegration|Cluster name" msgstr "å¢é›†å稱" -msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine" -msgstr "在 Google 容器引擎上æˆåŠŸå»ºç«‹å¢é›†" +msgid "ClusterIntegration|Cluster was successfully created on Google Kubernetes Engine. Refresh the page to see cluster's details" +msgstr "" + +msgid "ClusterIntegration|Clusters allow you to use review apps, deploy your applications, run your pipelines, and much more in an easy way. %{link_to_help_page}" +msgstr "" + +msgid "ClusterIntegration|Copy API URL" +msgstr "" + +msgid "ClusterIntegration|Copy CA Certificate" +msgstr "" + +msgid "ClusterIntegration|Copy Token" +msgstr "" msgid "ClusterIntegration|Copy cluster name" msgstr "複製å¢é›†å稱" +msgid "ClusterIntegration|Create a new cluster on Google Engine right from GitLab" +msgstr "" + msgid "ClusterIntegration|Create cluster" msgstr "建立å¢é›†" -msgid "ClusterIntegration|Create new cluster on Google Kubernetes Engine" -msgstr "在 Google 容器引擎ä¸å»ºç«‹æ–°çš„å¢é›†" +msgid "ClusterIntegration|Create cluster on Google Kubernetes Engine" +msgstr "" + +msgid "ClusterIntegration|Create on GKE" +msgstr "" msgid "ClusterIntegration|Enable cluster integration" msgstr "å•Ÿå‹•å¢é›†æ•´åˆ" +msgid "ClusterIntegration|Enter the details for an existing Kubernetes cluster" +msgstr "" + +msgid "ClusterIntegration|Enter the details for your cluster" +msgstr "" + +msgid "ClusterIntegration|Environment pattern" +msgstr "" + +msgid "ClusterIntegration|GKE pricing" +msgstr "" + +msgid "ClusterIntegration|GitLab Runner" +msgstr "" + msgid "ClusterIntegration|Google Cloud Platform project ID" msgstr "Google 雲端專案 ID" msgid "ClusterIntegration|Google Kubernetes Engine" -msgstr "Google 容器引擎" +msgstr "" msgid "ClusterIntegration|Google Kubernetes Engine project" -msgstr "Google 容器引擎專案" +msgstr "" + +msgid "ClusterIntegration|Helm Tiller" +msgstr "" + +msgid "ClusterIntegration|Inactive" +msgstr "" + +msgid "ClusterIntegration|Ingress" +msgstr "" + +msgid "ClusterIntegration|Install" +msgstr "" + +msgid "ClusterIntegration|Install applications on your cluster. Read more about %{helpLink}" +msgstr "" + +msgid "ClusterIntegration|Installed" +msgstr "" + +msgid "ClusterIntegration|Installing" +msgstr "" + +msgid "ClusterIntegration|Integrate cluster automation" +msgstr "" msgid "ClusterIntegration|Learn more about %{link_to_documentation}" msgstr "å¸ç¿’更多有關於%{link_to_documentation}" +msgid "ClusterIntegration|Learn more about Clusters" +msgstr "" + msgid "ClusterIntegration|Machine type" msgstr "機器型別" msgid "ClusterIntegration|Make sure your account %{link_to_requirements} to create clusters" msgstr "請確èªæ‚¨çš„帳戶ä¸%{link_to_requirements} 是å¦å»ºç«‹å¢é›†" -msgid "ClusterIntegration|Manage Cluster integration on your GitLab project" -msgstr "åœ¨ä½ çš„ GitLab 專案上管ç†å¢é›†æ•´åˆ" +msgid "ClusterIntegration|Manage cluster integration on your GitLab project" +msgstr "" msgid "ClusterIntegration|Manage your cluster by visiting %{link_gke}" msgstr "請至 %{link_gke} 管ç†ä½ çš„å¢é›†" +msgid "ClusterIntegration|Multiple clusters are available in GitLab Entreprise Edition Premium and Ultimate" +msgstr "" + +msgid "ClusterIntegration|Note:" +msgstr "" + msgid "ClusterIntegration|Number of nodes" msgstr "所有的端點數é‡" +msgid "ClusterIntegration|Please enter access information for your cluster. If you need help, you can read our %{link_to_help_page} on clusters" +msgstr "" + msgid "ClusterIntegration|Please make sure that your Google account meets the following requirements:" msgstr "請確èªä½ çš„ Google 帳號是å¦ç¬¦åˆé€™äº›æ¢ä»¶" +msgid "ClusterIntegration|Problem setting up the cluster" +msgstr "" + +msgid "ClusterIntegration|Problem setting up the clusters list" +msgstr "" + +msgid "ClusterIntegration|Project ID" +msgstr "" + +msgid "ClusterIntegration|Project namespace" +msgstr "" + msgid "ClusterIntegration|Project namespace (optional, unique)" msgstr "專案命å空間(é¸å¡«ï¼Œä¸å¯é‡è¤‡ï¼‰" @@ -560,8 +710,14 @@ msgstr "刪除å¢é›†æ•´åˆ" msgid "ClusterIntegration|Remove integration" msgstr "刪除整åˆ" -msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your project." -msgstr "當刪除å¢é›†éœ€è¦åŠ 入專案的定義組態檔,會刪除å¢é›†æ•´åˆã€‚這並ä¸æœƒåˆªé™¤ä½ 的專案。 刪除å¢é›†çš„åŒæ™‚ï¼Œå°‡ä¸€èµ·åˆªé™¤å·²åŠ å…¥æ¤å°ˆæ¡ˆçš„å®šç¾©çµ„æ…‹æª”ï¼Œä½†ä½ çš„å°ˆæ¡ˆä¸æœƒå› æ¤è¢«åˆªé™¤ã€‚" +msgid "ClusterIntegration|Removing cluster integration will remove the cluster configuration you have added to this project. It will not delete your cluster on Google Kubernetes Engine." +msgstr "" + +msgid "ClusterIntegration|Request to begin installing failed" +msgstr "" + +msgid "ClusterIntegration|Save changes" +msgstr "" msgid "ClusterIntegration|See and edit the details for your cluster" msgstr "æŸ¥çœ‹èˆ‡ç·¨è¼¯ä½ çš„å¢é›†å…§å®¹" @@ -575,33 +731,57 @@ msgstr "查看您的專案" msgid "ClusterIntegration|See zones" msgstr "查看å€åŸŸ" +msgid "ClusterIntegration|Service token" +msgstr "" + +msgid "ClusterIntegration|Show" +msgstr "" + msgid "ClusterIntegration|Something went wrong on our end." msgstr "內部發生了錯誤" msgid "ClusterIntegration|Something went wrong while creating your cluster on Google Kubernetes Engine" -msgstr "在 Google Kubernetes Engine 上建立å¢é›†æ™‚發生了錯誤" +msgstr "" + +msgid "ClusterIntegration|Something went wrong while installing %{title}" +msgstr "" + +msgid "ClusterIntegration|There are no clusters to show" +msgstr "" + +msgid "ClusterIntegration|This account must have permissions to create a cluster in the %{link_to_container_project} specified below" +msgstr "" msgid "ClusterIntegration|Toggle Cluster" msgstr "å¢é›†é–‹é—œ" +msgid "ClusterIntegration|Token" +msgstr "" + msgid "ClusterIntegration|With a cluster associated to this project, you can use review apps, deploy your applications, run your pipelines, and much more in an easy way." msgstr "當å¢é›†é€£çµåˆ°æ¤å°ˆæ¡ˆï¼Œä½ å¯ä»¥ä½¿ç”¨è¤‡é–±æ‡‰ç”¨ (review apps)ï¼Œéƒ¨ç½²ä½ çš„æ‡‰ç”¨ç¨‹å¼ï¼ŒåŸ·è¡Œä½ çš„æµæ°´ç·š (pipelines),還有更多容易上手的方å¼å¯ä»¥ä½¿ç”¨ã€‚" msgid "ClusterIntegration|Your account must have %{link_to_kubernetes_engine}" -msgstr "æ‚¨çš„å¸³è™Ÿå¿…é ˆæœ‰ %{link_to_kubernetes_engine}" +msgstr "" msgid "ClusterIntegration|Zone" msgstr "å€åŸŸ" msgid "ClusterIntegration|access to Google Kubernetes Engine" -msgstr "å˜å– Google Kubernetes Engine" +msgstr "" msgid "ClusterIntegration|cluster" msgstr "å¢é›†" +msgid "ClusterIntegration|documentation" +msgstr "" + msgid "ClusterIntegration|help page" msgstr "說明é é¢" +msgid "ClusterIntegration|installing applications" +msgstr "" + msgid "ClusterIntegration|meets the requirements" msgstr "符åˆéœ€æ±‚" @@ -615,10 +795,6 @@ msgid "Commit" msgid_plural "Commits" msgstr[0] "更動記錄 (commit) " -msgid "Commit %d file" -msgid_plural "Commit %d files" -msgstr[0] "æ交 %d 個檔案" - msgid "Commit Message" msgstr "更動訊æ¯" @@ -700,14 +876,23 @@ msgstr "å”作指å—" msgid "Contributors" msgstr "å”作者" +msgid "ContributorsPage|Building repository graph." +msgstr "" + +msgid "ContributorsPage|Commits to %{branch_name}, excluding merge commits. Limited to 6,000 commits." +msgstr "" + +msgid "ContributorsPage|Please wait a moment, this page will automatically refresh when ready." +msgstr "" + msgid "Control the maximum concurrency of LFS/attachment backfill for this secondary node" -msgstr "控制次節點 (secondary node) åŒæ¥ LFS 和附檔的最大並行率 (concurrency)" +msgstr "" msgid "Control the maximum concurrency of repository backfill for this secondary node" -msgstr "控制次節點 (secondary node) åŒæ¥æª”案庫 (repository) 的最大並行率 (concurrency)" +msgstr "" msgid "Copy SSH public key to clipboard" -msgstr "複製 SSH 金鑰到剪貼簿" +msgstr "" msgid "Copy URL to clipboard" msgstr "複製網å€åˆ°å‰ªè²¼ç°¿" @@ -727,6 +912,9 @@ msgstr "建立目錄" msgid "Create empty bare repository" msgstr "建立一個新的 bare repository" +msgid "Create epic" +msgstr "" + msgid "Create file" msgstr "新增檔案" @@ -754,6 +942,9 @@ msgstr "建立標籤" msgid "CreateTokenToCloneLink|create a personal access token" msgstr "建立個人å˜å–æ†‘è‰ (access token)" +msgid "Creating epic" +msgstr "" + msgid "Cron Timezone" msgstr "Cron 時å€" @@ -799,6 +990,12 @@ msgstr "全部" msgid "DashboardProjects|Personal" msgstr "個人" +msgid "Dec" +msgstr "" + +msgid "December" +msgstr "" + msgid "Define a custom pattern with cron syntax" msgstr "使用 Cron 語法自訂排程" @@ -816,7 +1013,7 @@ msgid "Description" msgstr "æè¿°" msgid "Description templates allow you to define context-specific templates for issue and merge request description fields for your project." -msgstr "æ述範本 (Description templates) è®“ä½ åœ¨å»ºç«‹å°ˆæ¡ˆçš„è°é¡Œ (Issue) å’Œåˆä½µè«‹æ±‚時å¯ä»¥é¸æ“‡ç‰¹å®šçš„範本。" +msgstr "" msgid "Details" msgstr "細節" @@ -872,6 +1069,72 @@ msgstr "編輯 %{id} æµæ°´ç·š (pipeline) 排程" msgid "Emails" msgstr "é›»å郵件" +msgid "Environments|An error occurred while fetching the environments." +msgstr "" + +msgid "Environments|An error occurred while making the request." +msgstr "" + +msgid "Environments|Commit" +msgstr "" + +msgid "Environments|Deployment" +msgstr "" + +msgid "Environments|Environment" +msgstr "" + +msgid "Environments|Environments" +msgstr "" + +msgid "Environments|Environments are places where code gets deployed, such as staging or production." +msgstr "" + +msgid "Environments|Job" +msgstr "" + +msgid "Environments|New environment" +msgstr "" + +msgid "Environments|No deployments yet" +msgstr "" + +msgid "Environments|Open" +msgstr "" + +msgid "Environments|Re-deploy" +msgstr "" + +msgid "Environments|Read more about environments" +msgstr "" + +msgid "Environments|Rollback" +msgstr "" + +msgid "Environments|Show all" +msgstr "" + +msgid "Environments|Updated" +msgstr "" + +msgid "Environments|You don't have any environments right now." +msgstr "" + +msgid "Epic will be removed! Are you sure?" +msgstr "" + +msgid "Epics" +msgstr "" + +msgid "Epics let you manage your portfolio of projects more efficiently and with less effort" +msgstr "" + +msgid "Error creating epic" +msgstr "" + +msgid "Error occurred when toggling the notification subscription" +msgstr "" + msgid "EventFilterBy|Filter by all" msgstr "顯示全部" @@ -911,6 +1174,12 @@ msgstr "無法變更所有權" msgid "Failed to remove the pipeline schedule" msgstr "無法刪除æµæ°´ç·š (pipeline) 排程" +msgid "Feb" +msgstr "" + +msgid "February" +msgstr "" + msgid "File name" msgstr "檔案å稱" @@ -955,19 +1224,34 @@ msgid "GPG Keys" msgstr "GPG 金鑰" msgid "Geo Nodes" -msgstr "Geo 節點" +msgstr "" + +msgid "GeoNodeSyncStatus|Failed" +msgstr "" + +msgid "GeoNodeSyncStatus|Node is failing or broken." +msgstr "" + +msgid "GeoNodeSyncStatus|Node is slow, overloaded, or it just recovered after an outage." +msgstr "" + +msgid "GeoNodeSyncStatus|Out of sync" +msgstr "" + +msgid "GeoNodeSyncStatus|Synced" +msgstr "" msgid "Geo|File sync capacity" -msgstr "檔案åŒæ¥å®¹é‡" +msgstr "" msgid "Geo|Groups to replicate" -msgstr "è¦è¤‡è£½çš„群組" +msgstr "" msgid "Geo|Repository sync capacity" -msgstr "檔案庫(repository)åŒæ¥é‡" +msgstr "" msgid "Geo|Select groups to replicate." -msgstr "é¸æ“‡æ¬²è¤‡è£½ä¹‹ç¾¤çµ„。" +msgstr "" msgid "Git storage health information has been reset" msgstr "Git 儲å˜ç©ºé–“å¥åº·æŒ‡æ•¸å·²é‡ç½®" @@ -1020,9 +1304,6 @@ msgstr "找ä¸åˆ°ç¾¤çµ„" msgid "GroupsEmptyState|You can manage your group member’s permissions and access to each project in the group." msgstr "ä½ å¯ä»¥ç®¡ç†ç¾¤çµ„內所有æˆå“¡çš„æ¯å€‹å°ˆæ¡ˆçš„å˜å–權é™" -msgid "GroupsTreeRole|as" -msgstr "çš„" - msgid "GroupsTree|Are you sure you want to leave the \"${this.group.fullName}\" group?" msgstr "ä½ ç¢ºå®šè¦é›¢é–‹ç¾¤çµ„ \"${this.group.fullName}\" 嗎?" @@ -1053,6 +1334,9 @@ msgstr "ä¸å¥½æ„æ€ï¼Œæ²’有æœå°‹åˆ°ä»»ä½•ç¬¦åˆæ¢ä»¶çš„群組" msgid "GroupsTree|Sorry, no groups or projects matched your search" msgstr "ä¸å¥½æ„æ€ï¼Œæ²’有æœå°‹åˆ°ä»»ä½•ç¬¦åˆæ¢ä»¶çš„群組或專案" +msgid "Have your users email" +msgstr "" + msgid "Health Check" msgstr "å¥åº·æª¢æŸ¥" @@ -1081,20 +1365,20 @@ msgid "Import repository" msgstr "匯入檔案庫 (repository)" msgid "Improve Issue boards with GitLab Enterprise Edition." -msgstr "å”助改進 GitLab ä¼æ¥ç‰ˆçš„è°é¡Œçœ‹æ¿ï¼ˆissue boards)" +msgstr "" msgid "Improve issues management with Issue weight and GitLab Enterprise Edition." -msgstr "å”助改進 GitLab ä¼æ¥ç‰ˆçš„è°é¡Œç®¡ç†èˆ‡æ¬Šé‡ã€‚" +msgstr "" msgid "Improve search with Advanced Global Search and GitLab Enterprise Edition." -msgstr "å”助改進 GitLab ä¼æ¥ç‰ˆçš„æœå°‹ & 進階全局æœå°‹ã€‚" +msgstr "" msgid "Install a Runner compatible with GitLab CI" msgstr "安è£èˆ‡ GitLab CI 相容的 Runner" msgid "Instance" msgid_plural "Instances" -msgstr[0] "主機" +msgstr[0] "" msgid "Internal - The group and any internal projects can be viewed by any logged in user." msgstr "內部 - 任何登入的使用者都å¯ä»¥æŸ¥çœ‹è©²ç¾¤çµ„åŠå…¶å°ˆæ¡ˆ" @@ -1109,10 +1393,7 @@ msgid "Introducing Cycle Analytics" msgstr "週期分æžç°¡ä»‹" msgid "Issue board focus mode" -msgstr "è°é¡Œçœ‹æ¿ï¼ˆissue boards)模å¼" - -msgid "Issue boards with milestones" -msgstr "è°é¡Œçœ‹æ¿ï¼ˆissue boards)與里程碑" +msgstr "" msgid "Issue events" msgstr "è°é¡Œ (issue) 事件" @@ -1121,11 +1402,29 @@ msgid "IssueBoards|Board" msgstr "看æ¿" msgid "IssueBoards|Boards" -msgstr "看æ¿" +msgstr "" msgid "Issues" msgstr "è°é¡Œ" +msgid "Jan" +msgstr "" + +msgid "January" +msgstr "" + +msgid "Jul" +msgstr "" + +msgid "July" +msgstr "" + +msgid "Jun" +msgstr "" + +msgid "June" +msgstr "" + msgid "LFSStatus|Disabled" msgstr "åœç”¨" @@ -1179,7 +1478,7 @@ msgid "Leave project" msgstr "退出專案" msgid "License" -msgstr "授權" +msgstr "" msgid "Limited to showing %d event at most" msgid_plural "Limited to showing %d events at most" @@ -1192,14 +1491,23 @@ msgid "Locked" msgstr "鎖定" msgid "Locked Files" -msgstr "被鎖定的檔案" +msgstr "" msgid "Login" msgstr "登入" +msgid "Mar" +msgstr "" + +msgid "March" +msgstr "" + msgid "Maximum git storage failures" msgstr "最大 git 儲å˜å¤±æ•—" +msgid "May" +msgstr "" + msgid "Median" msgstr "ä¸ä½æ•¸" @@ -1228,7 +1536,7 @@ msgid "More information is available|here" msgstr "å¥åº·æª¢æŸ¥" msgid "Multiple issue boards" -msgstr "多個è°é¡Œçœ‹æ¿ (issue boards)" +msgstr "" msgid "New Cluster" msgstr "æ–°å¢é›†" @@ -1243,9 +1551,15 @@ msgstr "建立æµæ°´ç·š (pipeline) 排程" msgid "New branch" msgstr "新分支 (branch) " +msgid "New branch unavailable" +msgstr "" + msgid "New directory" msgstr "新增目錄" +msgid "New epic" +msgstr "" + msgid "New file" msgstr "新增檔案" @@ -1282,6 +1596,9 @@ msgstr "找ä¸åˆ°æª”案庫 (repository)" msgid "No schedules" msgstr "沒有排程" +msgid "No time spent" +msgstr "" + msgid "None" msgstr "ç„¡" @@ -1348,18 +1665,33 @@ msgstr "關注" msgid "Notifications" msgstr "通知" +msgid "Nov" +msgstr "" + +msgid "November" +msgstr "" + msgid "Number of access attempts" msgstr "嘗試å˜å–的次數" msgid "Number of failures before backing off" msgstr "" +msgid "Oct" +msgstr "" + +msgid "October" +msgstr "" + msgid "OfSearchInADropdown|Filter" msgstr "篩é¸" msgid "Only project members can comment." msgstr "åªæœ‰ç¾¤çµ„æˆå“¡æ‰èƒ½ç•™è¨€ã€‚" +msgid "Opened" +msgstr "" + msgid "OpenedNDaysAgo|Opened" msgstr "開始於" @@ -1406,7 +1738,7 @@ msgid "Pipeline Schedules" msgstr "æµæ°´ç·š (pipeline) 排程" msgid "Pipeline quota" -msgstr "æµæ°´ç·šé¡åº¦" +msgstr "" msgid "PipelineCharts|Failed:" msgstr "失敗:" @@ -1492,6 +1824,9 @@ msgstr "於階段" msgid "Pipeline|with stages" msgstr "於階段" +msgid "Please solve the reCAPTCHA" +msgstr "" + msgid "Preferences" msgstr "å好è¨å®š" @@ -1595,22 +1930,28 @@ msgid "ProjectNetworkGraph|Graph" msgstr "分支圖" msgid "ProjectSettings|Contact an admin to change this setting." -msgstr "è¯çµ¡ç®¡ç†å“¡ä»¥è®Šæ›´è¨å®šã€‚" +msgstr "" + +msgid "ProjectSettings|Immediately run a pipeline on the default branch" +msgstr "" msgid "ProjectSettings|Only signed commits can be pushed to this repository." -msgstr "åªæœ‰å·²ç°½ç« 的變更æ‰èƒ½è¢«æŽ¨é€åˆ°æª”案庫(repository)。" +msgstr "" + +msgid "ProjectSettings|Problem setting up the CI/CD settings JavaScript" +msgstr "" msgid "ProjectSettings|This setting is applied on the server level and can be overridden by an admin." -msgstr "æ¤è¨å®šå·²ç¶“套用於伺æœå™¨å±¤ç´šï¼Œä¸¦ä¸”å¯è¢«ç®¡ç†å“¡è¦†å¯«ã€‚" +msgstr "" msgid "ProjectSettings|This setting is applied on the server level but has been overridden for this project." -msgstr "æ¤è¨å®šå·²ç¶“套用至伺æœå™¨å±¤ç´šï¼Œä½†æ¤å°ˆæ¡ˆä½¿ç”¨å¦ä¸€å€‹è¨å®šã€‚" +msgstr "" msgid "ProjectSettings|This setting will be applied to all projects unless overridden by an admin." -msgstr "æ¤è¨å®šå°‡å¥—用至所有專案,除éžè¢«ç®¡ç†å“¡è¦†å¯«ã€‚" +msgstr "" msgid "ProjectSettings|Users can only push commits to this repository that were committed with one of their own verified emails." -msgstr "使用者推é€çš„修改 (commits) åªèƒ½ä½¿ç”¨ä»–們自己的電å郵件。" +msgstr "" msgid "Projects" msgstr "專案" @@ -1636,6 +1977,39 @@ msgstr "抱æ‰ï¼Œæ²’有符åˆæœå°‹æ¢ä»¶çš„專案" msgid "ProjectsDropdown|This feature requires browser localStorage support" msgstr "æ¤åŠŸèƒ½éœ€è¦ç€è¦½å™¨æ”¯æ´ localStorage" +msgid "PrometheusService|By default, Prometheus listens on ‘http://localhost:9090’. It’s not recommended to change the default address and port as this might affect or conflict with other services running on the GitLab server." +msgstr "" + +msgid "PrometheusService|Finding and configuring metrics..." +msgstr "" + +msgid "PrometheusService|Metrics" +msgstr "" + +msgid "PrometheusService|Metrics are automatically configured and monitored based on a library of metrics from popular exporters." +msgstr "" + +msgid "PrometheusService|Missing environment variable" +msgstr "" + +msgid "PrometheusService|Monitored" +msgstr "" + +msgid "PrometheusService|More information" +msgstr "" + +msgid "PrometheusService|No metrics are being monitored. To start monitoring, deploy to an environment." +msgstr "" + +msgid "PrometheusService|Prometheus API Base URL, like http://prometheus.example.com/" +msgstr "" + +msgid "PrometheusService|Prometheus monitoring" +msgstr "" + +msgid "PrometheusService|View environments" +msgstr "" + msgid "Public - The group and any public projects can be viewed without any authentication." msgstr "公開 - 未登入的情æ³ä¸‹ä¾ç„¶å¯ä»¥æŸ¥çœ‹ä»»ä½•å…¬é–‹å°ˆæ¡ˆ" @@ -1643,13 +2017,13 @@ msgid "Public - The project can be accessed without any authentication." msgstr "公開 - ç„¡é ˆä»»ä½•èº«ä»½é©—è‰å³å¯å˜å–該專案" msgid "Push Rules" -msgstr "æŽ¨é€ [Push] è¦å‰‡" +msgstr "" msgid "Push events" msgstr "æŽ¨é€ (push) 事件" msgid "PushRule|Committer restriction" -msgstr "æ交é™åˆ¶" +msgstr "" msgid "Read more" msgstr "çžè§£æ›´å¤š" @@ -1664,7 +2038,7 @@ msgid "RefSwitcher|Tags" msgstr "標籤" msgid "Registry" -msgstr "登錄表" +msgstr "" msgid "Related Commits" msgstr "相關的更動記錄 (commit) " @@ -1732,6 +2106,9 @@ msgstr "排程" msgid "Scheduling Pipelines" msgstr "æµæ°´ç·š (pipeline) 排程" +msgid "Scoped issue boards" +msgstr "" + msgid "Search branches and tags" msgstr "æœå°‹åˆ†æ”¯ (branch) 和標籤" @@ -1753,6 +2130,12 @@ msgstr "é¸æ“‡æ™‚å€" msgid "Select target branch" msgstr "é¸æ“‡ç›®æ¨™åˆ†æ”¯ (branch) " +msgid "Sep" +msgstr "" + +msgid "September" +msgstr "" + msgid "Service Templates" msgstr "æœå‹™ç¯„本" @@ -1784,14 +2167,29 @@ msgid "Showing %d event" msgid_plural "Showing %d events" msgstr[0] "顯示 %d 個事件" +msgid "Sidebar|Change weight" +msgstr "" + +msgid "Sidebar|Edit" +msgstr "" + +msgid "Sidebar|No" +msgstr "" + +msgid "Sidebar|None" +msgstr "" + +msgid "Sidebar|Weight" +msgstr "" + msgid "Snippets" msgstr "æ–‡å—片段" msgid "Something went wrong on our end." msgstr "發生了錯誤。" -msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName(this.issuableType)}" -msgstr "æœ‰å€‹åœ°æ–¹å‡ºéŒ¯äº†ï¼Œå› ç‚ºä»–å˜—è©¦åŽ»è®Šæ›´ ${this.issuableDisplayName(this.issuableType)} 的鎖定狀態。" +msgid "Something went wrong trying to change the locked state of this ${this.issuableDisplayName}" +msgstr "" msgid "Something went wrong while fetching the projects." msgstr "讀å–專案時發生錯誤。" @@ -1842,7 +2240,7 @@ msgid "SortOptions|Least popular" msgstr "最ä¸å—æ¡è¿Ž" msgid "SortOptions|Less weight" -msgstr "最低權é‡" +msgstr "" msgid "SortOptions|Milestone" msgstr "里程碑" @@ -1854,7 +2252,7 @@ msgid "SortOptions|Milestone due soon" msgstr "å³å°‡æˆªæ¢çš„里程碑" msgid "SortOptions|More weight" -msgstr "更大的權é‡" +msgstr "" msgid "SortOptions|Most popular" msgstr "最å—æ¡è¿Ž" @@ -1896,11 +2294,17 @@ msgid "SortOptions|Start soon" msgstr "ç¾åœ¨é–‹å§‹" msgid "SortOptions|Weight" -msgstr "權é‡" +msgstr "" + +msgid "Source" +msgstr "" msgid "Source code" msgstr "原始碼" +msgid "Source is not available" +msgstr "" + msgid "Spam Logs" msgstr "垃圾訊æ¯è¨˜éŒ„" @@ -1919,6 +2323,9 @@ msgstr "以這些改動建立一個新的 %{new_merge_request} " msgid "Start the Runner!" msgstr "å•Ÿå‹• Runner!" +msgid "Stopped" +msgstr "" + msgid "Subgroups" msgstr "å群組" @@ -1938,6 +2345,75 @@ msgstr[0] "標籤" msgid "Tags" msgstr "標籤" +msgid "TagsPage|Browse commits" +msgstr "" + +msgid "TagsPage|Browse files" +msgstr "" + +msgid "TagsPage|Can't find HEAD commit for this tag" +msgstr "" + +msgid "TagsPage|Cancel" +msgstr "" + +msgid "TagsPage|Create tag" +msgstr "" + +msgid "TagsPage|Delete tag" +msgstr "" + +msgid "TagsPage|Deleting the %{tag_name} tag cannot be undone. Are you sure?" +msgstr "" + +msgid "TagsPage|Edit release notes" +msgstr "" + +msgid "TagsPage|Existing branch name, tag, or commit SHA" +msgstr "" + +msgid "TagsPage|Filter by tag name" +msgstr "" + +msgid "TagsPage|New Tag" +msgstr "" + +msgid "TagsPage|New tag" +msgstr "" + +msgid "TagsPage|Optionally, add a message to the tag." +msgstr "" + +msgid "TagsPage|Optionally, add release notes to the tag. They will be stored in the GitLab database and displayed on the tags page." +msgstr "" + +msgid "TagsPage|Release notes" +msgstr "" + +msgid "TagsPage|Repository has no tags yet." +msgstr "" + +msgid "TagsPage|Sort by" +msgstr "" + +msgid "TagsPage|Tags" +msgstr "" + +msgid "TagsPage|Tags give the ability to mark specific points in history as being important" +msgstr "" + +msgid "TagsPage|This tag has no release notes." +msgstr "" + +msgid "TagsPage|Use git tag command to add a new one:" +msgstr "" + +msgid "TagsPage|Write your release notes or drag files here..." +msgstr "" + +msgid "TagsPage|protected" +msgstr "" + msgid "Target Branch" msgstr "目標分支 (branch) " @@ -1945,10 +2421,10 @@ msgid "Team" msgstr "團隊" msgid "Thanks! Don't show me this again" -msgstr "æ„Ÿè¬ï¼è«‹ä¸è¦å†æ¬¡é¡¯ç¤º" +msgstr "" msgid "The Advanced Global Search in GitLab is a powerful search service that saves you time. Instead of creating duplicate code and wasting time, you can now search for code within other teams that can help your own project." -msgstr "GitLab 的進階全局æœå°‹åŠŸèƒ½æ˜¯éžå¸¸å¼·å¤§çš„æœå°‹æœå‹™ã€‚您å¯ä»¥æœå°‹å…¶ä»–åœ˜éšŠçš„ä»£ç¢¼ä»¥å¹«åŠ©æ‚¨å®Œå–„è‡ªå·±é …ç›®ä¸çš„代碼。從而é¿å…建立é‡è¤‡çš„代碼浪費時間。" +msgstr "" msgid "The circuitbreaker backoff threshold should be lower than the failure count threshold" msgstr "é™æµé˜»æ–·å…ƒä»¶çš„觸發門檻應低於計數錯誤門檻" @@ -2019,6 +2495,9 @@ msgstr "ä¸ä½æ•¸æ˜¯ä¸€å€‹æ•¸åˆ—ä¸æœ€ä¸é–“的值。例如在 3ã€5ã€9 之間ï msgid "There are problems accessing Git storage: " msgstr "å˜å– Git 儲å˜ç©ºé–“時出ç¾å•é¡Œï¼š" +msgid "This board\\'s scope is reduced" +msgstr "" + msgid "This branch has changed since you started editing. Would you like to create a new branch?" msgstr "在您編輯後,æ¤åˆ†æ”¯å·²è¢«æ›´æ”¹ï¼Œæ‚¨æƒ³è¦å»ºç«‹ä¸€å€‹æ–°çš„分支嗎?" @@ -2040,6 +2519,9 @@ msgstr "這代表在您建立一個空的檔案庫 (repository) 或是匯入一å msgid "This merge request is locked." msgstr "這個åˆä½µè«‹æ±‚已被鎖定。" +msgid "Those emails automatically become issues (with the comments becoming the email conversation) listed here." +msgstr "" + msgid "Time before an issue gets scheduled" msgstr "è°é¡Œ (issue) 被列入日程表的時間" @@ -2186,14 +2668,26 @@ msgstr[0] "分é˜" msgid "Time|s" msgstr "秒" +msgid "Title" +msgstr "" + msgid "Total Time" msgstr "總時間" +msgid "Total issue time spent" +msgstr "" + msgid "Total test time for all commits/merges" msgstr "åˆä½µ (merge) 與更動記錄 (commit) 的總測試時間" msgid "Track activity with Contribution Analytics." -msgstr "追蹤分æžè²¢ç»èˆ‡æ´»å‹•ã€‚" +msgstr "" + +msgid "Track groups of issues that share a theme, across projects and milestones" +msgstr "" + +msgid "Turn on Service Desk" +msgstr "" msgid "Unlock" msgstr "解鎖" @@ -2208,19 +2702,19 @@ msgid "Unsubscribe" msgstr "å–消訂閱" msgid "Upgrade your plan to activate Advanced Global Search." -msgstr "å‡ç´šæ‚¨çš„方案以啟用進階全局æœå°‹ã€‚" +msgstr "" msgid "Upgrade your plan to activate Contribution Analytics." -msgstr "å‡ç´šæ‚¨çš„方案以啟用貢ç»åˆ†æžã€‚" +msgstr "" msgid "Upgrade your plan to activate Group Webhooks." -msgstr "å‡ç´šæ‚¨çš„方案以啟用群組 Webhooks。" +msgstr "" msgid "Upgrade your plan to activate Issue weight." -msgstr "å‡ç´šæ‚¨çš„方案以啟用å•é¡Œæ¬Šé‡ã€‚" +msgstr "" msgid "Upgrade your plan to improve Issue boards." -msgstr "å‡ç´šæ‚¨çš„方案以使用è°é¡Œçœ‹æ¿ï¼ˆissue boards)" +msgstr "" msgid "Upload New File" msgstr "上傳新檔案" @@ -2231,6 +2725,9 @@ msgstr "上傳檔案" msgid "UploadLink|click to upload" msgstr "點擊上傳" +msgid "Use Service Desk to connect with your users (e.g. to offer customer support) through email right inside GitLab" +msgstr "" + msgid "Use the following registration token during setup:" msgstr "在安è£éŽç¨‹ä¸ä½¿ç”¨æ¤è¨»å†Šæ†‘è‰ (registration token):" @@ -2264,11 +2761,14 @@ msgstr "權é™ä¸è¶³ã€‚如需查看相關資料,請å‘管ç†å“¡ç”³è«‹æ¬Šé™ã€‚ msgid "We don't have enough data to show this stage." msgstr "å› è©²éšŽæ®µçš„è³‡æ–™ä¸è¶³è€Œç„¡æ³•é¡¯ç¤ºç›¸é—œè³‡è¨Š" +msgid "We want to be sure it is you, please confirm you are not a robot." +msgstr "" + msgid "Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group." msgstr "" msgid "Weight" -msgstr "權é‡" +msgstr "" msgid "When access to a storage fails. GitLab will prevent access to the storage for the time specified here. This allows the filesystem to recover. Repositories on failing shards are temporarly unavailable" msgstr "當å˜å–檔案庫 (repository) 失敗時, GitLab 將在æ¤è™•æŒ‡å®šçš„時間內防æ¢æª”案庫的å˜å–,以æ¤ç‰å¾…檔案系統æ¢å¾©ã€‚å¤±æ•—çš„æª”æ¡ˆåº«åˆ†æµ (shard) 會暫時無法使用。" @@ -2376,7 +2876,7 @@ msgid "Wiki|Wiki Pages" msgstr "ç¶åŸºé é¢" msgid "With contribution analytics you can have an overview for the activity of issues, merge requests and push events of your organization and its members." -msgstr "é€éŽè²¢ç»åˆ†æžï¼Œæ‚¨å¯ä»¥åˆ†æžæ‚¨çš„組織åŠå…¶æˆå“¡çš„å•é¡Œã€åˆä½µè«‹æ±‚和推é€æ´»å‹•ã€‚" +msgstr "" msgid "Withdraw Access Request" msgstr "å–消權é™ç”³è«‹" @@ -2393,17 +2893,11 @@ msgstr "å°‡è¦åˆªé™¤æœ¬åˆ†æ”¯å°ˆæ¡ˆèˆ‡ä¸»å¹¹ %{forked_from_project} 的所有關 msgid "You are going to transfer %{project_name_with_namespace} to another owner. Are you ABSOLUTELY sure?" msgstr "å°‡è¦æŠŠ %{project_name_with_namespace} 的所有權轉移給å¦ä¸€å€‹äººã€‚真的「確定ã€è¦é€™éº¼åšå—Žï¼Ÿ" -msgid "You are on a read-only GitLab instance." -msgstr "您在唯讀的 GitLab 主機上。" - -msgid "You are on a read-only GitLab instance. If you want to make any changes, you must visit the %{link_to_primary_node}." -msgstr "您在唯讀的 GitLab 主機上,如果您想è¦é€²è¡Œä¿®æ”¹ï¼Œå¿…é ˆåˆ° %{link_to_primary_node}" - msgid "You can only add files when you are on a branch" msgstr "åªèƒ½åœ¨åˆ†æ”¯ (branch) 上建立檔案" msgid "You cannot write to a read-only secondary GitLab Geo instance. Please use %{link_to_primary_node} instead." -msgstr "您ä¸èƒ½å¯«å…¥å”¯è®€çš„æ¬¡è¦ GitLab Geo 主機。請改用 %{link_to_primary_node}。" +msgstr "" msgid "You cannot write to this read-only GitLab instance." msgstr "您ä¸èƒ½ä¿®æ”¹é€™å€‹å”¯è®€çš„ GitLab 主機。" @@ -2438,6 +2932,9 @@ msgstr "在帳號上 %{set_password_link} 之å‰ï¼Œ 將無法使用 %{protocol} msgid "You won't be able to pull or push project code via SSH until you %{add_ssh_key_link} to your profile" msgstr "åœ¨å€‹äººå¸³è™Ÿä¸ %{add_ssh_key_link} 之å‰ï¼Œ 將無法使用 SSH 上傳 (push) 或下載 (pull) 程å¼ç¢¼ã€‚" +msgid "You won't be able to pull or push project code via SSH until you add an SSH key to your profile" +msgstr "" + msgid "Your comment will not be visible to the public." msgstr "ä½ çš„ç•™è¨€å°‡ä¸æœƒè¢«å…¬é–‹ã€‚" @@ -2450,8 +2947,14 @@ msgstr "您的åå—" msgid "Your projects" msgstr "ä½ çš„è¨ˆåŠƒ" +msgid "branch name" +msgstr "" + +msgid "by" +msgstr "" + msgid "commit" -msgstr "æ›´å‹•" +msgstr "" msgid "day" msgid_plural "days" @@ -2473,8 +2976,11 @@ msgstr "密碼" msgid "personal access token" msgstr "ç§äººå˜å–æ†‘è‰ (access token)" +msgid "source" +msgstr "" + msgid "to help your contributors communicate effectively!" -msgstr "å¹«åŠ©ä½ çš„è²¢ç»è€…進行有效的æºé€šï¼" +msgstr "" msgid "username" msgstr "使用者å稱" diff --git a/package.json b/package.json index 294c0040dd0..318bdae60c0 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "worker-loader": "^1.1.0" }, "devDependencies": { - "@gitlab-org/gitlab-svgs": "^1.4.0", + "@gitlab-org/gitlab-svgs": "^1.5.0", "babel-plugin-istanbul": "^4.1.5", "eslint": "3.18.0", "eslint-config-airbnb-base": "^10.0.1", @@ -10,6 +10,7 @@ module QA autoload :Namespace, 'qa/runtime/namespace' autoload :Scenario, 'qa/runtime/scenario' autoload :Browser, 'qa/runtime/browser' + autoload :Env, 'qa/runtime/env' end ## diff --git a/qa/qa/runtime/browser.rb b/qa/qa/runtime/browser.rb index 220bb45741b..14b2a488760 100644 --- a/qa/qa/runtime/browser.rb +++ b/qa/qa/runtime/browser.rb @@ -38,22 +38,49 @@ module QA Capybara.register_driver :chrome do |app| capabilities = Selenium::WebDriver::Remote::Capabilities.chrome( - 'chromeOptions' => { - 'args' => %w[headless no-sandbox disable-gpu window-size=1280,1680] + # This enables access to logs with `page.driver.manage.get_log(:browser)` + loggingPrefs: { + browser: "ALL", + client: "ALL", + driver: "ALL", + server: "ALL" } ) - Capybara::Selenium::Driver - .new(app, browser: :chrome, desired_capabilities: capabilities) - end + options = Selenium::WebDriver::Chrome::Options.new + options.add_argument("window-size=1240,1680") - Capybara::Screenshot.register_driver(:chrome) do |driver, path| - driver.browser.save_screenshot(path) + # Chrome won't work properly in a Docker container in sandbox mode + options.add_argument("no-sandbox") + + # Run headless by default unless CHROME_HEADLESS is false + if QA::Runtime::Env.chrome_headless? + options.add_argument("headless") + + # Chrome documentation says this flag is needed for now + # https://developers.google.com/web/updates/2017/04/headless-chrome#cli + options.add_argument("disable-gpu") + end + + # Disable /dev/shm use in CI. See https://gitlab.com/gitlab-org/gitlab-ee/issues/4252 + options.add_argument("disable-dev-shm-usage") if QA::Runtime::Env.running_in_ci? + + Capybara::Selenium::Driver.new( + app, + browser: :chrome, + desired_capabilities: capabilities, + options: options + ) end # Keep only the screenshots generated from the last failing test suite Capybara::Screenshot.prune_strategy = :keep_last_run + # From https://github.com/mattheworiordan/capybara-screenshot/issues/84#issuecomment-41219326 + Capybara::Screenshot.register_driver(:chrome) do |driver, path| + driver.browser.save_screenshot(path) + end + Capybara.configure do |config| config.default_driver = :chrome config.javascript_driver = :chrome diff --git a/qa/qa/runtime/env.rb b/qa/qa/runtime/env.rb new file mode 100644 index 00000000000..d5c28e9a7db --- /dev/null +++ b/qa/qa/runtime/env.rb @@ -0,0 +1,15 @@ +module QA + module Runtime + module Env + extend self + + def chrome_headless? + (ENV['CHROME_HEADLESS'] =~ /^(false|no|0)$/i) != 0 + end + + def running_in_ci? + ENV['CI'] || ENV['CI_SERVER'] + end + end + end +end diff --git a/qa/spec/runtime/env_spec.rb b/qa/spec/runtime/env_spec.rb new file mode 100644 index 00000000000..57a72a04507 --- /dev/null +++ b/qa/spec/runtime/env_spec.rb @@ -0,0 +1,64 @@ +describe QA::Runtime::Env do + before do + allow(ENV).to receive(:[]).and_call_original + end + + describe '.chrome_headless?' do + context 'when there is an env variable set' do + it 'returns false when falsey values specified' do + stub_env('CHROME_HEADLESS', 'false') + expect(described_class.chrome_headless?).to be_falsey + + stub_env('CHROME_HEADLESS', 'no') + expect(described_class.chrome_headless?).to be_falsey + + stub_env('CHROME_HEADLESS', '0') + expect(described_class.chrome_headless?).to be_falsey + end + + it 'returns true when anything else specified' do + stub_env('CHROME_HEADLESS', 'true') + expect(described_class.chrome_headless?).to be_truthy + + stub_env('CHROME_HEADLESS', '1') + expect(described_class.chrome_headless?).to be_truthy + + stub_env('CHROME_HEADLESS', 'anything') + expect(described_class.chrome_headless?).to be_truthy + end + end + + context 'when there is no env variable set' do + it 'returns the default, true' do + stub_env('CHROME_HEADLESS', nil) + expect(described_class.chrome_headless?).to be_truthy + end + end + end + + describe '.running_in_ci?' do + context 'when there is an env variable set' do + it 'returns true if CI' do + stub_env('CI', 'anything') + expect(described_class.running_in_ci?).to be_truthy + end + + it 'returns true if CI_SERVER' do + stub_env('CI_SERVER', 'anything') + expect(described_class.running_in_ci?).to be_truthy + end + end + + context 'when there is no env variable set' do + it 'returns true' do + stub_env('CI', nil) + stub_env('CI_SERVER', nil) + expect(described_class.running_in_ci?).to be_falsey + end + end + end + + def stub_env(name, value) + allow(ENV).to receive(:[]).with(name).and_return(value) + end +end diff --git a/spec/controllers/projects/boards_controller_spec.rb b/spec/controllers/projects/boards_controller_spec.rb index 305af289531..4d765229bde 100644 --- a/spec/controllers/projects/boards_controller_spec.rb +++ b/spec/controllers/projects/boards_controller_spec.rb @@ -55,6 +55,16 @@ describe Projects::BoardsController do end end + context 'issues are disabled' do + let(:project) { create(:project, :issues_disabled) } + + it 'returns a not found 404 response' do + list_boards + + expect(response).to have_gitlab_http_status(404) + end + end + def list_boards(format: :html) get :index, namespace_id: project.namespace, project_id: project, diff --git a/spec/controllers/projects/clusters/gcp_controller_spec.rb b/spec/controllers/projects/clusters/gcp_controller_spec.rb index ee7928beb7e..be19fa93183 100644 --- a/spec/controllers/projects/clusters/gcp_controller_spec.rb +++ b/spec/controllers/projects/clusters/gcp_controller_spec.rb @@ -17,7 +17,6 @@ describe Projects::Clusters::GcpController do context 'when omniauth has been configured' do let(:key) { 'secret-key' } - let(:session_key_for_redirect_uri) do GoogleApi::CloudPlatform::Client.session_key_for_redirect_uri(key) end @@ -78,6 +77,8 @@ describe Projects::Clusters::GcpController do end it 'has new object' do + expect(controller).to receive(:authorize_google_project_billing) + go expect(assigns(:cluster)).to be_an_instance_of(Clusters::Cluster) @@ -138,7 +139,11 @@ describe Projects::Clusters::GcpController do stub_google_api_validate_token end - context 'when creates a cluster on gke' do + context 'when google project billing is enabled' do + before do + stub_google_project_billing_status + end + it 'creates a new cluster' do expect(ClusterProvisionWorker).to receive(:perform_async) expect { go }.to change { Clusters::Cluster.count } @@ -148,6 +153,15 @@ describe Projects::Clusters::GcpController do expect(project.clusters.first).to be_kubernetes end end + + context 'when google project billing is not enabled' do + it 'renders the cluster form with an error' do + go + + expect(response).to set_flash[:error] + expect(response).to render_template('new') + end + end end context 'when access token is expired' do diff --git a/spec/controllers/projects/settings/ci_cd_controller_spec.rb b/spec/controllers/projects/settings/ci_cd_controller_spec.rb index 77a47f0ad13..0202149f335 100644 --- a/spec/controllers/projects/settings/ci_cd_controller_spec.rb +++ b/spec/controllers/projects/settings/ci_cd_controller_spec.rb @@ -17,4 +17,51 @@ describe Projects::Settings::CiCdController do expect(response).to render_template(:show) end end + + describe '#reset_cache' do + before do + sign_in(user) + + project.add_master(user) + + allow(ResetProjectCacheService).to receive_message_chain(:new, :execute).and_return(true) + end + + subject { post :reset_cache, namespace_id: project.namespace, project_id: project } + + it 'calls reset project cache service' do + expect(ResetProjectCacheService).to receive_message_chain(:new, :execute) + + subject + end + + it 'redirects to project pipelines path' do + subject + + expect(response).to have_gitlab_http_status(:redirect) + expect(response).to redirect_to(project_pipelines_path(project)) + end + + context 'when service returns successfully' do + it 'sets the flash notice variable' do + subject + + expect(controller).to set_flash[:notice] + expect(controller).not_to set_flash[:error] + end + end + + context 'when service does not return successfully' do + before do + allow(ResetProjectCacheService).to receive_message_chain(:new, :execute).and_return(false) + end + + it 'sets the flash error variable' do + subject + + expect(controller).not_to set_flash[:notice] + expect(controller).to set_flash[:error] + end + end + end end diff --git a/spec/factories/ci/builds.rb b/spec/factories/ci/builds.rb index dc1d88c92dc..6f66468570f 100644 --- a/spec/factories/ci/builds.rb +++ b/spec/factories/ci/builds.rb @@ -7,12 +7,10 @@ FactoryBot.define do stage_idx 0 ref 'master' tag false - status 'pending' - created_at 'Di 29. Okt 09:50:00 CET 2013' - started_at 'Di 29. Okt 09:51:28 CET 2013' - finished_at 'Di 29. Okt 09:53:28 CET 2013' commands 'ls -a' protected false + created_at 'Di 29. Okt 09:50:00 CET 2013' + pending options do { @@ -29,23 +27,37 @@ FactoryBot.define do pipeline factory: :ci_pipeline + trait :started do + started_at 'Di 29. Okt 09:51:28 CET 2013' + end + + trait :finished do + started + finished_at 'Di 29. Okt 09:53:28 CET 2013' + end + trait :success do + finished status 'success' end trait :failed do + finished status 'failed' end trait :canceled do + finished status 'canceled' end trait :skipped do + started status 'skipped' end trait :running do + started status 'running' end @@ -114,11 +126,6 @@ FactoryBot.define do build.project ||= build.pipeline.project end - factory :ci_not_started_build do - started_at nil - finished_at nil - end - trait :tag do tag true end diff --git a/spec/features/boards/keyboard_shortcut_spec.rb b/spec/features/boards/keyboard_shortcut_spec.rb index 435de3861cf..d820a59aa16 100644 --- a/spec/features/boards/keyboard_shortcut_spec.rb +++ b/spec/features/boards/keyboard_shortcut_spec.rb @@ -1,20 +1,38 @@ require 'rails_helper' describe 'Issue Boards shortcut', :js do - let(:project) { create(:project) } + context 'issues are enabled' do + let(:project) { create(:project) } - before do - create(:board, project: project) + before do + create(:board, project: project) - sign_in(create(:admin)) + sign_in(create(:admin)) - visit project_path(project) + visit project_path(project) + end + + it 'takes user to issue board index' do + find('body').native.send_keys('gb') + expect(page).to have_selector('.boards-list') + + wait_for_requests + end end - it 'takes user to issue board index' do - find('body').native.send_keys('gb') - expect(page).to have_selector('.boards-list') + context 'issues are not enabled' do + let(:project) { create(:project, :issues_disabled) } + + before do + sign_in(create(:admin)) + + visit project_path(project) + end + + it 'does not take user to the issue board index' do + find('body').native.send_keys('gb') - wait_for_requests + expect(page).to have_selector("body[data-page='projects:show']") + end end end diff --git a/spec/features/explore/groups_spec.rb b/spec/features/explore/groups_spec.rb new file mode 100644 index 00000000000..e4ef47d88dd --- /dev/null +++ b/spec/features/explore/groups_spec.rb @@ -0,0 +1,87 @@ +require 'spec_helper' + +describe 'Explore Groups', :js do + let(:user) { create :user } + let(:group) { create :group } + let!(:private_project) do + create :project, :private, namespace: group do |project| + create(:issue, project: internal_project) + create(:merge_request, source_project: project, target_project: project) + end + end + + let!(:internal_project) do + create :project, :internal, namespace: group do |project| + create(:issue, project: project) + create(:merge_request, source_project: project, target_project: project) + end + end + + let!(:public_project) do + create(:project, :public, namespace: group) do |project| + create(:issue, project: project) + create(:merge_request, source_project: project, target_project: project) + end + end + + shared_examples 'renders public and internal projects' do + it do + visit_page + expect(page).to have_content(public_project.name) + expect(page).to have_content(internal_project.name) + expect(page).not_to have_content(private_project.name) + end + end + + shared_examples 'renders only public project' do + it do + visit_page + expect(page).to have_content(public_project.name) + expect(page).not_to have_content(internal_project.name) + expect(page).not_to have_content(private_project.name) + end + end + + shared_examples 'renders group in public groups area' do + it do + visit explore_groups_path + expect(page).to have_content(group.name) + end + end + + context 'when signed in' do + before do + sign_in(user) + end + + it_behaves_like 'renders public and internal projects' do + subject(:visit_page) { visit group_path(group) } + end + + it_behaves_like 'renders public and internal projects' do + subject(:visit_page) { visit issues_group_path(group) } + end + + it_behaves_like 'renders public and internal projects' do + subject(:visit_page) { visit merge_requests_group_path(group) } + end + + it_behaves_like 'renders group in public groups area' + end + + context 'when signed out' do + it_behaves_like 'renders only public project' do + subject(:visit_page) { visit group_path(group) } + end + + it_behaves_like 'renders only public project' do + subject(:visit_page) { visit issues_group_path(group) } + end + + it_behaves_like 'renders only public project' do + subject(:visit_page) { visit merge_requests_group_path(group) } + end + + it_behaves_like 'renders group in public groups area' + end +end diff --git a/spec/features/groups/show_spec.rb b/spec/features/groups/show_spec.rb index 7fc2b383749..ceccc471405 100644 --- a/spec/features/groups/show_spec.rb +++ b/spec/features/groups/show_spec.rb @@ -55,4 +55,20 @@ feature 'Group show page' do end end end + + context 'group has a project with emoji in description', :js do + let(:user) { create(:user) } + let!(:project) { create(:project, description: ':smile:', namespace: group) } + + before do + group.add_owner(user) + sign_in(user) + visit path + end + + it 'shows the project info' do + expect(page).to have_content(project.title) + expect(page).to have_selector('gl-emoji[data-name="smile"]') + end + end end diff --git a/spec/features/invites_spec.rb b/spec/features/invites_spec.rb new file mode 100644 index 00000000000..e4be6193b8b --- /dev/null +++ b/spec/features/invites_spec.rb @@ -0,0 +1,97 @@ +require 'spec_helper' + +describe 'Invites' do + let(:user) { create(:user) } + let(:owner) { create(:user, name: 'John Doe') } + let(:group) { create(:group, name: 'Owned') } + let(:project) { create(:project, :repository, namespace: group) } + let(:invite) { group.group_members.invite.last } + + before do + project.add_master(owner) + group.add_user(owner, Gitlab::Access::OWNER) + group.add_developer('user@example.com', owner) + invite.generate_invite_token! + end + + context 'when signed out' do + before do + visit invite_path(invite.raw_invite_token) + end + + it 'renders sign in page with sign in notice' do + expect(current_path).to eq(new_user_session_path) + expect(page).to have_content('To accept this invitation, sign in') + end + + it 'sign in and redirects to invitation page' do + fill_in 'user_login', with: user.email + fill_in 'user_password', with: user.password + check 'user_remember_me' + click_button 'Sign in' + + expect(current_path).to eq(invite_path(invite.raw_invite_token)) + expect(page).to have_content( + 'You have been invited by John Doe to join group Owned as Developer.' + ) + expect(page).to have_link('Accept invitation') + expect(page).to have_link('Decline') + end + end + + context 'when signed in as an exists member' do + before do + sign_in(owner) + end + + it 'shows message user already a member' do + visit invite_path(invite.raw_invite_token) + expect(page).to have_content('However, you are already a member of this group.') + end + end + + describe 'accepting the invitation' do + before do + sign_in(user) + visit invite_path(invite.raw_invite_token) + end + + it 'grants access and redirects to group page' do + page.click_link 'Accept invitation' + expect(current_path).to eq(group_path(group)) + expect(page).to have_content( + 'You have been granted Developer access to group Owned.' + ) + end + end + + describe 'declining the application' do + context 'when signed in' do + before do + sign_in(user) + visit invite_path(invite.raw_invite_token) + end + + it 'declines application and redirects to dashboard' do + page.click_link 'Decline' + expect(current_path).to eq(dashboard_projects_path) + expect(page).to have_content( + 'You have declined the invitation to join group Owned.' + ) + end + end + + context 'when signed out' do + before do + visit decline_invite_path(invite.raw_invite_token) + end + + it 'declines application and redirects to sign in page' do + expect(current_path).to eq(new_user_session_path) + expect(page).to have_content( + 'You have declined the invitation to join group Owned.' + ) + end + end + end +end diff --git a/spec/features/issues/keyboard_shortcut_spec.rb b/spec/features/issues/keyboard_shortcut_spec.rb new file mode 100644 index 00000000000..961de9d3d25 --- /dev/null +++ b/spec/features/issues/keyboard_shortcut_spec.rb @@ -0,0 +1,36 @@ +require 'rails_helper' + +describe 'Issues shortcut', :js do + context 'New Issue shortcut' do + context 'issues are enabled' do + let(:project) { create(:project) } + + before do + sign_in(create(:admin)) + + visit project_path(project) + end + + it 'takes user to the new issue page' do + find('body').native.send_keys('i') + expect(page).to have_selector('#new_issue') + end + end + + context 'issues are not enabled' do + let(:project) { create(:project, :issues_disabled) } + + before do + sign_in(create(:admin)) + + visit project_path(project) + end + + it 'does not take user to the new issue page' do + find('body').native.send_keys('i') + + expect(page).to have_selector("body[data-page='projects:show']") + end + end + end +end diff --git a/spec/features/projects/clusters/gcp_spec.rb b/spec/features/projects/clusters/gcp_spec.rb index 882a2756b72..523cc08496b 100644 --- a/spec/features/projects/clusters/gcp_spec.rb +++ b/spec/features/projects/clusters/gcp_spec.rb @@ -20,105 +20,126 @@ feature 'Gcp Cluster', :js do .to receive(:expires_at_in_session).and_return(1.hour.since.to_i.to_s) end - context 'when user does not have a cluster and visits cluster index page' do + context 'when user has a GCP project with billing enabled' do before do - visit project_clusters_path(project) - - click_link 'Add cluster' - click_link 'Create on GKE' + allow_any_instance_of(Projects::Clusters::GcpController).to receive(:authorize_google_project_billing) + stub_google_project_billing_status end - context 'when user filled form with valid parameters' do + context 'when user does not have a cluster and visits cluster index page' do before do - allow_any_instance_of(GoogleApi::CloudPlatform::Client) - .to receive(:projects_zones_clusters_create) do - OpenStruct.new( - self_link: 'projects/gcp-project-12345/zones/us-central1-a/operations/ope-123', - status: 'RUNNING' - ) + visit project_clusters_path(project) + + click_link 'Add cluster' + click_link 'Create on GKE' + end + + context 'when user filled form with valid parameters' do + before do + allow_any_instance_of(GoogleApi::CloudPlatform::Client) + .to receive(:projects_zones_clusters_create) do + OpenStruct.new( + self_link: 'projects/gcp-project-12345/zones/us-central1-a/operations/ope-123', + status: 'RUNNING' + ) + end + + allow(WaitForClusterCreationWorker).to receive(:perform_in).and_return(nil) + + fill_in 'cluster_provider_gcp_attributes_gcp_project_id', with: 'gcp-project-123' + fill_in 'cluster_name', with: 'dev-cluster' + click_button 'Create cluster' end - allow(WaitForClusterCreationWorker).to receive(:perform_in).and_return(nil) + it 'user sees a cluster details page and creation status' do + expect(page).to have_content('Cluster is being created on Google Kubernetes Engine...') - fill_in 'cluster_provider_gcp_attributes_gcp_project_id', with: 'gcp-project-123' - fill_in 'cluster_name', with: 'dev-cluster' - click_button 'Create cluster' - end + Clusters::Cluster.last.provider.make_created! - it 'user sees a cluster details page and creation status' do - expect(page).to have_content('Cluster is being created on Google Kubernetes Engine...') + expect(page).to have_content('Cluster was successfully created on Google Kubernetes Engine') + end - Clusters::Cluster.last.provider.make_created! + it 'user sees a error if something worng during creation' do + expect(page).to have_content('Cluster is being created on Google Kubernetes Engine...') - expect(page).to have_content('Cluster was successfully created on Google Kubernetes Engine') - end + Clusters::Cluster.last.provider.make_errored!('Something wrong!') - it 'user sees a error if something worng during creation' do - expect(page).to have_content('Cluster is being created on Google Kubernetes Engine...') + expect(page).to have_content('Something wrong!') + end + end - Clusters::Cluster.last.provider.make_errored!('Something wrong!') + context 'when user filled form with invalid parameters' do + before do + click_button 'Create cluster' + end - expect(page).to have_content('Something wrong!') + it 'user sees a validation error' do + expect(page).to have_css('#error_explanation') + end end end - context 'when user filled form with invalid parameters' do + context 'when user does have a cluster and visits cluster page' do + let(:cluster) { create(:cluster, :provided_by_gcp, projects: [project]) } + before do - click_button 'Create cluster' + visit project_cluster_path(project, cluster) end - it 'user sees a validation error' do - expect(page).to have_css('#error_explanation') + it 'user sees a cluster details page' do + expect(page).to have_button('Save changes') + expect(page.find(:css, '.cluster-name').value).to eq(cluster.name) end - end - end - context 'when user does have a cluster and visits cluster page' do - let(:cluster) { create(:cluster, :provided_by_gcp, projects: [project]) } + context 'when user disables the cluster' do + before do + page.find(:css, '.js-toggle-cluster').click + page.within('#cluster-integration') { click_button 'Save changes' } + end - before do - visit project_cluster_path(project, cluster) - end + it 'user sees the successful message' do + expect(page).to have_content('Cluster was successfully updated.') + end + end - it 'user sees a cluster details page' do - expect(page).to have_button('Save changes') - expect(page.find(:css, '.cluster-name').value).to eq(cluster.name) - end + context 'when user changes cluster parameters' do + before do + fill_in 'cluster_platform_kubernetes_attributes_namespace', with: 'my-namespace' + page.within('#js-cluster-details') { click_button 'Save changes' } + end - context 'when user disables the cluster' do - before do - page.find(:css, '.js-toggle-cluster').click - page.within('#cluster-integration') { click_button 'Save changes' } + it 'user sees the successful message' do + expect(page).to have_content('Cluster was successfully updated.') + expect(cluster.reload.platform_kubernetes.namespace).to eq('my-namespace') + end end - it 'user sees the successful message' do - expect(page).to have_content('Cluster was successfully updated.') + context 'when user destroy the cluster' do + before do + page.accept_confirm do + click_link 'Remove integration' + end + end + + it 'user sees creation form with the successful message' do + expect(page).to have_content('Cluster integration was successfully removed.') + expect(page).to have_link('Add cluster') + end end end + end - context 'when user changes cluster parameters' do - before do - fill_in 'cluster_platform_kubernetes_attributes_namespace', with: 'my-namespace' - page.within('#js-cluster-details') { click_button 'Save changes' } - end + context 'when user does not have a GCP project with billing enabled' do + before do + visit project_clusters_path(project) - it 'user sees the successful message' do - expect(page).to have_content('Cluster was successfully updated.') - expect(cluster.reload.platform_kubernetes.namespace).to eq('my-namespace') - end + click_link 'Add cluster' + click_link 'Create on GKE' end - context 'when user destroy the cluster' do - before do - page.accept_confirm do - click_link 'Remove integration' - end - end - - it 'user sees creation form with the successful message' do - expect(page).to have_content('Cluster integration was successfully removed.') - expect(page).to have_link('Add cluster') - end + it 'user sees a check page' do + pending 'the frontend still has not been implemented' + expect(page).to have_link('Continue') end end end diff --git a/spec/features/projects/clusters_spec.rb b/spec/features/projects/clusters_spec.rb index 93929bf6814..eae2910a8f6 100644 --- a/spec/features/projects/clusters_spec.rb +++ b/spec/features/projects/clusters_spec.rb @@ -77,4 +77,18 @@ feature 'Clusters', :js do end end end + + context 'when user has not signed in Google' do + before do + visit project_clusters_path(project) + + click_link 'Add cluster' + click_link 'Create on GKE' + end + + it 'user sees a login page' do + expect(page).to have_css('.signin-with-google') + expect(page).to have_link('Google account') + end + end end diff --git a/spec/features/projects/import_export/test_project_export.tar.gz b/spec/features/projects/import_export/test_project_export.tar.gz Binary files differindex 0c354298433..0cc68aff494 100644 --- a/spec/features/projects/import_export/test_project_export.tar.gz +++ b/spec/features/projects/import_export/test_project_export.tar.gz diff --git a/spec/features/projects/jobs/user_browses_job_spec.rb b/spec/features/projects/jobs/user_browses_job_spec.rb index 5d9208ebadd..4c49cff30d4 100644 --- a/spec/features/projects/jobs/user_browses_job_spec.rb +++ b/spec/features/projects/jobs/user_browses_job_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe 'User browses a job', :js do - let!(:build) { create(:ci_build, :coverage, pipeline: pipeline) } + let!(:build) { create(:ci_build, :running, :coverage, pipeline: pipeline) } let(:pipeline) { create(:ci_empty_pipeline, project: project, sha: project.commit.sha, ref: 'master') } let(:project) { create(:project, :repository, namespace: user.namespace) } let(:user) { create(:user) } diff --git a/spec/features/projects/jobs_spec.rb b/spec/features/projects/jobs_spec.rb index f8ea1a52656..9a6b27c00f8 100644 --- a/spec/features/projects/jobs_spec.rb +++ b/spec/features/projects/jobs_spec.rb @@ -369,6 +369,34 @@ feature 'Jobs' do end end end + + context 'Playable manual action' do + let(:job) { create(:ci_build, :playable, pipeline: pipeline) } + + before do + project.add_developer(user) + visit project_job_path(project, job) + end + + it 'shows manual action empty state' do + expect(page).to have_content('This job requires a manual action') + expect(page).to have_content('This job depends on a user to trigger its process. Often they are used to deploy code to production environments.') + expect(page).to have_link('Trigger this manual action') + end + end + + context 'Non triggered job' do + let(:job) { create(:ci_build, :created, pipeline: pipeline) } + + before do + visit project_job_path(project, job) + end + + it 'shows manual action empty state' do + expect(page).to have_content('This job has not been triggered yet') + expect(page).to have_content('This job depends on upstream jobs that need to succeed in order for this job to be triggered.') + end + end end describe "POST /:project/jobs/:id/cancel", :js do diff --git a/spec/features/projects/pipelines/pipelines_spec.rb b/spec/features/projects/pipelines/pipelines_spec.rb index df261c246f7..592c99fc64a 100644 --- a/spec/features/projects/pipelines/pipelines_spec.rb +++ b/spec/features/projects/pipelines/pipelines_spec.rb @@ -545,6 +545,40 @@ describe 'Pipelines', :js do end end end + + describe 'Reset runner caches' do + let(:project) { create(:project, :repository) } + + before do + create(:ci_empty_pipeline, status: 'success', project: project, sha: project.commit.id, ref: 'master') + project.add_master(user) + visit project_pipelines_path(project) + end + + it 'has a clear caches button' do + expect(page).to have_link 'Clear runner caches' + end + + describe 'user clicks the button' do + context 'when project already has jobs_cache_index' do + before do + project.update_attributes(jobs_cache_index: 1) + end + + it 'increments jobs_cache_index' do + click_link 'Clear runner caches' + expect(page.find('.flash-notice')).to have_content 'Project cache successfully reset.' + end + end + + context 'when project does not have jobs_cache_index' do + it 'sets jobs_cache_index to 1' do + click_link 'Clear runner caches' + expect(page.find('.flash-notice')).to have_content 'Project cache successfully reset.' + end + end + end + end end context 'when user is not logged in' do diff --git a/spec/javascripts/fixtures/pipelines.html.haml b/spec/javascripts/fixtures/pipelines.html.haml index 85ee61f0b54..0161c0550d1 100644 --- a/spec/javascripts/fixtures/pipelines.html.haml +++ b/spec/javascripts/fixtures/pipelines.html.haml @@ -7,4 +7,6 @@ "new-pipeline-path" => 'foo', "can-create-pipeline" => 'true', "has-ci" => 'foo', - "ci-lint-path" => 'foo' } } + "ci-lint-path" => 'foo', + "reset-cache-path" => 'foo' } } + diff --git a/spec/javascripts/jobs/header_spec.js b/spec/javascripts/jobs/header_spec.js index 4a210faa017..83395ea451e 100644 --- a/spec/javascripts/jobs/header_spec.js +++ b/spec/javascripts/jobs/header_spec.js @@ -1,5 +1,6 @@ import Vue from 'vue'; import headerComponent from '~/jobs/components/header.vue'; +import mountComponent from '../helpers/vue_mount_component_helper'; describe('Job details header', () => { let HeaderComponent; @@ -35,7 +36,7 @@ describe('Job details header', () => { isLoading: false, }; - vm = new HeaderComponent({ propsData: props }).$mount(); + vm = mountComponent(HeaderComponent, props); }); afterEach(() => { diff --git a/spec/javascripts/monitoring/graph/deployment_spec.js b/spec/javascripts/monitoring/graph/deployment_spec.js index bf6ada8185e..d07db871d69 100644 --- a/spec/javascripts/monitoring/graph/deployment_spec.js +++ b/spec/javascripts/monitoring/graph/deployment_spec.js @@ -11,168 +11,38 @@ const createComponent = (propsData) => { }; describe('MonitoringDeployment', () => { - const reducedDeploymentData = [deploymentData[0]]; - reducedDeploymentData[0].ref = reducedDeploymentData[0].ref.name; - reducedDeploymentData[0].xPos = 10; - reducedDeploymentData[0].time = new Date(reducedDeploymentData[0].created_at); describe('Methods', () => { - it('refText shows the ref when a tag is available', () => { - reducedDeploymentData[0].tag = '1.0'; - const component = createComponent({ - showDeployInfo: false, - deploymentData: reducedDeploymentData, - graphWidth: 440, - graphHeight: 300, - graphHeightOffset: 120, - }); - - expect( - component.refText(reducedDeploymentData[0]), - ).toEqual(reducedDeploymentData[0].ref); - }); - - it('refText shows the sha when no tag is available', () => { - reducedDeploymentData[0].tag = null; - const component = createComponent({ - showDeployInfo: false, - deploymentData: reducedDeploymentData, - graphHeight: 300, - graphWidth: 440, - graphHeightOffset: 120, - }); - - expect( - component.refText(reducedDeploymentData[0]), - ).toContain('f5bcd1'); - }); - - it('nameDeploymentClass creates a class with the prefix deploy-info-', () => { + it('should contain a hidden gradient', () => { const component = createComponent({ - showDeployInfo: false, - deploymentData: reducedDeploymentData, + showDeployInfo: true, + deploymentData, graphHeight: 300, graphWidth: 440, graphHeightOffset: 120, }); - expect( - component.nameDeploymentClass(reducedDeploymentData[0]), - ).toContain('deploy-info'); + expect(component.$el.querySelector('#shadow-gradient')).not.toBeNull(); }); it('transformDeploymentGroup translates an available deployment', () => { const component = createComponent({ showDeployInfo: false, - deploymentData: reducedDeploymentData, + deploymentData, graphHeight: 300, graphWidth: 440, graphHeightOffset: 120, }); expect( - component.transformDeploymentGroup(reducedDeploymentData[0]), + component.transformDeploymentGroup({ xPos: 16 }), ).toContain('translate(11, 20)'); }); - it('hides the deployment flag', () => { - reducedDeploymentData[0].showDeploymentFlag = false; - const component = createComponent({ - showDeployInfo: true, - deploymentData: reducedDeploymentData, - graphWidth: 440, - graphHeight: 300, - graphHeightOffset: 120, - }); - - expect(component.$el.querySelector('.js-deploy-info-box')).toBeNull(); - }); - - it('positions the flag to the left when the xPos is too far right', () => { - reducedDeploymentData[0].showDeploymentFlag = false; - reducedDeploymentData[0].xPos = 250; - const component = createComponent({ - showDeployInfo: true, - deploymentData: reducedDeploymentData, - graphWidth: 440, - graphHeight: 300, - graphHeightOffset: 120, - }); - - expect( - component.positionFlag(reducedDeploymentData[0]), - ).toBeLessThan(0); - }); - - it('shows the deployment flag', () => { - reducedDeploymentData[0].showDeploymentFlag = true; - const component = createComponent({ - showDeployInfo: true, - deploymentData: reducedDeploymentData, - graphHeight: 300, - graphWidth: 440, - graphHeightOffset: 120, - }); - - expect( - component.$el.querySelector('.js-deploy-info-box').style.display, - ).not.toEqual('display: none;'); - }); - - it('contains date, refs and the "deployed" text', () => { - reducedDeploymentData[0].showDeploymentFlag = true; - const component = createComponent({ - showDeployInfo: true, - deploymentData: reducedDeploymentData, - graphHeight: 300, - graphWidth: 440, - graphHeightOffset: 120, - }); - - expect( - component.$el.querySelectorAll('.deploy-info-text'), - ).toContainText('Deployed'); - - expect( - component.$el.querySelectorAll('.deploy-info-text'), - ).toContainText('Wed, May 31'); - - expect( - component.$el.querySelectorAll('.deploy-info-text'), - ).toContainText(component.refText(reducedDeploymentData[0])); - }); - - it('contains a link to the commit contents', () => { - reducedDeploymentData[0].showDeploymentFlag = true; - const component = createComponent({ - showDeployInfo: true, - deploymentData: reducedDeploymentData, - graphHeight: 300, - graphWidth: 440, - graphHeightOffset: 120, - }); - - expect( - component.$el.querySelectorAll('.deploy-info-text-link')[0].parentElement.getAttribute('xlink:href'), - ).not.toEqual(''); - }); - - it('should contain a hidden gradient', () => { - const component = createComponent({ - showDeployInfo: true, - deploymentData: reducedDeploymentData, - graphHeight: 300, - graphWidth: 440, - graphHeightOffset: 120, - }); - - expect(component.$el.querySelector('#shadow-gradient')).not.toBeNull(); - }); - describe('Computed props', () => { it('calculatedHeight', () => { const component = createComponent({ showDeployInfo: true, - deploymentData: reducedDeploymentData, + deploymentData, graphHeight: 300, graphWidth: 440, graphHeightOffset: 120, diff --git a/spec/javascripts/monitoring/graph/flag_spec.js b/spec/javascripts/monitoring/graph/flag_spec.js index 8ee1171419d..2d474e9092f 100644 --- a/spec/javascripts/monitoring/graph/flag_spec.js +++ b/spec/javascripts/monitoring/graph/flag_spec.js @@ -1,5 +1,6 @@ import Vue from 'vue'; import GraphFlag from '~/monitoring/components/graph/flag.vue'; +import { deploymentData } from '../mock_data'; const createComponent = (propsData) => { const Component = Vue.extend(GraphFlag); @@ -9,11 +10,6 @@ const createComponent = (propsData) => { }).$mount(); }; -function getCoordinate(component, selector, coordinate) { - const coordinateVal = component.$el.querySelector(selector).getAttribute(coordinate); - return parseInt(coordinateVal, 10); -} - const defaultValuesComponent = { currentXCoordinate: 200, currentYCoordinate: 100, @@ -25,31 +21,111 @@ const defaultValuesComponent = { graphHeight: 300, graphHeightOffset: 120, showFlagContent: true, + realPixelRatio: 1, + timeSeries: [{ + values: [{ + time: new Date('2017-06-04T18:17:33.501Z'), + value: '1.49609375', + }], + }], + unitOfDisplay: 'ms', + currentDataIndex: 0, + legendTitle: 'Average', +}; + +const deploymentFlagData = { + ...deploymentData[0], + ref: deploymentData[0].ref.name, + xPos: 10, + time: new Date(deploymentData[0].created_at), }; describe('GraphFlag', () => { - it('has a line and a circle located at the currentXCoordinate and currentYCoordinate', () => { - const component = createComponent(defaultValuesComponent); + let component; - expect(getCoordinate(component, '.selected-metric-line', 'x1')) - .toEqual(component.currentXCoordinate); - expect(getCoordinate(component, '.selected-metric-line', 'x2')) - .toEqual(component.currentXCoordinate); + it('has a line at the currentXCoordinate', () => { + component = createComponent(defaultValuesComponent); + + expect(component.$el.style.left) + .toEqual(`${70 + component.currentXCoordinate}px`); }); - it('has a SVG with the class rect-text-metric at the currentFlagPosition', () => { - const component = createComponent(defaultValuesComponent); + describe('Deployment flag', () => { + it('shows a deployment flag when deployment data provided', () => { + const deploymentFlagComponent = createComponent({ + ...defaultValuesComponent, + deploymentFlagData, + }); + + expect( + deploymentFlagComponent.$el.querySelector('.popover-title'), + ).toContainText('Deployed'); + }); + + it('contains the ref when a tag is available', () => { + const deploymentFlagComponent = createComponent({ + ...defaultValuesComponent, + deploymentFlagData: { + ...deploymentFlagData, + sha: 'f5bcd1d9dac6fa4137e2510b9ccd134ef2e84187', + tag: true, + ref: '1.0', + }, + }); + + expect( + deploymentFlagComponent.$el.querySelector('.deploy-meta-content'), + ).toContainText('f5bcd1d9'); + + expect( + deploymentFlagComponent.$el.querySelector('.deploy-meta-content'), + ).toContainText('1.0'); + }); + + it('does not contain the ref when a tag is unavailable', () => { + const deploymentFlagComponent = createComponent({ + ...defaultValuesComponent, + deploymentFlagData: { + ...deploymentFlagData, + sha: 'f5bcd1d9dac6fa4137e2510b9ccd134ef2e84187', + tag: false, + ref: '1.0', + }, + }); + + expect( + deploymentFlagComponent.$el.querySelector('.deploy-meta-content'), + ).toContainText('f5bcd1d9'); - const svg = component.$el.querySelector('.rect-text-metric'); - expect(svg.tagName).toEqual('svg'); - expect(parseInt(svg.getAttribute('x'), 10)).toEqual(component.currentFlagPosition); + expect( + deploymentFlagComponent.$el.querySelector('.deploy-meta-content'), + ).not.toContainText('1.0'); + }); }); describe('Computed props', () => { - it('calculatedHeight', () => { - const component = createComponent(defaultValuesComponent); + beforeEach(() => { + component = createComponent(defaultValuesComponent); + }); + + it('formatTime', () => { + expect(component.formatTime).toMatch(/\d:17PM/); + }); + + it('formatDate', () => { + expect(component.formatDate).toEqual('Sun, Jun 4'); + }); + + it('cursorStyle', () => { + expect(component.cursorStyle).toEqual({ + top: '20px', + left: '270px', + height: '180px', + }); + }); - expect(component.calculatedHeight).toEqual(180); + it('flagOrientation', () => { + expect(component.flagOrientation).toEqual('left'); }); }); }); diff --git a/spec/javascripts/pipelines/nav_controls_spec.js b/spec/javascripts/pipelines/nav_controls_spec.js index f1697840fcd..09a0c14d96c 100644 --- a/spec/javascripts/pipelines/nav_controls_spec.js +++ b/spec/javascripts/pipelines/nav_controls_spec.js @@ -14,6 +14,7 @@ describe('Pipelines Nav Controls', () => { hasCiEnabled: true, helpPagePath: 'foo', ciLintPath: 'foo', + resetCachePath: 'foo', canCreatePipeline: true, }; @@ -31,6 +32,7 @@ describe('Pipelines Nav Controls', () => { hasCiEnabled: true, helpPagePath: 'foo', ciLintPath: 'foo', + resetCachePath: 'foo', canCreatePipeline: false, }; @@ -41,12 +43,31 @@ describe('Pipelines Nav Controls', () => { expect(component.$el.querySelector('.btn-create')).toEqual(null); }); + it('should render link for resetting runner caches', () => { + const mockData = { + newPipelinePath: 'foo', + hasCiEnabled: true, + helpPagePath: 'foo', + ciLintPath: 'foo', + resetCachePath: 'foo', + canCreatePipeline: false, + }; + + const component = new NavControlsComponent({ + propsData: mockData, + }).$mount(); + + expect(component.$el.querySelectorAll('.btn-default')[0].textContent).toContain('Clear runner caches'); + expect(component.$el.querySelectorAll('.btn-default')[0].getAttribute('href')).toEqual(mockData.resetCachePath); + }); + it('should render link for CI lint', () => { const mockData = { newPipelinePath: 'foo', hasCiEnabled: true, helpPagePath: 'foo', ciLintPath: 'foo', + resetCachePath: 'foo', canCreatePipeline: true, }; @@ -54,8 +75,8 @@ describe('Pipelines Nav Controls', () => { propsData: mockData, }).$mount(); - expect(component.$el.querySelector('.btn-default').textContent).toContain('CI Lint'); - expect(component.$el.querySelector('.btn-default').getAttribute('href')).toEqual(mockData.ciLintPath); + expect(component.$el.querySelectorAll('.btn-default')[1].textContent).toContain('CI Lint'); + expect(component.$el.querySelectorAll('.btn-default')[1].getAttribute('href')).toEqual(mockData.ciLintPath); }); it('should render link to help page when CI is not enabled', () => { @@ -64,6 +85,7 @@ describe('Pipelines Nav Controls', () => { hasCiEnabled: false, helpPagePath: 'foo', ciLintPath: 'foo', + resetCachePath: 'foo', canCreatePipeline: true, }; @@ -81,6 +103,7 @@ describe('Pipelines Nav Controls', () => { hasCiEnabled: true, helpPagePath: 'foo', ciLintPath: 'foo', + resetCachePath: 'foo', canCreatePipeline: true, }; diff --git a/spec/javascripts/repo/components/ide_repo_tree_spec.js b/spec/javascripts/repo/components/ide_repo_tree_spec.js index b6f70f585cd..e3bbda514da 100644 --- a/spec/javascripts/repo/components/ide_repo_tree_spec.js +++ b/spec/javascripts/repo/components/ide_repo_tree_spec.js @@ -41,11 +41,11 @@ describe('IdeRepoTree', () => { expect(tbody.querySelector('.file')).toBeTruthy(); }); - it('renders 5 loading files if tree is loading', (done) => { - vm.$store.state.loading = true; + it('renders 3 loading files if tree is loading', (done) => { + vm.treeId = '123'; Vue.nextTick(() => { - expect(vm.$el.querySelectorAll('tbody .loading-file').length).toEqual(5); + expect(vm.$el.querySelectorAll('.multi-file-loading-container').length).toEqual(3); done(); }); diff --git a/spec/javascripts/repo/components/ide_spec.js b/spec/javascripts/repo/components/ide_spec.js index 20b8dc25dcb..acfd63eb8de 100644 --- a/spec/javascripts/repo/components/ide_spec.js +++ b/spec/javascripts/repo/components/ide_spec.js @@ -10,7 +10,9 @@ describe('ide component', () => { beforeEach(() => { const Component = Vue.extend(ide); - vm = createComponentWithStore(Component, store).$mount(); + vm = createComponentWithStore(Component, store, { + emptyStateSvgPath: 'svg', + }).$mount(); }); afterEach(() => { diff --git a/spec/javascripts/vue_shared/components/header_ci_component_spec.js b/spec/javascripts/vue_shared/components/header_ci_component_spec.js index b4553acb341..b378a0bd896 100644 --- a/spec/javascripts/vue_shared/components/header_ci_component_spec.js +++ b/spec/javascripts/vue_shared/components/header_ci_component_spec.js @@ -1,5 +1,6 @@ import Vue from 'vue'; import headerCi from '~/vue_shared/components/header_ci_component.vue'; +import mountComponent from '../../helpers/vue_mount_component_helper'; describe('Header CI Component', () => { let HeaderCi; @@ -8,7 +9,6 @@ describe('Header CI Component', () => { beforeEach(() => { HeaderCi = Vue.extend(headerCi); - props = { status: { group: 'failed', @@ -45,54 +45,65 @@ describe('Header CI Component', () => { ], hasSidebarButton: true, }; - - vm = new HeaderCi({ - propsData: props, - }).$mount(); }); afterEach(() => { vm.$destroy(); }); - it('should render status badge', () => { - expect(vm.$el.querySelector('.ci-failed')).toBeDefined(); - expect(vm.$el.querySelector('.ci-status-icon-failed svg')).toBeDefined(); - expect( - vm.$el.querySelector('.ci-failed').getAttribute('href'), - ).toEqual(props.status.details_path); - }); + describe('render', () => { + beforeEach(() => { + vm = mountComponent(HeaderCi, props); + }); - it('should render item name and id', () => { - expect(vm.$el.querySelector('strong').textContent.trim()).toEqual('job #123'); - }); + it('should render status badge', () => { + expect(vm.$el.querySelector('.ci-failed')).toBeDefined(); + expect(vm.$el.querySelector('.ci-status-icon-failed svg')).toBeDefined(); + expect( + vm.$el.querySelector('.ci-failed').getAttribute('href'), + ).toEqual(props.status.details_path); + }); - it('should render timeago date', () => { - expect(vm.$el.querySelector('time')).toBeDefined(); - }); + it('should render item name and id', () => { + expect(vm.$el.querySelector('strong').textContent.trim()).toEqual('job #123'); + }); - it('should render user icon and name', () => { - expect(vm.$el.querySelector('.js-user-link').textContent.trim()).toEqual(props.user.name); - }); + it('should render timeago date', () => { + expect(vm.$el.querySelector('time')).toBeDefined(); + }); - it('should render provided actions', () => { - expect(vm.$el.querySelector('.btn').tagName).toEqual('BUTTON'); - expect(vm.$el.querySelector('.btn').textContent.trim()).toEqual(props.actions[0].label); - expect(vm.$el.querySelector('.link').tagName).toEqual('A'); - expect(vm.$el.querySelector('.link').textContent.trim()).toEqual(props.actions[1].label); - expect(vm.$el.querySelector('.link').getAttribute('href')).toEqual(props.actions[0].path); - }); + it('should render user icon and name', () => { + expect(vm.$el.querySelector('.js-user-link').textContent.trim()).toEqual(props.user.name); + }); + + it('should render provided actions', () => { + expect(vm.$el.querySelector('.btn').tagName).toEqual('BUTTON'); + expect(vm.$el.querySelector('.btn').textContent.trim()).toEqual(props.actions[0].label); + expect(vm.$el.querySelector('.link').tagName).toEqual('A'); + expect(vm.$el.querySelector('.link').textContent.trim()).toEqual(props.actions[1].label); + expect(vm.$el.querySelector('.link').getAttribute('href')).toEqual(props.actions[0].path); + }); - it('should show loading icon', (done) => { - vm.actions[0].isLoading = true; + it('should show loading icon', (done) => { + vm.actions[0].isLoading = true; - Vue.nextTick(() => { - expect(vm.$el.querySelector('.btn .fa-spinner').getAttribute('style')).toBeFalsy(); - done(); + Vue.nextTick(() => { + expect(vm.$el.querySelector('.btn .fa-spinner').getAttribute('style')).toBeFalsy(); + done(); + }); + }); + + it('should render sidebar toggle button', () => { + expect(vm.$el.querySelector('.js-sidebar-build-toggle')).toBeDefined(); }); }); - it('should render sidebar toggle button', () => { - expect(vm.$el.querySelector('.js-sidebar-build-toggle')).toBeDefined(); + describe('shouldRenderTriggeredLabel', () => { + it('should rendered created keyword when the shouldRenderTriggeredLabel is false', () => { + vm = mountComponent(HeaderCi, { ...props, shouldRenderTriggeredLabel: false }); + + expect(vm.$el.textContent).toContain('created'); + expect(vm.$el.textContent).not.toContain('triggered'); + }); }); }); diff --git a/spec/lib/gitlab/cycle_analytics/events_spec.rb b/spec/lib/gitlab/cycle_analytics/events_spec.rb index 28ea7d4c303..38a47a159e1 100644 --- a/spec/lib/gitlab/cycle_analytics/events_spec.rb +++ b/spec/lib/gitlab/cycle_analytics/events_spec.rb @@ -122,17 +122,18 @@ describe 'cycle analytics events' do let(:stage) { :test } let(:merge_request) { MergeRequest.first } + let!(:pipeline) do create(:ci_pipeline, ref: merge_request.source_branch, sha: merge_request.diff_head_sha, - project: context.project, + project: project, head_pipeline_of: merge_request) end before do - create(:ci_build, pipeline: pipeline, status: :success, author: user) - create(:ci_build, pipeline: pipeline, status: :success, author: user) + create(:ci_build, :success, pipeline: pipeline, author: user) + create(:ci_build, :success, pipeline: pipeline, author: user) pipeline.run! pipeline.succeed! @@ -219,17 +220,18 @@ describe 'cycle analytics events' do describe '#staging_events' do let(:stage) { :staging } let(:merge_request) { MergeRequest.first } + let!(:pipeline) do create(:ci_pipeline, ref: merge_request.source_branch, sha: merge_request.diff_head_sha, - project: context.project, + project: project, head_pipeline_of: merge_request) end before do - create(:ci_build, pipeline: pipeline, status: :success, author: user) - create(:ci_build, pipeline: pipeline, status: :success, author: user) + create(:ci_build, :success, pipeline: pipeline, author: user) + create(:ci_build, :success, pipeline: pipeline, author: user) pipeline.run! pipeline.succeed! diff --git a/spec/lib/gitlab/database/migration_helpers_spec.rb b/spec/lib/gitlab/database/migration_helpers_spec.rb index 7727a1d81b1..43761c2fe0c 100644 --- a/spec/lib/gitlab/database/migration_helpers_spec.rb +++ b/spec/lib/gitlab/database/migration_helpers_spec.rb @@ -1006,12 +1006,12 @@ describe Gitlab::Database::MigrationHelpers do context 'with batch_size option' do it 'queues jobs correctly' do Sidekiq::Testing.fake! do - model.queue_background_migration_jobs_by_range_at_intervals(User, 'FooJob', 10.seconds, batch_size: 2) + model.queue_background_migration_jobs_by_range_at_intervals(User, 'FooJob', 10.minutes, batch_size: 2) expect(BackgroundMigrationWorker.jobs[0]['args']).to eq(['FooJob', [id1, id2]]) - expect(BackgroundMigrationWorker.jobs[0]['at']).to eq(10.seconds.from_now.to_f) + expect(BackgroundMigrationWorker.jobs[0]['at']).to eq(10.minutes.from_now.to_f) expect(BackgroundMigrationWorker.jobs[1]['args']).to eq(['FooJob', [id3, id3]]) - expect(BackgroundMigrationWorker.jobs[1]['at']).to eq(20.seconds.from_now.to_f) + expect(BackgroundMigrationWorker.jobs[1]['at']).to eq(20.minutes.from_now.to_f) end end end @@ -1019,10 +1019,10 @@ describe Gitlab::Database::MigrationHelpers do context 'without batch_size option' do it 'queues jobs correctly' do Sidekiq::Testing.fake! do - model.queue_background_migration_jobs_by_range_at_intervals(User, 'FooJob', 10.seconds) + model.queue_background_migration_jobs_by_range_at_intervals(User, 'FooJob', 10.minutes) expect(BackgroundMigrationWorker.jobs[0]['args']).to eq(['FooJob', [id1, id3]]) - expect(BackgroundMigrationWorker.jobs[0]['at']).to eq(10.seconds.from_now.to_f) + expect(BackgroundMigrationWorker.jobs[0]['at']).to eq(10.minutes.from_now.to_f) end end end diff --git a/spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb b/spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb index d81774c8b8f..a067c42b75b 100644 --- a/spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb +++ b/spec/lib/gitlab/diff/file_collection/merge_request_diff_spec.rb @@ -19,4 +19,18 @@ describe Gitlab::Diff::FileCollection::MergeRequestDiff do diff_files end + + shared_examples 'initializes a DiffCollection' do + it 'returns a valid instance of a DiffCollection' do + expect(diff_files).to be_a(Gitlab::Git::DiffCollection) + end + end + + context 'with Gitaly disabled', :disable_gitaly do + it_behaves_like 'initializes a DiffCollection' + end + + context 'with Gitaly enabled' do + it_behaves_like 'initializes a DiffCollection' + end end diff --git a/spec/lib/gitlab/exclusive_lease_spec.rb b/spec/lib/gitlab/exclusive_lease_spec.rb index 7322a326b01..6193e177668 100644 --- a/spec/lib/gitlab/exclusive_lease_spec.rb +++ b/spec/lib/gitlab/exclusive_lease_spec.rb @@ -73,4 +73,19 @@ describe Gitlab::ExclusiveLease, :clean_gitlab_redis_shared_state do described_class.new(key, timeout: 3600).try_obtain end end + + describe '#ttl' do + it 'returns the TTL of the Redis key' do + lease = described_class.new('kittens', timeout: 100) + lease.try_obtain + + expect(lease.ttl <= 100).to eq(true) + end + + it 'returns nil when the lease does not exist' do + lease = described_class.new('kittens', timeout: 10) + + expect(lease.ttl).to be_nil + end + end end diff --git a/spec/lib/gitlab/git/blob_spec.rb b/spec/lib/gitlab/git/blob_spec.rb index 7f5946b1658..07eb5b82d5f 100644 --- a/spec/lib/gitlab/git/blob_spec.rb +++ b/spec/lib/gitlab/git/blob_spec.rb @@ -146,7 +146,7 @@ describe Gitlab::Git::Blob, seed_helper: true do context 'when sha references a tree' do it 'returns nil' do - tree = Gitlab::Git::Commit.find(repository, 'master').tree + tree = repository.rugged.rev_parse('master^{tree}') blob = Gitlab::Git::Blob.raw(repository, tree.oid) @@ -230,7 +230,7 @@ describe Gitlab::Git::Blob, seed_helper: true do end describe '.batch_lfs_pointers' do - let(:tree_object) { Gitlab::Git::Commit.find(repository, 'master').tree } + let(:tree_object) { repository.rugged.rev_parse('master^{tree}') } let(:non_lfs_blob) do Gitlab::Git::Blob.find( diff --git a/spec/lib/gitlab/git/commit_spec.rb b/spec/lib/gitlab/git/commit_spec.rb index 6d35734d306..6a07a3ca8b8 100644 --- a/spec/lib/gitlab/git/commit_spec.rb +++ b/spec/lib/gitlab/git/commit_spec.rb @@ -55,7 +55,6 @@ describe Gitlab::Git::Commit, seed_helper: true do it { expect(@commit.parents).to eq(@gitlab_parents) } it { expect(@commit.parent_id).to eq(@parents.first.oid) } it { expect(@commit.no_commit_message).to eq("--no commit message") } - it { expect(@commit.tree).to eq(@tree) } after do # Erase the new commit so other tests get the original repo diff --git a/spec/lib/gitlab/git/repository_spec.rb b/spec/lib/gitlab/git/repository_spec.rb index f94234f6010..f346a345f00 100644 --- a/spec/lib/gitlab/git/repository_spec.rb +++ b/spec/lib/gitlab/git/repository_spec.rb @@ -649,29 +649,39 @@ describe Gitlab::Git::Repository, seed_helper: true do Gitlab::Shell.new.remove_repository(storage_path, 'my_project') end - it 'fetches a repository as a mirror remote' do - subject + shared_examples 'repository mirror fecthing' do + it 'fetches a repository as a mirror remote' do + subject - expect(refs(new_repository.path)).to eq(refs(repository.path)) - end + expect(refs(new_repository.path)).to eq(refs(repository.path)) + end - context 'with keep-around refs' do - let(:sha) { SeedRepo::Commit::ID } - let(:keep_around_ref) { "refs/keep-around/#{sha}" } - let(:tmp_ref) { "refs/tmp/#{SecureRandom.hex}" } + context 'with keep-around refs' do + let(:sha) { SeedRepo::Commit::ID } + let(:keep_around_ref) { "refs/keep-around/#{sha}" } + let(:tmp_ref) { "refs/tmp/#{SecureRandom.hex}" } - before do - repository.rugged.references.create(keep_around_ref, sha, force: true) - repository.rugged.references.create(tmp_ref, sha, force: true) - end + before do + repository.rugged.references.create(keep_around_ref, sha, force: true) + repository.rugged.references.create(tmp_ref, sha, force: true) + end - it 'includes the temporary and keep-around refs' do - subject + it 'includes the temporary and keep-around refs' do + subject - expect(refs(new_repository.path)).to include(keep_around_ref) - expect(refs(new_repository.path)).to include(tmp_ref) + expect(refs(new_repository.path)).to include(keep_around_ref) + expect(refs(new_repository.path)).to include(tmp_ref) + end end end + + context 'with gitaly enabled' do + it_behaves_like 'repository mirror fecthing' + end + + context 'with gitaly enabled', :skip_gitaly_mock do + it_behaves_like 'repository mirror fecthing' + end end describe '#remote_tags' do diff --git a/spec/lib/gitlab/gitaly_client/remote_service_spec.rb b/spec/lib/gitlab/gitaly_client/remote_service_spec.rb index 69c6f054016..9d540446532 100644 --- a/spec/lib/gitlab/gitaly_client/remote_service_spec.rb +++ b/spec/lib/gitlab/gitaly_client/remote_service_spec.rb @@ -31,4 +31,17 @@ describe Gitlab::GitalyClient::RemoteService do expect(client.remove_remote(remote_name)).to be(true) end end + + describe '#fetch_internal_remote' do + let(:remote_repository) { Gitlab::Git::Repository.new('default', TEST_MUTABLE_REPO_PATH, '') } + + it 'sends an fetch_internal_remote message and returns the result value' do + expect_any_instance_of(Gitaly::RemoteService::Stub) + .to receive(:fetch_internal_remote) + .with(gitaly_request_with_path(storage_name, relative_path), kind_of(Hash)) + .and_return(double(result: true)) + + expect(client.fetch_internal_remote(remote_repository)).to be(true) + end + end end diff --git a/spec/lib/gitlab/import_export/project.json b/spec/lib/gitlab/import_export/project.json index f0752649121..7580b62cfc0 100644 --- a/spec/lib/gitlab/import_export/project.json +++ b/spec/lib/gitlab/import_export/project.json @@ -6465,78 +6465,100 @@ } } ], - "statuses": [ - { - "id": 71, - "project_id": 5, - "status": "failed", - "finished_at": "2016-03-29T06:28:12.630Z", - "trace": null, - "created_at": "2016-03-22T15:20:35.772Z", - "updated_at": "2016-03-29T06:28:12.634Z", - "started_at": null, - "runner_id": null, - "coverage": null, - "commit_id": 36, - "commands": "$ build command", - "job_id": null, - "name": "test build 1", - "deploy": false, - "options": null, - "allow_failure": false, - "stage": "test", - "trigger_request_id": null, - "stage_idx": 1, - "tag": null, - "ref": "master", - "user_id": null, - "target_url": null, - "description": null, - "artifacts_file": { - "url": null - }, - "artifacts_metadata": { - "url": null - }, - "erased_by_id": null, - "erased_at": null, - "type": "Ci::Build", - "token": "abcd" - }, - { - "id": 72, - "project_id": 5, - "status": "success", - "finished_at": null, - "trace": "Porro ea qui ut dolores. Labore ab nemo explicabo aspernatur quis voluptates corporis. Et quasi delectus est sit aperiam perspiciatis asperiores. Repudiandae cum aut consectetur accusantium officia sunt.\n\nQuidem dolore iusto quaerat ut aut inventore et molestiae. Libero voluptates atque nemo qui. Nulla temporibus ipsa similique facere.\n\nAliquam ipsam perferendis qui fugit accusantium omnis id voluptatum. Dignissimos aliquid dicta eos voluptatem assumenda quia. Sed autem natus unde dolor et non nisi et. Consequuntur nihil consequatur rerum est.\n\nSimilique neque est iste ducimus qui fuga cupiditate. Libero autem est aut fuga. Consectetur natus quis non ducimus ut dolore. Magni voluptatibus eius et maxime aut.\n\nAd officiis tempore voluptate vitae corrupti explicabo labore est. Consequatur expedita et sunt nihil aut. Deleniti porro iusto molestiae et beatae.\n\nDeleniti modi nulla qui et labore sequi corrupti. Qui voluptatem assumenda eum cupiditate et. Nesciunt ipsam ut ea possimus eum. Consectetur quidem suscipit atque dolore itaque voluptatibus et cupiditate.", - "created_at": "2016-03-22T15:20:35.777Z", - "updated_at": "2016-03-22T15:20:35.777Z", - "started_at": null, - "runner_id": null, - "coverage": null, - "commit_id": 36, - "commands": "$ build command", - "job_id": null, - "name": "test build 2", - "deploy": false, - "options": null, - "allow_failure": false, - "stage": "test", - "trigger_request_id": null, - "stage_idx": 1, - "tag": null, - "ref": "master", - "user_id": null, - "target_url": null, - "description": null, - "artifacts_file": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/72/p5_build_artifacts.zip" - }, - "artifacts_metadata": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/72/p5_build_artifacts_metadata.gz" - }, - "erased_by_id": null, - "erased_at": null + "stages": [ + { + "id": 11, + "project_id": 5, + "pipeline_id": 36, + "name": "test", + "status": 1, + "created_at": "2016-03-22T15:44:44.772Z", + "updated_at": "2016-03-29T06:44:44.634Z", + "statuses": [ + { + "id": 71, + "project_id": 5, + "status": "failed", + "finished_at": "2016-03-29T06:28:12.630Z", + "trace": null, + "created_at": "2016-03-22T15:20:35.772Z", + "updated_at": "2016-03-29T06:28:12.634Z", + "started_at": null, + "runner_id": null, + "coverage": null, + "commit_id": 36, + "commands": "$ build command", + "job_id": null, + "name": "test build 1", + "deploy": false, + "options": null, + "allow_failure": false, + "stage": "test", + "trigger_request_id": null, + "stage_idx": 1, + "stage_id": 11, + "tag": null, + "ref": "master", + "user_id": null, + "target_url": null, + "description": null, + "artifacts_file": { + "url": null + }, + "artifacts_metadata": { + "url": null + }, + "erased_by_id": null, + "erased_at": null, + "type": "Ci::Build", + "token": "abcd" + }, + { + "id": 72, + "project_id": 5, + "status": "success", + "finished_at": null, + "trace": "Porro ea qui ut dolores. Labore ab nemo explicabo aspernatur quis voluptates corporis. Et quasi delectus est sit aperiam perspiciatis asperiores. Repudiandae cum aut consectetur accusantium officia sunt.\n\nQuidem dolore iusto quaerat ut aut inventore et molestiae. Libero voluptates atque nemo qui. Nulla temporibus ipsa similique facere.\n\nAliquam ipsam perferendis qui fugit accusantium omnis id voluptatum. Dignissimos aliquid dicta eos voluptatem assumenda quia. Sed autem natus unde dolor et non nisi et. Consequuntur nihil consequatur rerum est.\n\nSimilique neque est iste ducimus qui fuga cupiditate. Libero autem est aut fuga. Consectetur natus quis non ducimus ut dolore. Magni voluptatibus eius et maxime aut.\n\nAd officiis tempore voluptate vitae corrupti explicabo labore est. Consequatur expedita et sunt nihil aut. Deleniti porro iusto molestiae et beatae.\n\nDeleniti modi nulla qui et labore sequi corrupti. Qui voluptatem assumenda eum cupiditate et. Nesciunt ipsam ut ea possimus eum. Consectetur quidem suscipit atque dolore itaque voluptatibus et cupiditate.", + "created_at": "2016-03-22T15:20:35.777Z", + "updated_at": "2016-03-22T15:20:35.777Z", + "started_at": null, + "runner_id": null, + "coverage": null, + "commit_id": 36, + "commands": "$ deploy command", + "job_id": null, + "name": "test build 2", + "deploy": false, + "options": null, + "allow_failure": false, + "stage": "deploy", + "trigger_request_id": null, + "stage_idx": 1, + "stage_id": 12, + "tag": null, + "ref": "master", + "user_id": null, + "target_url": null, + "description": null, + "artifacts_file": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/72/p5_build_artifacts.zip" + }, + "artifacts_metadata": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/72/p5_build_artifacts_metadata.gz" + }, + "erased_by_id": null, + "erased_at": null + } + ] + }, + { + "id": 12, + "project_id": 5, + "pipeline_id": 36, + "name": "deploy", + "status": 2, + "created_at": "2016-03-22T15:45:45.772Z", + "updated_at": "2016-03-29T06:45:45.634Z" } ] }, @@ -6556,76 +6578,87 @@ "started_at": null, "finished_at": null, "duration": null, - "statuses": [ - { - "id": 74, - "project_id": 5, - "status": "success", - "finished_at": null, - "trace": "Ad ut quod repudiandae iste dolor doloribus. Adipisci consequuntur deserunt omnis quasi eveniet et sed fugit. Aut nemo omnis molestiae impedit ex consequatur ducimus. Voluptatum exercitationem quia aut est et hic dolorem.\n\nQuasi repellendus et eaque magni eum facilis. Dolorem aperiam nam nihil pariatur praesentium ad aliquam. Commodi enim et eos tenetur. Odio voluptatibus laboriosam mollitia rerum exercitationem magnam consequuntur. Tenetur ea vel eum corporis.\n\nVoluptatibus optio in aliquid est voluptates. Ad a ut ab placeat vero blanditiis. Earum aspernatur quia beatae expedita voluptatem dignissimos provident. Quis minima id nemo ut aut est veritatis provident.\n\nRerum voluptatem quidem eius maiores magnam veniam. Voluptatem aperiam aut voluptate et nulla deserunt voluptas. Quaerat aut accusantium laborum est dolorem architecto reiciendis. Aliquam asperiores doloribus omnis maxime enim nesciunt. Eum aut rerum repellendus debitis et ut eius.\n\nQuaerat assumenda ea sit consequatur autem in. Cum eligendi voluptatem quo sed. Ut fuga iusto cupiditate autem sint.\n\nOfficia totam officiis architecto corporis molestiae amet ut. Tempora sed dolorum rerum omnis voluptatem accusantium sit eum. Quia debitis ipsum quidem aliquam inventore sunt consequatur qui.", - "created_at": "2016-03-22T15:20:35.846Z", - "updated_at": "2016-03-22T15:20:35.846Z", - "started_at": null, - "runner_id": null, - "coverage": null, - "commit_id": 37, - "commands": "$ build command", - "job_id": null, - "name": "test build 2", - "deploy": false, - "options": null, - "allow_failure": false, - "stage": "test", - "trigger_request_id": null, - "stage_idx": 1, - "tag": null, - "ref": "master", - "user_id": null, - "target_url": null, - "description": null, - "artifacts_file": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/74/p5_build_artifacts.zip" - }, - "artifacts_metadata": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/74/p5_build_artifacts_metadata.gz" - }, - "erased_by_id": null, - "erased_at": null - }, - { - "id": 73, - "project_id": 5, - "status": "canceled", - "finished_at": null, - "trace": null, - "created_at": "2016-03-22T15:20:35.842Z", - "updated_at": "2016-03-22T15:20:35.842Z", - "started_at": null, - "runner_id": null, - "coverage": null, - "commit_id": 37, - "commands": "$ build command", - "job_id": null, - "name": "test build 1", - "deploy": false, - "options": null, - "allow_failure": false, - "stage": "test", - "trigger_request_id": null, - "stage_idx": 1, - "tag": null, - "ref": "master", - "user_id": null, - "target_url": null, - "description": null, - "artifacts_file": { - "url": null - }, - "artifacts_metadata": { - "url": null - }, - "erased_by_id": null, - "erased_at": null + "stages": [ + { + "id": 21, + "project_id": 5, + "pipeline_id": 37, + "name": "test", + "status": 1, + "created_at": "2016-03-22T15:44:44.772Z", + "updated_at": "2016-03-29T06:44:44.634Z", + "statuses": [ + { + "id": 74, + "project_id": 5, + "status": "success", + "finished_at": null, + "trace": "Ad ut quod repudiandae iste dolor doloribus. Adipisci consequuntur deserunt omnis quasi eveniet et sed fugit. Aut nemo omnis molestiae impedit ex consequatur ducimus. Voluptatum exercitationem quia aut est et hic dolorem.\n\nQuasi repellendus et eaque magni eum facilis. Dolorem aperiam nam nihil pariatur praesentium ad aliquam. Commodi enim et eos tenetur. Odio voluptatibus laboriosam mollitia rerum exercitationem magnam consequuntur. Tenetur ea vel eum corporis.\n\nVoluptatibus optio in aliquid est voluptates. Ad a ut ab placeat vero blanditiis. Earum aspernatur quia beatae expedita voluptatem dignissimos provident. Quis minima id nemo ut aut est veritatis provident.\n\nRerum voluptatem quidem eius maiores magnam veniam. Voluptatem aperiam aut voluptate et nulla deserunt voluptas. Quaerat aut accusantium laborum est dolorem architecto reiciendis. Aliquam asperiores doloribus omnis maxime enim nesciunt. Eum aut rerum repellendus debitis et ut eius.\n\nQuaerat assumenda ea sit consequatur autem in. Cum eligendi voluptatem quo sed. Ut fuga iusto cupiditate autem sint.\n\nOfficia totam officiis architecto corporis molestiae amet ut. Tempora sed dolorum rerum omnis voluptatem accusantium sit eum. Quia debitis ipsum quidem aliquam inventore sunt consequatur qui.", + "created_at": "2016-03-22T15:20:35.846Z", + "updated_at": "2016-03-22T15:20:35.846Z", + "started_at": null, + "runner_id": null, + "coverage": null, + "commit_id": 37, + "commands": "$ build command", + "job_id": null, + "name": "test build 2", + "deploy": false, + "options": null, + "allow_failure": false, + "stage": "test", + "trigger_request_id": null, + "stage_idx": 1, + "tag": null, + "ref": "master", + "user_id": null, + "target_url": null, + "description": null, + "artifacts_file": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/74/p5_build_artifacts.zip" + }, + "artifacts_metadata": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/74/p5_build_artifacts_metadata.gz" + }, + "erased_by_id": null, + "erased_at": null + }, + { + "id": 73, + "project_id": 5, + "status": "canceled", + "finished_at": null, + "trace": null, + "created_at": "2016-03-22T15:20:35.842Z", + "updated_at": "2016-03-22T15:20:35.842Z", + "started_at": null, + "runner_id": null, + "coverage": null, + "commit_id": 37, + "commands": "$ build command", + "job_id": null, + "name": "test build 1", + "deploy": false, + "options": null, + "allow_failure": false, + "stage": "test", + "trigger_request_id": null, + "stage_idx": 1, + "tag": null, + "ref": "master", + "user_id": null, + "target_url": null, + "description": null, + "artifacts_file": { + "url": null + }, + "artifacts_metadata": { + "url": null + }, + "erased_by_id": null, + "erased_at": null + } + ] } ] }, @@ -6645,76 +6678,87 @@ "started_at": null, "finished_at": null, "duration": null, - "statuses": [ - { - "id": 76, - "project_id": 5, - "status": "success", - "finished_at": null, - "trace": "Et rerum quia ea cumque ut modi non. Libero eaque ipsam architecto maiores expedita deleniti. Ratione quia qui est id.\n\nQuod sit officiis sed unde inventore veniam quisquam velit. Ea harum cum quibusdam quisquam minima quo possimus non. Temporibus itaque aliquam aut rerum veritatis at.\n\nMagnam ipsum eius recusandae qui quis sit maiores eum. Et animi iusto aut itaque. Doloribus harum deleniti nobis accusantium et libero.\n\nRerum fuga perferendis magni commodi officiis id repudiandae. Consequatur ratione consequatur suscipit facilis sunt iure est dicta. Qui unde quasi facilis et quae nesciunt. Magnam iste et nobis officiis tenetur. Aspernatur quo et temporibus non in.\n\nNisi rerum velit est ad enim sint molestiae consequuntur. Quaerat nisi nesciunt quasi officiis. Possimus non blanditiis laborum quos.\n\nRerum laudantium facere animi qui. Ipsa est iusto magnam nihil. Enim omnis occaecati non dignissimos ut recusandae eum quasi. Qui maxime dolor et nemo voluptates incidunt quia.", - "created_at": "2016-03-22T15:20:35.882Z", - "updated_at": "2016-03-22T15:20:35.882Z", - "started_at": null, - "runner_id": null, - "coverage": null, - "commit_id": 38, - "commands": "$ build command", - "job_id": null, - "name": "test build 2", - "deploy": false, - "options": null, - "allow_failure": false, - "stage": "test", - "trigger_request_id": null, - "stage_idx": 1, - "tag": null, - "ref": "master", - "user_id": null, - "target_url": null, - "description": null, - "artifacts_file": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/76/p5_build_artifacts.zip" - }, - "artifacts_metadata": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/76/p5_build_artifacts_metadata.gz" - }, - "erased_by_id": null, - "erased_at": null - }, - { - "id": 75, - "project_id": 5, - "status": "failed", - "finished_at": null, - "trace": "Sed et iste recusandae dicta corporis. Sunt alias porro fugit sunt. Fugiat omnis nihil dignissimos aperiam explicabo doloremque sit aut. Harum fugit expedita quia rerum ut consequatur laboriosam aliquam.\n\nNatus libero ut ut tenetur earum. Tempora omnis autem omnis et libero dolores illum autem. Deleniti eos sunt mollitia ipsam. Cum dolor repellendus dolorum sequi officia. Ullam sunt in aut pariatur excepturi.\n\nDolor nihil debitis et est eos. Cumque eos eum saepe ducimus autem. Alias architecto consequatur aut pariatur possimus. Aut quos aut incidunt quam velit et. Quas voluptatum ad dolorum dignissimos.\n\nUt voluptates consectetur illo et. Est commodi accusantium vel quo. Eos qui fugiat soluta porro.\n\nRatione possimus alias vel maxime sint totam est repellat. Ipsum corporis eos sint voluptatem eos odit. Temporibus libero nulla harum eligendi labore similique ratione magnam. Suscipit sequi in omnis neque.\n\nLaudantium dolor amet omnis placeat mollitia aut molestiae. Aut rerum similique ipsum quod illo quas unde. Sunt aut veritatis eos omnis porro. Rem veritatis mollitia praesentium dolorem. Consequatur sequi ad cumque earum omnis quia necessitatibus.", - "created_at": "2016-03-22T15:20:35.864Z", - "updated_at": "2016-03-22T15:20:35.864Z", - "started_at": null, - "runner_id": null, - "coverage": null, - "commit_id": 38, - "commands": "$ build command", - "job_id": null, - "name": "test build 1", - "deploy": false, - "options": null, - "allow_failure": false, - "stage": "test", - "trigger_request_id": null, - "stage_idx": 1, - "tag": null, - "ref": "master", - "user_id": null, - "target_url": null, - "description": null, - "artifacts_file": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/75/p5_build_artifacts.zip" - }, - "artifacts_metadata": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/75/p5_build_artifacts_metadata.gz" - }, - "erased_by_id": null, - "erased_at": null + "stages": [ + { + "id": 22, + "project_id": 5, + "pipeline_id": 38, + "name": "test", + "status": 1, + "created_at": "2016-03-22T15:44:44.772Z", + "updated_at": "2016-03-29T06:44:44.634Z", + "statuses": [ + { + "id": 76, + "project_id": 5, + "status": "success", + "finished_at": null, + "trace": "Et rerum quia ea cumque ut modi non. Libero eaque ipsam architecto maiores expedita deleniti. Ratione quia qui est id.\n\nQuod sit officiis sed unde inventore veniam quisquam velit. Ea harum cum quibusdam quisquam minima quo possimus non. Temporibus itaque aliquam aut rerum veritatis at.\n\nMagnam ipsum eius recusandae qui quis sit maiores eum. Et animi iusto aut itaque. Doloribus harum deleniti nobis accusantium et libero.\n\nRerum fuga perferendis magni commodi officiis id repudiandae. Consequatur ratione consequatur suscipit facilis sunt iure est dicta. Qui unde quasi facilis et quae nesciunt. Magnam iste et nobis officiis tenetur. Aspernatur quo et temporibus non in.\n\nNisi rerum velit est ad enim sint molestiae consequuntur. Quaerat nisi nesciunt quasi officiis. Possimus non blanditiis laborum quos.\n\nRerum laudantium facere animi qui. Ipsa est iusto magnam nihil. Enim omnis occaecati non dignissimos ut recusandae eum quasi. Qui maxime dolor et nemo voluptates incidunt quia.", + "created_at": "2016-03-22T15:20:35.882Z", + "updated_at": "2016-03-22T15:20:35.882Z", + "started_at": null, + "runner_id": null, + "coverage": null, + "commit_id": 38, + "commands": "$ build command", + "job_id": null, + "name": "test build 2", + "deploy": false, + "options": null, + "allow_failure": false, + "stage": "test", + "trigger_request_id": null, + "stage_idx": 1, + "tag": null, + "ref": "master", + "user_id": null, + "target_url": null, + "description": null, + "artifacts_file": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/76/p5_build_artifacts.zip" + }, + "artifacts_metadata": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/76/p5_build_artifacts_metadata.gz" + }, + "erased_by_id": null, + "erased_at": null + }, + { + "id": 75, + "project_id": 5, + "status": "failed", + "finished_at": null, + "trace": "Sed et iste recusandae dicta corporis. Sunt alias porro fugit sunt. Fugiat omnis nihil dignissimos aperiam explicabo doloremque sit aut. Harum fugit expedita quia rerum ut consequatur laboriosam aliquam.\n\nNatus libero ut ut tenetur earum. Tempora omnis autem omnis et libero dolores illum autem. Deleniti eos sunt mollitia ipsam. Cum dolor repellendus dolorum sequi officia. Ullam sunt in aut pariatur excepturi.\n\nDolor nihil debitis et est eos. Cumque eos eum saepe ducimus autem. Alias architecto consequatur aut pariatur possimus. Aut quos aut incidunt quam velit et. Quas voluptatum ad dolorum dignissimos.\n\nUt voluptates consectetur illo et. Est commodi accusantium vel quo. Eos qui fugiat soluta porro.\n\nRatione possimus alias vel maxime sint totam est repellat. Ipsum corporis eos sint voluptatem eos odit. Temporibus libero nulla harum eligendi labore similique ratione magnam. Suscipit sequi in omnis neque.\n\nLaudantium dolor amet omnis placeat mollitia aut molestiae. Aut rerum similique ipsum quod illo quas unde. Sunt aut veritatis eos omnis porro. Rem veritatis mollitia praesentium dolorem. Consequatur sequi ad cumque earum omnis quia necessitatibus.", + "created_at": "2016-03-22T15:20:35.864Z", + "updated_at": "2016-03-22T15:20:35.864Z", + "started_at": null, + "runner_id": null, + "coverage": null, + "commit_id": 38, + "commands": "$ build command", + "job_id": null, + "name": "test build 1", + "deploy": false, + "options": null, + "allow_failure": false, + "stage": "test", + "trigger_request_id": null, + "stage_idx": 1, + "tag": null, + "ref": "master", + "user_id": null, + "target_url": null, + "description": null, + "artifacts_file": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/75/p5_build_artifacts.zip" + }, + "artifacts_metadata": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/75/p5_build_artifacts_metadata.gz" + }, + "erased_by_id": null, + "erased_at": null + } + ] } ] }, @@ -6734,76 +6778,87 @@ "started_at": null, "finished_at": null, "duration": null, - "statuses": [ - { - "id": 78, - "project_id": 5, - "status": "success", - "finished_at": null, - "trace": "Dolorem deserunt quas quia error hic quo cum vel. Natus voluptatem cumque expedita numquam odit. Eos expedita nostrum corporis consequatur est recusandae.\n\nCulpa blanditiis rerum repudiandae alias voluptatem. Velit iusto est ullam consequatur doloribus porro. Corporis voluptas consectetur est veniam et quia quae.\n\nEt aut magni fuga nesciunt officiis molestias. Quaerat et nam necessitatibus qui rerum. Architecto quia officiis voluptatem laborum est recusandae. Quasi ducimus soluta odit necessitatibus labore numquam dignissimos. Quia facere sint temporibus inventore sunt nihil saepe dolorum.\n\nFacere dolores quis dolores a. Est minus nostrum nihil harum. Earum laborum et ipsum unde neque sit nemo. Corrupti est consequatur minima fugit. Illum voluptatem illo error ducimus officia qui debitis.\n\nDignissimos porro a autem harum aut. Aut id reprehenderit et exercitationem. Est et quisquam ipsa temporibus molestiae. Architecto natus dolore qui fugiat incidunt. Autem odit veniam excepturi et voluptatibus culpa ipsum eos.\n\nAmet quo quisquam dignissimos soluta modi dolores. Sint omnis eius optio corporis dolor. Eligendi animi porro quia placeat ut.", - "created_at": "2016-03-22T15:20:35.927Z", - "updated_at": "2016-03-22T15:20:35.927Z", - "started_at": null, - "runner_id": null, - "coverage": null, - "commit_id": 39, - "commands": "$ build command", - "job_id": null, - "name": "test build 2", - "deploy": false, - "options": null, - "allow_failure": false, - "stage": "test", - "trigger_request_id": null, - "stage_idx": 1, - "tag": null, - "ref": "master", - "user_id": null, - "target_url": null, - "description": null, - "artifacts_file": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/78/p5_build_artifacts.zip" - }, - "artifacts_metadata": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/78/p5_build_artifacts_metadata.gz" - }, - "erased_by_id": null, - "erased_at": null - }, - { - "id": 77, - "project_id": 5, - "status": "failed", - "finished_at": null, - "trace": "Rerum ut et suscipit est perspiciatis. Inventore debitis cum eius vitae. Ex incidunt id velit aut quo nisi. Laboriosam repellat deserunt eius reiciendis architecto et. Est harum quos nesciunt nisi consectetur.\n\nAlias esse omnis sint officia est consequatur in nobis. Dignissimos dolorum vel eligendi nesciunt dolores sit. Veniam mollitia ducimus et exercitationem molestiae libero sed. Atque omnis debitis laudantium voluptatibus qui. Repellendus tempore est commodi pariatur.\n\nExpedita voluptate illum est alias non. Modi nesciunt ab assumenda laborum nulla consequatur molestias doloremque. Magnam quod officia vel explicabo accusamus ut voluptatem incidunt. Rerum ut aliquid ullam saepe. Est eligendi debitis beatae blanditiis reiciendis.\n\nQui fuga sit dolores libero maiores et suscipit. Consectetur asperiores omnis minima impedit eos fugiat. Similique omnis nisi sed vero inventore ipsum aliquam exercitationem.\n\nBlanditiis magni iure dolorum omnis ratione delectus molestiae. Atque officia dolor voluptatem culpa quod. Incidunt suscipit quidem possimus veritatis non vel. Iusto aliquid et id quia quasi.\n\nVel facere velit blanditiis incidunt cupiditate sed maiores consequuntur. Quasi quia dicta consequuntur et quia voluptatem iste id. Incidunt et rerum fuga esse sint.", - "created_at": "2016-03-22T15:20:35.905Z", - "updated_at": "2016-03-22T15:20:35.905Z", - "started_at": null, - "runner_id": null, - "coverage": null, - "commit_id": 39, - "commands": "$ build command", - "job_id": null, - "name": "test build 1", - "deploy": false, - "options": null, - "allow_failure": false, - "stage": "test", - "trigger_request_id": null, - "stage_idx": 1, - "tag": null, - "ref": "master", - "user_id": null, - "target_url": null, - "description": null, - "artifacts_file": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/77/p5_build_artifacts.zip" - }, - "artifacts_metadata": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/77/p5_build_artifacts_metadata.gz" - }, - "erased_by_id": null, - "erased_at": null + "stages": [ + { + "id": 23, + "project_id": 5, + "pipeline_id": 39, + "name": "test", + "status": 1, + "created_at": "2016-03-22T15:44:44.772Z", + "updated_at": "2016-03-29T06:44:44.634Z", + "statuses": [ + { + "id": 78, + "project_id": 5, + "status": "success", + "finished_at": null, + "trace": "Dolorem deserunt quas quia error hic quo cum vel. Natus voluptatem cumque expedita numquam odit. Eos expedita nostrum corporis consequatur est recusandae.\n\nCulpa blanditiis rerum repudiandae alias voluptatem. Velit iusto est ullam consequatur doloribus porro. Corporis voluptas consectetur est veniam et quia quae.\n\nEt aut magni fuga nesciunt officiis molestias. Quaerat et nam necessitatibus qui rerum. Architecto quia officiis voluptatem laborum est recusandae. Quasi ducimus soluta odit necessitatibus labore numquam dignissimos. Quia facere sint temporibus inventore sunt nihil saepe dolorum.\n\nFacere dolores quis dolores a. Est minus nostrum nihil harum. Earum laborum et ipsum unde neque sit nemo. Corrupti est consequatur minima fugit. Illum voluptatem illo error ducimus officia qui debitis.\n\nDignissimos porro a autem harum aut. Aut id reprehenderit et exercitationem. Est et quisquam ipsa temporibus molestiae. Architecto natus dolore qui fugiat incidunt. Autem odit veniam excepturi et voluptatibus culpa ipsum eos.\n\nAmet quo quisquam dignissimos soluta modi dolores. Sint omnis eius optio corporis dolor. Eligendi animi porro quia placeat ut.", + "created_at": "2016-03-22T15:20:35.927Z", + "updated_at": "2016-03-22T15:20:35.927Z", + "started_at": null, + "runner_id": null, + "coverage": null, + "commit_id": 39, + "commands": "$ build command", + "job_id": null, + "name": "test build 2", + "deploy": false, + "options": null, + "allow_failure": false, + "stage": "test", + "trigger_request_id": null, + "stage_idx": 1, + "tag": null, + "ref": "master", + "user_id": null, + "target_url": null, + "description": null, + "artifacts_file": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/78/p5_build_artifacts.zip" + }, + "artifacts_metadata": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/78/p5_build_artifacts_metadata.gz" + }, + "erased_by_id": null, + "erased_at": null + }, + { + "id": 77, + "project_id": 5, + "status": "failed", + "finished_at": null, + "trace": "Rerum ut et suscipit est perspiciatis. Inventore debitis cum eius vitae. Ex incidunt id velit aut quo nisi. Laboriosam repellat deserunt eius reiciendis architecto et. Est harum quos nesciunt nisi consectetur.\n\nAlias esse omnis sint officia est consequatur in nobis. Dignissimos dolorum vel eligendi nesciunt dolores sit. Veniam mollitia ducimus et exercitationem molestiae libero sed. Atque omnis debitis laudantium voluptatibus qui. Repellendus tempore est commodi pariatur.\n\nExpedita voluptate illum est alias non. Modi nesciunt ab assumenda laborum nulla consequatur molestias doloremque. Magnam quod officia vel explicabo accusamus ut voluptatem incidunt. Rerum ut aliquid ullam saepe. Est eligendi debitis beatae blanditiis reiciendis.\n\nQui fuga sit dolores libero maiores et suscipit. Consectetur asperiores omnis minima impedit eos fugiat. Similique omnis nisi sed vero inventore ipsum aliquam exercitationem.\n\nBlanditiis magni iure dolorum omnis ratione delectus molestiae. Atque officia dolor voluptatem culpa quod. Incidunt suscipit quidem possimus veritatis non vel. Iusto aliquid et id quia quasi.\n\nVel facere velit blanditiis incidunt cupiditate sed maiores consequuntur. Quasi quia dicta consequuntur et quia voluptatem iste id. Incidunt et rerum fuga esse sint.", + "created_at": "2016-03-22T15:20:35.905Z", + "updated_at": "2016-03-22T15:20:35.905Z", + "started_at": null, + "runner_id": null, + "coverage": null, + "commit_id": 39, + "commands": "$ build command", + "job_id": null, + "name": "test build 1", + "deploy": false, + "options": null, + "allow_failure": false, + "stage": "test", + "trigger_request_id": null, + "stage_idx": 1, + "tag": null, + "ref": "master", + "user_id": null, + "target_url": null, + "description": null, + "artifacts_file": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/77/p5_build_artifacts.zip" + }, + "artifacts_metadata": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/77/p5_build_artifacts_metadata.gz" + }, + "erased_by_id": null, + "erased_at": null + } + ] } ] }, @@ -6823,76 +6878,87 @@ "started_at": null, "finished_at": null, "duration": null, - "statuses": [ - { - "id": 79, - "project_id": 5, - "status": "failed", - "finished_at": "2016-03-29T06:28:12.695Z", - "trace": "Sed culpa est et facere saepe vel id ab. Quas temporibus aut similique dolorem consequatur corporis aut praesentium. Cum officia molestiae sit earum excepturi.\n\nSint possimus aut ratione quia. Quis nesciunt ratione itaque illo. Tenetur est dolor assumenda possimus voluptatem quia minima. Accusamus reprehenderit ut et itaque non reiciendis incidunt.\n\nRerum suscipit quibusdam dolore nam omnis. Consequatur ipsa nihil ut enim blanditiis delectus. Nulla quis hic occaecati mollitia qui placeat. Quo rerum sed perferendis a accusantium consequatur commodi ut. Sit quae et cumque vel eius tempora nostrum.\n\nUllam dolorem et itaque sint est. Ea molestias quia provident dolorem vitae error et et. Ea expedita officiis iste non. Qui vitae odit saepe illum. Dolores enim ratione deserunt tempore expedita amet non neque.\n\nEligendi asperiores voluptatibus omnis repudiandae expedita distinctio qui aliquid. Autem aut doloremque distinctio ab. Nostrum sapiente repudiandae aspernatur ea et quae voluptas. Officiis perspiciatis nisi laudantium asperiores error eligendi ab. Eius quia amet magni omnis exercitationem voluptatum et.\n\nVoluptatem ullam labore quas dicta est ex voluptas. Pariatur ea modi voluptas consequatur dolores perspiciatis similique. Numquam in distinctio perspiciatis ut qui earum. Quidem omnis mollitia facere aut beatae. Ea est iure et voluptatem.", - "created_at": "2016-03-22T15:20:35.950Z", - "updated_at": "2016-03-29T06:28:12.696Z", - "started_at": null, - "runner_id": null, - "coverage": null, - "commit_id": 40, - "commands": "$ build command", - "job_id": null, - "name": "test build 1", - "deploy": false, - "options": null, - "allow_failure": false, - "stage": "test", - "trigger_request_id": null, - "stage_idx": 1, - "tag": null, - "ref": "master", - "user_id": null, - "target_url": null, - "description": null, - "artifacts_file": { - "url": null - }, - "artifacts_metadata": { - "url": null - }, - "erased_by_id": null, - "erased_at": null - }, - { - "id": 80, - "project_id": 5, - "status": "success", - "finished_at": null, - "trace": "Impedit et optio nemo ipsa. Non ad non quis ut sequi laudantium omnis velit. Corporis a enim illo eos. Quia totam tempore inventore ad est.\n\nNihil recusandae cupiditate eaque voluptatem molestias sint. Consequatur id voluptatem cupiditate harum. Consequuntur iusto quaerat reiciendis aut autem libero est. Quisquam dolores veritatis rerum et sint maxime ullam libero. Id quas porro ut perspiciatis rem amet vitae.\n\nNemo inventore minus blanditiis magnam. Modi consequuntur nostrum aut voluptatem ex. Sunt rerum rem optio mollitia qui aliquam officiis officia. Aliquid eos et id aut minus beatae reiciendis.\n\nDolores non in temporibus dicta. Fugiat voluptatem est aspernatur expedita voluptatum nam qui. Quia et eligendi sit quae sint tempore exercitationem eos. Est sapiente corrupti quidem at. Qui magni odio repudiandae saepe tenetur optio dolore.\n\nEos placeat soluta at dolorem adipisci provident. Quo commodi id reprehenderit possimus quo tenetur. Ipsum et quae eligendi laborum. Et qui nesciunt at quasi quidem voluptatem cum rerum. Excepturi non facilis aut sunt vero sed.\n\nQui explicabo ratione ut eligendi recusandae. Quis quasi quas molestiae consequatur voluptatem et voluptatem. Ex repellat saepe occaecati aperiam ea eveniet dignissimos facilis.", - "created_at": "2016-03-22T15:20:35.966Z", - "updated_at": "2016-03-22T15:20:35.966Z", - "started_at": null, - "runner_id": null, - "coverage": null, - "commit_id": 40, - "commands": "$ build command", - "job_id": null, - "name": "test build 2", - "deploy": false, - "options": null, - "allow_failure": false, - "stage": "test", - "trigger_request_id": null, - "stage_idx": 1, - "tag": null, - "ref": "master", - "user_id": null, - "target_url": null, - "description": null, - "artifacts_file": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/80/p5_build_artifacts.zip" - }, - "artifacts_metadata": { - "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/80/p5_build_artifacts_metadata.gz" - }, - "erased_by_id": null, - "erased_at": null + "stages": [ + { + "id": 24, + "project_id": 5, + "pipeline_id": 40, + "name": "test", + "status": 1, + "created_at": "2016-03-22T15:44:44.772Z", + "updated_at": "2016-03-29T06:44:44.634Z", + "statuses": [ + { + "id": 79, + "project_id": 5, + "status": "failed", + "finished_at": "2016-03-29T06:28:12.695Z", + "trace": "Sed culpa est et facere saepe vel id ab. Quas temporibus aut similique dolorem consequatur corporis aut praesentium. Cum officia molestiae sit earum excepturi.\n\nSint possimus aut ratione quia. Quis nesciunt ratione itaque illo. Tenetur est dolor assumenda possimus voluptatem quia minima. Accusamus reprehenderit ut et itaque non reiciendis incidunt.\n\nRerum suscipit quibusdam dolore nam omnis. Consequatur ipsa nihil ut enim blanditiis delectus. Nulla quis hic occaecati mollitia qui placeat. Quo rerum sed perferendis a accusantium consequatur commodi ut. Sit quae et cumque vel eius tempora nostrum.\n\nUllam dolorem et itaque sint est. Ea molestias quia provident dolorem vitae error et et. Ea expedita officiis iste non. Qui vitae odit saepe illum. Dolores enim ratione deserunt tempore expedita amet non neque.\n\nEligendi asperiores voluptatibus omnis repudiandae expedita distinctio qui aliquid. Autem aut doloremque distinctio ab. Nostrum sapiente repudiandae aspernatur ea et quae voluptas. Officiis perspiciatis nisi laudantium asperiores error eligendi ab. Eius quia amet magni omnis exercitationem voluptatum et.\n\nVoluptatem ullam labore quas dicta est ex voluptas. Pariatur ea modi voluptas consequatur dolores perspiciatis similique. Numquam in distinctio perspiciatis ut qui earum. Quidem omnis mollitia facere aut beatae. Ea est iure et voluptatem.", + "created_at": "2016-03-22T15:20:35.950Z", + "updated_at": "2016-03-29T06:28:12.696Z", + "started_at": null, + "runner_id": null, + "coverage": null, + "commit_id": 40, + "commands": "$ build command", + "job_id": null, + "name": "test build 1", + "deploy": false, + "options": null, + "allow_failure": false, + "stage": "test", + "trigger_request_id": null, + "stage_idx": 1, + "tag": null, + "ref": "master", + "user_id": null, + "target_url": null, + "description": null, + "artifacts_file": { + "url": null + }, + "artifacts_metadata": { + "url": null + }, + "erased_by_id": null, + "erased_at": null + }, + { + "id": 80, + "project_id": 5, + "status": "success", + "finished_at": null, + "trace": "Impedit et optio nemo ipsa. Non ad non quis ut sequi laudantium omnis velit. Corporis a enim illo eos. Quia totam tempore inventore ad est.\n\nNihil recusandae cupiditate eaque voluptatem molestias sint. Consequatur id voluptatem cupiditate harum. Consequuntur iusto quaerat reiciendis aut autem libero est. Quisquam dolores veritatis rerum et sint maxime ullam libero. Id quas porro ut perspiciatis rem amet vitae.\n\nNemo inventore minus blanditiis magnam. Modi consequuntur nostrum aut voluptatem ex. Sunt rerum rem optio mollitia qui aliquam officiis officia. Aliquid eos et id aut minus beatae reiciendis.\n\nDolores non in temporibus dicta. Fugiat voluptatem est aspernatur expedita voluptatum nam qui. Quia et eligendi sit quae sint tempore exercitationem eos. Est sapiente corrupti quidem at. Qui magni odio repudiandae saepe tenetur optio dolore.\n\nEos placeat soluta at dolorem adipisci provident. Quo commodi id reprehenderit possimus quo tenetur. Ipsum et quae eligendi laborum. Et qui nesciunt at quasi quidem voluptatem cum rerum. Excepturi non facilis aut sunt vero sed.\n\nQui explicabo ratione ut eligendi recusandae. Quis quasi quas molestiae consequatur voluptatem et voluptatem. Ex repellat saepe occaecati aperiam ea eveniet dignissimos facilis.", + "created_at": "2016-03-22T15:20:35.966Z", + "updated_at": "2016-03-22T15:20:35.966Z", + "started_at": null, + "runner_id": null, + "coverage": null, + "commit_id": 40, + "commands": "$ build command", + "job_id": null, + "name": "test build 2", + "deploy": false, + "options": null, + "allow_failure": false, + "stage": "test", + "trigger_request_id": null, + "stage_idx": 1, + "tag": null, + "ref": "master", + "user_id": null, + "target_url": null, + "description": null, + "artifacts_file": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/80/p5_build_artifacts.zip" + }, + "artifacts_metadata": { + "url": "/Users/Test/Test/gitlab-development-kit/gitlab/shared/artifacts/2016_03/5/80/p5_build_artifacts_metadata.gz" + }, + "erased_by_id": null, + "erased_at": null + } + ] } ] } diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb index 0ab3afd0074..9dfd879a1bc 100644 --- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb @@ -179,6 +179,32 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do end end end + + context 'when restoring hierarchy of pipeline, stages and jobs' do + it 'restores pipelines' do + expect(Ci::Pipeline.all.count).to be 5 + end + + it 'restores pipeline stages' do + expect(Ci::Stage.all.count).to be 6 + end + + it 'correctly restores association between stage and a pipeline' do + expect(Ci::Stage.all).to all(have_attributes(pipeline_id: a_value > 0)) + end + + it 'restores statuses' do + expect(CommitStatus.all.count).to be 10 + end + + it 'correctly restores association between a stage and a job' do + expect(CommitStatus.all).to all(have_attributes(stage_id: a_value > 0)) + end + + it 'correctly restores association between a pipeline and a job' do + expect(CommitStatus.all).to all(have_attributes(pipeline_id: a_value > 0)) + end + end end end diff --git a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb index 6faf3d82981..08e5bbbd400 100644 --- a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb +++ b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb @@ -109,12 +109,20 @@ describe Gitlab::ImportExport::ProjectTreeSaver do expect(saved_project_json['merge_requests'].first['notes'].first['author']).not_to be_empty end + it 'has pipeline stages' do + expect(saved_project_json.dig('pipelines', 0, 'stages')).not_to be_empty + end + it 'has pipeline statuses' do - expect(saved_project_json['pipelines'].first['statuses']).not_to be_empty + expect(saved_project_json.dig('pipelines', 0, 'stages', 0, 'statuses')).not_to be_empty end it 'has pipeline builds' do - expect(saved_project_json['pipelines'].first['statuses'].count { |hash| hash['type'] == 'Ci::Build' }).to eq(1) + builds_count = saved_project_json + .dig('pipelines', 0, 'stages', 0, 'statuses') + .count { |hash| hash['type'] == 'Ci::Build' } + + expect(builds_count).to eq(1) end it 'has no when YML attributes but only the DB column' do diff --git a/spec/lib/gitlab/import_export/safe_model_attributes.yml b/spec/lib/gitlab/import_export/safe_model_attributes.yml index ec8fa99e0da..ec577903eb5 100644 --- a/spec/lib/gitlab/import_export/safe_model_attributes.yml +++ b/spec/lib/gitlab/import_export/safe_model_attributes.yml @@ -459,6 +459,7 @@ Project: - delete_error - merge_requests_ff_only_enabled - merge_requests_rebase_enabled +- jobs_cache_index Author: - name ProjectFeature: diff --git a/spec/lib/google_api/cloud_platform/client_spec.rb b/spec/lib/google_api/cloud_platform/client_spec.rb index ecb4034ec8b..f65e41dfea3 100644 --- a/spec/lib/google_api/cloud_platform/client_spec.rb +++ b/spec/lib/google_api/cloud_platform/client_spec.rb @@ -50,6 +50,30 @@ describe GoogleApi::CloudPlatform::Client do end end + describe '#projects_list' do + subject { client.projects_list } + let(:projects) { double } + + before do + allow_any_instance_of(Google::Apis::CloudresourcemanagerV1::CloudResourceManagerService) + .to receive(:fetch_all).and_return(projects) + end + + it { is_expected.to eq(projects) } + end + + describe '#projects_get_billing_info' do + subject { client.projects_get_billing_info('project') } + let(:billing_info) { double } + + before do + allow_any_instance_of(Google::Apis::CloudbillingV1::CloudbillingService) + .to receive(:get_project_billing_info).and_return(billing_info) + end + + it { is_expected.to eq(billing_info) } + end + describe '#projects_zones_clusters_get' do subject { client.projects_zones_clusters_get(spy, spy, spy) } let(:gke_cluster) { double } diff --git a/spec/migrations/migrate_gcp_clusters_to_new_clusters_architectures_spec.rb b/spec/migrations/migrate_gcp_clusters_to_new_clusters_architectures_spec.rb index 57ee2adaaff..c81ec887ded 100644 --- a/spec/migrations/migrate_gcp_clusters_to_new_clusters_architectures_spec.rb +++ b/spec/migrations/migrate_gcp_clusters_to_new_clusters_architectures_spec.rb @@ -33,7 +33,7 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do let(:encrypted_gcp_token) { "'encrypted_gcp_token'" } let(:encrypted_gcp_token_iv) { "'encrypted_gcp_token_iv'" } - let(:cluster) { Clusters::Cluster.last } + let(:cluster) { described_class::Cluster.last } let(:cluster_id) { cluster.id } before do @@ -46,12 +46,12 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do it 'correctly migrate to new clusters architectures' do migrate! - expect(Clusters::Cluster.count).to eq(1) - expect(Clusters::Project.count).to eq(1) - expect(Clusters::Providers::Gcp.count).to eq(1) - expect(Clusters::Platforms::Kubernetes.count).to eq(1) + expect(described_class::Cluster.count).to eq(1) + expect(described_class::ClustersProject.count).to eq(1) + expect(described_class::ProvidersGcp.count).to eq(1) + expect(described_class::PlatformsKubernetes.count).to eq(1) - expect(cluster.user).to eq(user) + expect(cluster.user_id).to eq(user.id) expect(cluster.enabled).to be_truthy expect(cluster.name).to eq(gcp_cluster_name.delete!("'")) expect(cluster.provider_type).to eq('gcp') @@ -59,7 +59,7 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do expect(cluster.project_ids).to include(project.id) - expect(cluster.provider_gcp.cluster).to eq(cluster) + expect(cluster.provider_gcp.cluster_id).to eq(cluster.id) expect(cluster.provider_gcp.status).to eq(status) expect(cluster.provider_gcp.status_reason).to eq(tr(status_reason)) expect(cluster.provider_gcp.gcp_project_id).to eq(tr(gcp_project_id)) @@ -71,7 +71,7 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do expect(cluster.provider_gcp.encrypted_access_token).to eq(tr(encrypted_gcp_token)) expect(cluster.provider_gcp.encrypted_access_token_iv).to eq(tr(encrypted_gcp_token_iv)) - expect(cluster.platform_kubernetes.cluster).to eq(cluster) + expect(cluster.platform_kubernetes.cluster_id).to eq(cluster.id) expect(cluster.platform_kubernetes.api_url).to be_nil expect(cluster.platform_kubernetes.ca_cert).to be_nil expect(cluster.platform_kubernetes.namespace).to eq(tr(project_namespace)) @@ -109,7 +109,7 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do let(:encrypted_gcp_token) { "'encrypted_gcp_token'" } let(:encrypted_gcp_token_iv) { "'encrypted_gcp_token_iv'" } - let(:cluster) { Clusters::Cluster.last } + let(:cluster) { described_class::Cluster.last } let(:cluster_id) { cluster.id } before do @@ -122,12 +122,12 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do it 'correctly migrate to new clusters architectures' do migrate! - expect(Clusters::Cluster.count).to eq(1) - expect(Clusters::Project.count).to eq(1) - expect(Clusters::Providers::Gcp.count).to eq(1) - expect(Clusters::Platforms::Kubernetes.count).to eq(1) + expect(described_class::Cluster.count).to eq(1) + expect(described_class::ClustersProject.count).to eq(1) + expect(described_class::ProvidersGcp.count).to eq(1) + expect(described_class::PlatformsKubernetes.count).to eq(1) - expect(cluster.user).to eq(user) + expect(cluster.user_id).to eq(user.id) expect(cluster.enabled).to be_truthy expect(cluster.name).to eq(tr(gcp_cluster_name)) expect(cluster.provider_type).to eq('gcp') @@ -135,7 +135,7 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do expect(cluster.project_ids).to include(project.id) - expect(cluster.provider_gcp.cluster).to eq(cluster) + expect(cluster.provider_gcp.cluster_id).to eq(cluster.id) expect(cluster.provider_gcp.status).to eq(status) expect(cluster.provider_gcp.status_reason).to eq(tr(status_reason)) expect(cluster.provider_gcp.gcp_project_id).to eq(tr(gcp_project_id)) @@ -147,7 +147,7 @@ describe MigrateGcpClustersToNewClustersArchitectures, :migration do expect(cluster.provider_gcp.encrypted_access_token).to eq(tr(encrypted_gcp_token)) expect(cluster.provider_gcp.encrypted_access_token_iv).to eq(tr(encrypted_gcp_token_iv)) - expect(cluster.platform_kubernetes.cluster).to eq(cluster) + expect(cluster.platform_kubernetes.cluster_id).to eq(cluster.id) expect(cluster.platform_kubernetes.api_url).to eq('https://' + tr(endpoint)) expect(cluster.platform_kubernetes.ca_cert).to eq(tr(ca_cert)) expect(cluster.platform_kubernetes.namespace).to eq(tr(project_namespace)) diff --git a/spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb b/spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb new file mode 100644 index 00000000000..df0015b6dd3 --- /dev/null +++ b/spec/migrations/migrate_kubernetes_service_to_new_clusters_architectures_spec.rb @@ -0,0 +1,312 @@ +require 'spec_helper' +require Rails.root.join('db', 'post_migrate', '20171124104327_migrate_kubernetes_service_to_new_clusters_architectures.rb') + +describe MigrateKubernetesServiceToNewClustersArchitectures, :migration do + context 'when unique KubernetesService exists' do + shared_examples 'KubernetesService migration' do + let(:sample_num) { 2 } + + let(:projects) do + (1..sample_num).each_with_object([]) do |n, array| + array << MigrateKubernetesServiceToNewClustersArchitectures::Project.create! + end + end + + let!(:kubernetes_services) do + projects.map do |project| + MigrateKubernetesServiceToNewClustersArchitectures::Service.create!( + project: project, + active: active, + category: 'deployment', + type: 'KubernetesService', + properties: "{\"namespace\":\"prod\",\"api_url\":\"https://kubernetes#{project.id}.com\",\"ca_pem\":\"ca_pem#{project.id}\",\"token\":\"token#{project.id}\"}") + end + end + + it 'migrates the KubernetesService to Platform::Kubernetes' do + expect { migrate! }.to change { MigrateKubernetesServiceToNewClustersArchitectures::Cluster.count }.by(sample_num) + + projects.each do |project| + project.clusters.last.tap do |cluster| + expect(cluster.enabled).to eq(active) + expect(cluster.platform_kubernetes.api_url).to eq(project.kubernetes_service.api_url) + expect(cluster.platform_kubernetes.ca_cert).to eq(project.kubernetes_service.ca_pem) + expect(cluster.platform_kubernetes.token).to eq(project.kubernetes_service.token) + expect(project.kubernetes_service).not_to be_active + end + end + end + end + + context 'when KubernetesService is active' do + let(:active) { true } + + it_behaves_like 'KubernetesService migration' + end + end + + context 'when unique KubernetesService spawned from Service Template' do + let(:sample_num) { 2 } + + let(:projects) do + (1..sample_num).each_with_object([]) do |n, array| + array << MigrateKubernetesServiceToNewClustersArchitectures::Project.create! + end + end + + let!(:kubernetes_service_template) do + MigrateKubernetesServiceToNewClustersArchitectures::Service.create!( + template: true, + category: 'deployment', + type: 'KubernetesService', + properties: "{\"namespace\":\"prod\",\"api_url\":\"https://sample.kubernetes.com\",\"ca_pem\":\"ca_pem-sample\",\"token\":\"token-sample\"}") + end + + let!(:kubernetes_services) do + projects.map do |project| + MigrateKubernetesServiceToNewClustersArchitectures::Service.create!( + project: project, + category: 'deployment', + type: 'KubernetesService', + properties: "{\"namespace\":\"prod\",\"api_url\":\"#{kubernetes_service_template.api_url}\",\"ca_pem\":\"#{kubernetes_service_template.ca_pem}\",\"token\":\"#{kubernetes_service_template.token}\"}") + end + end + + it 'migrates the KubernetesService to Platform::Kubernetes without template' do + expect { migrate! }.to change { MigrateKubernetesServiceToNewClustersArchitectures::Cluster.count }.by(sample_num) + + projects.each do |project| + project.clusters.last.tap do |cluster| + expect(cluster.platform_kubernetes.api_url).to eq(project.kubernetes_service.api_url) + expect(cluster.platform_kubernetes.ca_cert).to eq(project.kubernetes_service.ca_pem) + expect(cluster.platform_kubernetes.token).to eq(project.kubernetes_service.token) + expect(project.kubernetes_service).not_to be_active + end + end + end + end + + context 'when managed KubernetesService exists' do + let(:project) { MigrateKubernetesServiceToNewClustersArchitectures::Project.create! } + + let(:cluster) do + MigrateKubernetesServiceToNewClustersArchitectures::Cluster.create!( + projects: [project], + name: 'sample-cluster', + platform_type: :kubernetes, + provider_type: :user, + platform_kubernetes_attributes: { + api_url: 'https://sample.kubernetes.com', + ca_cert: 'ca_pem-sample', + token: 'token-sample' + } ) + end + + let!(:kubernetes_service) do + MigrateKubernetesServiceToNewClustersArchitectures::Service.create!( + project: project, + active: cluster.enabled, + category: 'deployment', + type: 'KubernetesService', + properties: "{\"api_url\":\"#{cluster.platform_kubernetes.api_url}\"}") + end + + it 'does not migrate the KubernetesService and disables the kubernetes_service' do # Because the corresponding Platform::Kubernetes already exists + expect { migrate! }.not_to change { MigrateKubernetesServiceToNewClustersArchitectures::Cluster.count } + + kubernetes_service.reload + expect(kubernetes_service).not_to be_active + end + end + + context 'when production cluster has already been existed' do # i.e. There are no environment_scope conflicts + let(:project) { MigrateKubernetesServiceToNewClustersArchitectures::Project.create! } + + let(:cluster) do + MigrateKubernetesServiceToNewClustersArchitectures::Cluster.create!( + projects: [project], + name: 'sample-cluster', + platform_type: :kubernetes, + provider_type: :user, + environment_scope: 'production/*', + platform_kubernetes_attributes: { + api_url: 'https://sample.kubernetes.com', + ca_cert: 'ca_pem-sample', + token: 'token-sample' + } ) + end + + let!(:kubernetes_service) do + MigrateKubernetesServiceToNewClustersArchitectures::Service.create!( + project: project, + active: true, + category: 'deployment', + type: 'KubernetesService', + properties: "{\"api_url\":\"https://debug.kube.com\"}") + end + + it 'migrates the KubernetesService to Platform::Kubernetes' do + expect { migrate! }.to change { MigrateKubernetesServiceToNewClustersArchitectures::Cluster.count }.by(1) + + kubernetes_service.reload + project.clusters.last.tap do |cluster| + expect(cluster.environment_scope).to eq('*') + expect(cluster.platform_kubernetes.api_url).to eq(kubernetes_service.api_url) + expect(cluster.platform_kubernetes.ca_cert).to eq(kubernetes_service.ca_pem) + expect(cluster.platform_kubernetes.token).to eq(kubernetes_service.token) + expect(kubernetes_service).not_to be_active + end + end + end + + context 'when default cluster has already been existed' do + let(:project) { MigrateKubernetesServiceToNewClustersArchitectures::Project.create! } + + let!(:cluster) do + MigrateKubernetesServiceToNewClustersArchitectures::Cluster.create!( + projects: [project], + name: 'sample-cluster', + platform_type: :kubernetes, + provider_type: :user, + environment_scope: '*', + platform_kubernetes_attributes: { + api_url: 'https://sample.kubernetes.com', + ca_cert: 'ca_pem-sample', + token: 'token-sample' + } ) + end + + let!(:kubernetes_service) do + MigrateKubernetesServiceToNewClustersArchitectures::Service.create!( + project: project, + active: true, + category: 'deployment', + type: 'KubernetesService', + properties: "{\"api_url\":\"https://debug.kube.com\"}") + end + + it 'migrates the KubernetesService to Platform::Kubernetes with dedicated environment_scope' do # Because environment_scope is duplicated + expect { migrate! }.to change { MigrateKubernetesServiceToNewClustersArchitectures::Cluster.count }.by(1) + + kubernetes_service.reload + project.clusters.last.tap do |cluster| + expect(cluster.environment_scope).to eq('migrated/*') + expect(cluster.platform_kubernetes.api_url).to eq(kubernetes_service.api_url) + expect(cluster.platform_kubernetes.ca_cert).to eq(kubernetes_service.ca_pem) + expect(cluster.platform_kubernetes.token).to eq(kubernetes_service.token) + expect(kubernetes_service).not_to be_active + end + end + end + + context 'when default cluster and migrated cluster has already been existed' do + let(:project) { MigrateKubernetesServiceToNewClustersArchitectures::Project.create! } + + let!(:cluster) do + MigrateKubernetesServiceToNewClustersArchitectures::Cluster.create!( + projects: [project], + name: 'sample-cluster', + platform_type: :kubernetes, + provider_type: :user, + environment_scope: '*', + platform_kubernetes_attributes: { + api_url: 'https://sample.kubernetes.com', + ca_cert: 'ca_pem-sample', + token: 'token-sample' + } ) + end + + let!(:migrated_cluster) do + MigrateKubernetesServiceToNewClustersArchitectures::Cluster.create!( + projects: [project], + name: 'sample-cluster', + platform_type: :kubernetes, + provider_type: :user, + environment_scope: 'migrated/*', + platform_kubernetes_attributes: { + api_url: 'https://sample.kubernetes.com', + ca_cert: 'ca_pem-sample', + token: 'token-sample' + } ) + end + + let!(:kubernetes_service) do + MigrateKubernetesServiceToNewClustersArchitectures::Service.create!( + project: project, + active: true, + category: 'deployment', + type: 'KubernetesService', + properties: "{\"api_url\":\"https://debug.kube.com\"}") + end + + it 'migrates the KubernetesService to Platform::Kubernetes with dedicated environment_scope' do # Because environment_scope is duplicated + expect { migrate! }.to change { MigrateKubernetesServiceToNewClustersArchitectures::Cluster.count }.by(1) + + kubernetes_service.reload + project.clusters.last.tap do |cluster| + expect(cluster.environment_scope).to eq('migrated0/*') + expect(cluster.platform_kubernetes.api_url).to eq(kubernetes_service.api_url) + expect(cluster.platform_kubernetes.ca_cert).to eq(kubernetes_service.ca_pem) + expect(cluster.platform_kubernetes.token).to eq(kubernetes_service.token) + expect(kubernetes_service).not_to be_active + end + end + end + + context 'when KubernetesService has nullified parameters' do + let(:project) { MigrateKubernetesServiceToNewClustersArchitectures::Project.create! } + + before do + MigrateKubernetesServiceToNewClustersArchitectures::Service.create!( + project: project, + active: false, + category: 'deployment', + type: 'KubernetesService', + properties: "{}") + end + + it 'does not migrate the KubernetesService and disables the kubernetes_service' do + expect { migrate! }.not_to change { MigrateKubernetesServiceToNewClustersArchitectures::Cluster.count } + + expect(project.kubernetes_service).not_to be_active + end + end + + # Platforms::Kubernetes validates `token` reagdless of the activeness, + # whereas KubernetesService validates `token` if only it's activated + # However, in this migration file, there are no validations because of the re-defined model class + # therefore, we should safely add this raw to Platform::Kubernetes + context 'when KubernetesService has empty token' do + let(:project) { MigrateKubernetesServiceToNewClustersArchitectures::Project.create! } + + before do + MigrateKubernetesServiceToNewClustersArchitectures::Service.create!( + project: project, + active: false, + category: 'deployment', + type: 'KubernetesService', + properties: "{\"namespace\":\"prod\",\"api_url\":\"http://111.111.111.111\",\"ca_pem\":\"a\",\"token\":\"\"}") + end + + it 'does not migrate the KubernetesService and disables the kubernetes_service' do + expect { migrate! }.to change { MigrateKubernetesServiceToNewClustersArchitectures::Cluster.count }.by(1) + + project.clusters.last.tap do |cluster| + expect(cluster.environment_scope).to eq('*') + expect(cluster.platform_kubernetes.namespace).to eq('prod') + expect(cluster.platform_kubernetes.api_url).to eq('http://111.111.111.111') + expect(cluster.platform_kubernetes.ca_cert).to eq('a') + expect(cluster.platform_kubernetes.token).to be_empty + expect(project.kubernetes_service).not_to be_active + end + end + end + + context 'when KubernetesService does not exist' do + let!(:project) { MigrateKubernetesServiceToNewClustersArchitectures::Project.create! } + + it 'does not migrate the KubernetesService' do + expect { migrate! }.not_to change { MigrateKubernetesServiceToNewClustersArchitectures::Cluster.count } + end + end +end diff --git a/spec/migrations/normalize_ldap_extern_uids_spec.rb b/spec/migrations/normalize_ldap_extern_uids_spec.rb index 262d7742aaf..56a78f52802 100644 --- a/spec/migrations/normalize_ldap_extern_uids_spec.rb +++ b/spec/migrations/normalize_ldap_extern_uids_spec.rb @@ -27,11 +27,11 @@ describe NormalizeLdapExternUids, :migration, :sidekiq do migrate! expect(BackgroundMigrationWorker.jobs[0]['args']).to eq([described_class::MIGRATION, [1, 2]]) - expect(BackgroundMigrationWorker.jobs[0]['at']).to eq(10.seconds.from_now.to_f) + expect(BackgroundMigrationWorker.jobs[0]['at']).to eq(5.minutes.from_now.to_f) expect(BackgroundMigrationWorker.jobs[1]['args']).to eq([described_class::MIGRATION, [3, 4]]) - expect(BackgroundMigrationWorker.jobs[1]['at']).to eq(20.seconds.from_now.to_f) + expect(BackgroundMigrationWorker.jobs[1]['at']).to eq(10.minutes.from_now.to_f) expect(BackgroundMigrationWorker.jobs[2]['args']).to eq([described_class::MIGRATION, [5, 5]]) - expect(BackgroundMigrationWorker.jobs[2]['at']).to eq(30.seconds.from_now.to_f) + expect(BackgroundMigrationWorker.jobs[2]['at']).to eq(15.minutes.from_now.to_f) expect(BackgroundMigrationWorker.jobs.size).to eq 3 end end diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index 871e8b47650..3eaeeebf97d 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -255,6 +255,42 @@ describe Ci::Build do end end + describe '#cache' do + let(:options) { { cache: { key: "key", paths: ["public"], policy: "pull-push" } } } + + subject { build.cache } + + context 'when build has cache' do + before do + allow(build).to receive(:options).and_return(options) + end + + context 'when project has jobs_cache_index' do + before do + allow_any_instance_of(Project).to receive(:jobs_cache_index).and_return(1) + end + + it { is_expected.to be_an(Array).and all(include(key: "key:1")) } + end + + context 'when project does not have jobs_cache_index' do + before do + allow_any_instance_of(Project).to receive(:jobs_cache_index).and_return(nil) + end + + it { is_expected.to eq([options[:cache]]) } + end + end + + context 'when build does not have cache' do + before do + allow(build).to receive(:options).and_return({}) + end + + it { is_expected.to eq([nil]) } + end + end + describe '#depends_on_builds' do let!(:build) { create(:ci_build, pipeline: pipeline, name: 'build', stage_idx: 0, stage: 'build') } let!(:rspec_test) { create(:ci_build, pipeline: pipeline, name: 'rspec', stage_idx: 1, stage: 'test') } diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb index 4f02dc33cd8..817254c7d1e 100644 --- a/spec/models/commit_spec.rb +++ b/spec/models/commit_spec.rb @@ -181,7 +181,6 @@ eos it { is_expected.to respond_to(:parents) } it { is_expected.to respond_to(:date) } it { is_expected.to respond_to(:diffs) } - it { is_expected.to respond_to(:tree) } it { is_expected.to respond_to(:id) } it { is_expected.to respond_to(:to_patch) } end diff --git a/spec/models/pages_domain_spec.rb b/spec/models/pages_domain_spec.rb index 7d835511dfb..9d12f96c642 100644 --- a/spec/models/pages_domain_spec.rb +++ b/spec/models/pages_domain_spec.rb @@ -68,7 +68,7 @@ describe PagesDomain do subject { domain.url } context 'without the certificate' do - let(:domain) { build(:pages_domain) } + let(:domain) { build(:pages_domain, certificate: '') } it { is_expected.to eq('http://my.domain.com') } end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 32f40f8c365..00afa09f1a3 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -3079,9 +3079,51 @@ describe Project do expect(project).to receive(:import_finish) expect(project).to receive(:update_project_counter_caches) expect(project).to receive(:remove_import_jid) + expect(project).to receive(:after_create_default_branch) project.after_import end + + context 'branch protection' do + let(:project) { create(:project, :repository) } + + it 'does not protect when branch protection is disabled' do + stub_application_setting(default_branch_protection: Gitlab::Access::PROTECTION_NONE) + + project.after_import + + expect(project.protected_branches).to be_empty + end + + it "gives developer access to push when branch protection is set to 'developers can push'" do + stub_application_setting(default_branch_protection: Gitlab::Access::PROTECTION_DEV_CAN_PUSH) + + project.after_import + + expect(project.protected_branches).not_to be_empty + expect(project.default_branch).to eq(project.protected_branches.first.name) + expect(project.protected_branches.first.push_access_levels.map(&:access_level)).to eq([Gitlab::Access::DEVELOPER]) + end + + it "gives developer access to merge when branch protection is set to 'developers can merge'" do + stub_application_setting(default_branch_protection: Gitlab::Access::PROTECTION_DEV_CAN_MERGE) + + project.after_import + + expect(project.protected_branches).not_to be_empty + expect(project.default_branch).to eq(project.protected_branches.first.name) + expect(project.protected_branches.first.merge_access_levels.map(&:access_level)).to eq([Gitlab::Access::DEVELOPER]) + end + + it 'protects default branch' do + project.after_import + + expect(project.protected_branches).not_to be_empty + expect(project.default_branch).to eq(project.protected_branches.first.name) + expect(project.protected_branches.first.push_access_levels.map(&:access_level)).to eq([Gitlab::Access::MASTER]) + expect(project.protected_branches.first.merge_access_levels.map(&:access_level)).to eq([Gitlab::Access::MASTER]) + end + end end describe '#update_project_counter_caches' do diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 48a75c9885b..c0db2c1b386 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -582,38 +582,6 @@ describe Repository do end end - describe '#get_committer_and_author' do - it 'returns the committer and author data' do - options = repository.get_committer_and_author(user) - expect(options[:committer][:email]).to eq(user.email) - expect(options[:author][:email]).to eq(user.email) - end - - context 'when the email/name are given' do - it 'returns an object containing the email/name' do - options = repository.get_committer_and_author(user, email: author_email, name: author_name) - expect(options[:author][:email]).to eq(author_email) - expect(options[:author][:name]).to eq(author_name) - end - end - - context 'when the email is given but the name is not' do - it 'returns the committer as the author' do - options = repository.get_committer_and_author(user, email: author_email) - expect(options[:author][:email]).to eq(user.email) - expect(options[:author][:name]).to eq(user.name) - end - end - - context 'when the name is given but the email is not' do - it 'returns nil' do - options = repository.get_committer_and_author(user, name: author_name) - expect(options[:author][:email]).to eq(user.email) - expect(options[:author][:name]).to eq(user.name) - end - end - end - describe "search_files_by_content" do let(:results) { repository.search_files_by_content('feature', 'master') } subject { results } @@ -1112,16 +1080,16 @@ describe Repository do allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([true, '']) end - it 'expires branch cache' do - expect(repository).not_to receive(:expire_exists_cache) - expect(repository).not_to receive(:expire_root_ref_cache) - expect(repository).not_to receive(:expire_emptiness_caches) - expect(repository).to receive(:expire_branches_cache) - - repository.with_branch(user, 'new-feature') do + subject do + Gitlab::Git::OperationService.new(git_user, repository.raw_repository).with_branch('new-feature') do new_rev end end + + it 'returns branch_created as true' do + expect(subject).not_to be_repo_created + expect(subject).to be_branch_created + end end context 'when repository is empty' do diff --git a/spec/requests/api/jobs_spec.rb b/spec/requests/api/jobs_spec.rb index e77745acbb7..805496e4a54 100644 --- a/spec/requests/api/jobs_spec.rb +++ b/spec/requests/api/jobs_spec.rb @@ -11,7 +11,7 @@ describe API::Jobs do ref: project.default_branch) end - let!(:job) { create(:ci_build, pipeline: pipeline) } + let!(:job) { create(:ci_build, :success, pipeline: pipeline) } let(:user) { create(:user) } let(:api_user) { user } @@ -443,7 +443,7 @@ describe API::Jobs do context 'user with :update_build persmission' do it 'cancels running or pending job' do expect(response).to have_gitlab_http_status(201) - expect(project.builds.first.status).to eq('canceled') + expect(project.builds.first.status).to eq('success') end end diff --git a/spec/serializers/group_child_entity_spec.rb b/spec/serializers/group_child_entity_spec.rb index 452754d7a79..505a9eaac5a 100644 --- a/spec/serializers/group_child_entity_spec.rb +++ b/spec/serializers/group_child_entity_spec.rb @@ -22,6 +22,7 @@ describe GroupChildEntity do avatar_url name description + markdown_description visibility type can_edit @@ -60,9 +61,10 @@ describe GroupChildEntity do end describe 'for a group', :nested_groups do + let(:description) { 'Awesomeness' } let(:object) do create(:group, :nested, :with_avatar, - description: 'Awesomeness') + description: description) end before do @@ -96,6 +98,14 @@ describe GroupChildEntity do expect(json[:edit_path]).to eq(edit_group_path(object)) end + context 'emoji in description' do + let(:description) { ':smile:' } + + it 'has the correct markdown_description' do + expect(json[:markdown_description]).to eq('<p dir="auto"><gl-emoji title="smiling face with open mouth and smiling eyes" data-name="smile" data-unicode-version="6.0">😄</gl-emoji></p>') + end + end + it_behaves_like 'group child json' end end diff --git a/spec/services/check_gcp_project_billing_service_spec.rb b/spec/services/check_gcp_project_billing_service_spec.rb new file mode 100644 index 00000000000..f0e39ba6f49 --- /dev/null +++ b/spec/services/check_gcp_project_billing_service_spec.rb @@ -0,0 +1,31 @@ +require 'spec_helper' + +describe CheckGcpProjectBillingService do + let(:service) { described_class.new } + let(:projects) { [double(name: 'first_project'), double(name: 'second_project')] } + + describe '#execute' do + before do + expect_any_instance_of(GoogleApi::CloudPlatform::Client) + .to receive(:projects_list).and_return(projects) + + allow_any_instance_of(GoogleApi::CloudPlatform::Client) + .to receive_message_chain(:projects_get_billing_info, :billingEnabled) + .and_return(project_billing_enabled) + end + + subject { service.execute('bogustoken') } + + context 'google account has a billing enabled gcp project' do + let(:project_billing_enabled) { true } + + it { is_expected.to eq(projects) } + end + + context 'google account does not have a billing enabled gcp project' do + let(:project_billing_enabled) { false } + + it { is_expected.to eq([]) } + end + end +end diff --git a/spec/services/files/multi_service_spec.rb b/spec/services/files/multi_service_spec.rb index 2b79609930c..b9971776b33 100644 --- a/spec/services/files/multi_service_spec.rb +++ b/spec/services/files/multi_service_spec.rb @@ -41,7 +41,7 @@ describe Files::MultiService do describe '#execute' do context 'with a valid action' do - it 'returns a hash with the :success status ' do + it 'returns a hash with the :success status' do results = subject.execute expect(results[:status]).to eq(:success) @@ -51,7 +51,7 @@ describe Files::MultiService do context 'with an invalid action' do let(:action) { 'rename' } - it 'returns a hash with the :error status ' do + it 'returns a hash with the :error status' do results = subject.execute expect(results[:status]).to eq(:error) diff --git a/spec/services/protected_branches/create_service_spec.rb b/spec/services/protected_branches/create_service_spec.rb index 835e83d6dba..53b3e5e365d 100644 --- a/spec/services/protected_branches/create_service_spec.rb +++ b/spec/services/protected_branches/create_service_spec.rb @@ -19,5 +19,21 @@ describe ProtectedBranches::CreateService do expect(project.protected_branches.last.push_access_levels.map(&:access_level)).to eq([Gitlab::Access::MASTER]) expect(project.protected_branches.last.merge_access_levels.map(&:access_level)).to eq([Gitlab::Access::MASTER]) end + + context 'when user does not have permission' do + let(:user) { create(:user) } + + before do + project.add_developer(user) + end + + it 'creates a new protected branch if we skip authorization step' do + expect { service.execute(skip_authorization: true) }.to change(ProtectedBranch, :count).by(1) + end + + it 'raises Gitlab::Access:AccessDeniedError' do + expect { service.execute }.to raise_error(Gitlab::Access::AccessDeniedError) + end + end end end diff --git a/spec/services/reset_project_cache_service_spec.rb b/spec/services/reset_project_cache_service_spec.rb new file mode 100644 index 00000000000..de475d16586 --- /dev/null +++ b/spec/services/reset_project_cache_service_spec.rb @@ -0,0 +1,28 @@ +require 'spec_helper' + +describe ResetProjectCacheService do + let(:project) { create(:project) } + let(:user) { create(:user) } + + subject { described_class.new(project, user).execute } + + context 'when project cache_index is nil' do + before do + project.jobs_cache_index = nil + end + + it 'sets project cache_index to one' do + expect { subject }.to change { project.reload.jobs_cache_index }.from(nil).to(1) + end + end + + context 'when project cache_index is a numeric value' do + before do + project.update_attributes(jobs_cache_index: 1) + end + + it 'increments project cache index' do + expect { subject }.to change { project.reload.jobs_cache_index }.by(1) + end + end +end diff --git a/spec/support/google_api/cloud_platform_helpers.rb b/spec/support/google_api/cloud_platform_helpers.rb index 8a073e58db8..99752ed396e 100644 --- a/spec/support/google_api/cloud_platform_helpers.rb +++ b/spec/support/google_api/cloud_platform_helpers.rb @@ -10,6 +10,12 @@ module GoogleApi request.session[GoogleApi::CloudPlatform::Client.session_key_for_expires_at] = 1.hour.ago.to_i.to_s end + def stub_google_project_billing_status + redis_double = double + allow(Gitlab::Redis::SharedState).to receive(:with).and_yield(redis_double) + allow(redis_double).to receive(:get).with(CheckGcpProjectBillingWorker.redis_shared_state_key_for('token')).and_return('true') + end + def stub_cloud_platform_get_zone_cluster(project_id, zone, cluster_id, **options) WebMock.stub_request(:get, cloud_platform_get_zone_cluster_url(project_id, zone, cluster_id)) .to_return(cloud_platform_response(cloud_platform_cluster_body(options))) diff --git a/spec/workers/background_migration_worker_spec.rb b/spec/workers/background_migration_worker_spec.rb index 1c54cf55fa0..d67e7698635 100644 --- a/spec/workers/background_migration_worker_spec.rb +++ b/spec/workers/background_migration_worker_spec.rb @@ -1,13 +1,32 @@ require 'spec_helper' -describe BackgroundMigrationWorker, :sidekiq do +describe BackgroundMigrationWorker, :sidekiq, :clean_gitlab_redis_shared_state do + let(:worker) { described_class.new } + describe '.perform' do it 'performs a background migration' do expect(Gitlab::BackgroundMigration) .to receive(:perform) .with('Foo', [10, 20]) - described_class.new.perform('Foo', [10, 20]) + worker.perform('Foo', [10, 20]) + end + + it 'reschedules a migration if it was performed recently' do + expect(worker) + .to receive(:always_perform?) + .and_return(false) + + worker.lease_for('Foo').try_obtain + + expect(Gitlab::BackgroundMigration) + .not_to receive(:perform) + + expect(described_class) + .to receive(:perform_in) + .with(a_kind_of(Numeric), 'Foo', [10, 20]) + + worker.perform('Foo', [10, 20]) end end end diff --git a/spec/workers/check_gcp_project_billing_worker_spec.rb b/spec/workers/check_gcp_project_billing_worker_spec.rb new file mode 100644 index 00000000000..f52a903327c --- /dev/null +++ b/spec/workers/check_gcp_project_billing_worker_spec.rb @@ -0,0 +1,61 @@ +require 'spec_helper' + +describe CheckGcpProjectBillingWorker do + describe '.perform' do + let(:token) { 'bogustoken' } + + subject { described_class.new.perform('token_key') } + + context 'when there is a token in redis' do + before do + allow_any_instance_of(described_class).to receive(:get_session_token).and_return(token) + end + + context 'when there is no lease' do + before do + allow_any_instance_of(described_class).to receive(:try_obtain_lease_for).and_return('randomuuid') + end + + it 'calls the service' do + expect(CheckGcpProjectBillingService).to receive_message_chain(:new, :execute).and_return([double]) + + subject + end + + it 'stores billing status in redis' do + redis_double = double + + expect(CheckGcpProjectBillingService).to receive_message_chain(:new, :execute).and_return([double]) + expect(Gitlab::Redis::SharedState).to receive(:with).and_yield(redis_double) + expect(redis_double).to receive(:set).with(described_class.redis_shared_state_key_for(token), anything, anything) + + subject + end + end + + context 'when there is a lease' do + before do + allow_any_instance_of(described_class).to receive(:try_obtain_lease_for).and_return(false) + end + + it 'does not call the service' do + expect(CheckGcpProjectBillingService).not_to receive(:new) + + subject + end + end + end + + context 'when there is no token in redis' do + before do + allow_any_instance_of(described_class).to receive(:get_session_token).and_return(nil) + end + + it 'does not call the service' do + expect(CheckGcpProjectBillingService).not_to receive(:new) + + subject + end + end + end +end diff --git a/spec/workers/repository_import_worker_spec.rb b/spec/workers/repository_import_worker_spec.rb index 85ac14eb347..7274a9f00f9 100644 --- a/spec/workers/repository_import_worker_spec.rb +++ b/spec/workers/repository_import_worker_spec.rb @@ -32,6 +32,7 @@ describe RepositoryImportWorker do expect_any_instance_of(Projects::ImportService).to receive(:execute) .and_return({ status: :ok }) + expect_any_instance_of(Project).to receive(:after_import).and_call_original expect_any_instance_of(Repository).to receive(:expire_emptiness_caches) expect_any_instance_of(Project).to receive(:import_finish) diff --git a/vendor/gitignore/Eagle.gitignore b/vendor/gitignore/Eagle.gitignore index 9ced1260266..9afc324d6ae 100644 --- a/vendor/gitignore/Eagle.gitignore +++ b/vendor/gitignore/Eagle.gitignore @@ -4,6 +4,9 @@ *.s#? *.b#? *.l#? +*.b$? +*.s$? +*.l$? # Eagle project file # It contains a serial number and references to the file structure @@ -31,14 +34,19 @@ eagle.epf *.drl *.gpi *.pls +*.ger +*.gpi +*.xln *.drd *.drd.* +*.s#* +*.b#* + *.info *.eps # file locks introduced since 7.x *.lck - diff --git a/vendor/gitignore/Global/Eclipse.gitignore b/vendor/gitignore/Global/Eclipse.gitignore index ce1c12cdb7a..0eb8a5e8571 100644 --- a/vendor/gitignore/Global/Eclipse.gitignore +++ b/vendor/gitignore/Global/Eclipse.gitignore @@ -23,6 +23,9 @@ local.properties # CDT-specific (C/C++ Development Tooling) .cproject +# CDT- autotools +.autotools + # Java annotation processor (APT) .factorypath diff --git a/vendor/gitignore/Global/JetBrains.gitignore b/vendor/gitignore/Global/JetBrains.gitignore index 345e61ae3f2..a30eacf1d98 100644 --- a/vendor/gitignore/Global/JetBrains.gitignore +++ b/vendor/gitignore/Global/JetBrains.gitignore @@ -21,6 +21,7 @@ # CMake cmake-build-debug/ +cmake-build-release/ # Mongo Explorer plugin: .idea/**/mongoSettings.xml diff --git a/vendor/gitignore/Global/Matlab.gitignore b/vendor/gitignore/Global/Matlab.gitignore index 7996ad5058e..d87a6bdbeeb 100644 --- a/vendor/gitignore/Global/Matlab.gitignore +++ b/vendor/gitignore/Global/Matlab.gitignore @@ -1,8 +1,3 @@ -##--------------------------------------------------- -## Remove autosaves generated by the MATLAB editor -## We have git for backups! -##--------------------------------------------------- - # Windows default autosave extension *.asv @@ -12,12 +7,19 @@ # Compiled MEX binaries (all platforms) *.mex* -# Simulink Code Generation +# Packaged app and toolbox files +*.mlappinstall +*.mltbx + +# Generated helpsearch folders +helpsearch*/ + +# Simulink code generation folders slprj/ sccprj/ -# Session info -octave-workspace - # Simulink autosave extension *.autosave + +# Octave session info +octave-workspace diff --git a/vendor/gitignore/Go.gitignore b/vendor/gitignore/Go.gitignore index ea58090bd21..f1c181ec9c5 100644 --- a/vendor/gitignore/Go.gitignore +++ b/vendor/gitignore/Go.gitignore @@ -1,5 +1,6 @@ # Binaries for programs and plugins *.exe +*.exe~ *.dll *.so *.dylib diff --git a/vendor/gitignore/Node.gitignore b/vendor/gitignore/Node.gitignore index 97e28736892..d1bed128fa8 100644 --- a/vendor/gitignore/Node.gitignore +++ b/vendor/gitignore/Node.gitignore @@ -57,3 +57,5 @@ typings/ # dotenv environment variables file .env +# next.js build output +.next diff --git a/vendor/gitignore/Rails.gitignore b/vendor/gitignore/Rails.gitignore index 42aeb55000a..828ab1d556a 100644 --- a/vendor/gitignore/Rails.gitignore +++ b/vendor/gitignore/Rails.gitignore @@ -42,3 +42,7 @@ bower.json # Ignore Byebug command history file. .byebug_history + +# Ignore node_modules +node_modules/ + diff --git a/vendor/gitignore/Umbraco.gitignore b/vendor/gitignore/Umbraco.gitignore index b6b0743f62a..10fc2b4d825 100644 --- a/vendor/gitignore/Umbraco.gitignore +++ b/vendor/gitignore/Umbraco.gitignore @@ -16,8 +16,11 @@ # Don't ignore Umbraco packages (VisualStudio.gitignore mistakes this for a NuGet packages folder) # Make sure to include details from VisualStudio.gitignore BEFORE this -!**/App_Data/[Pp]ackages/ -!**/[Uu]mbraco/[Dd]eveloper/[Pp]ackages +!**/App_Data/[Pp]ackages/* +!**/[Uu]mbraco/[Dd]eveloper/[Pp]ackages/* # ImageProcessor DiskCache **/App_Data/cache/ + +# Ignore the Models Builder models out of date flag +**/App_Data/Models/ood.flag diff --git a/vendor/gitignore/VisualStudio.gitignore b/vendor/gitignore/VisualStudio.gitignore index 6217e6c48e9..d3d5371b415 100644 --- a/vendor/gitignore/VisualStudio.gitignore +++ b/vendor/gitignore/VisualStudio.gitignore @@ -219,6 +219,10 @@ ClientBin/ *.publishsettings orleans.codegen.cs +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ @@ -313,3 +317,7 @@ OpenCover/ # Azure Stream Analytics local run output ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + diff --git a/vendor/gitignore/WordPress.gitignore b/vendor/gitignore/WordPress.gitignore index 97923503c4c..3b181ec0cf2 100644 --- a/vendor/gitignore/WordPress.gitignore +++ b/vendor/gitignore/WordPress.gitignore @@ -7,6 +7,7 @@ wp-content/blogs.dir/ wp-content/cache/ wp-content/upgrade/ wp-content/uploads/ +wp-content/mu-plugins/ wp-content/wp-cache-config.php wp-content/plugins/hello.php diff --git a/vendor/gitlab-ci-yml/Auto-DevOps.gitlab-ci.yml b/vendor/gitlab-ci-yml/Auto-DevOps.gitlab-ci.yml index 06473fba8e1..75de266369d 100644 --- a/vendor/gitlab-ci-yml/Auto-DevOps.gitlab-ci.yml +++ b/vendor/gitlab-ci-yml/Auto-DevOps.gitlab-ci.yml @@ -112,6 +112,19 @@ sast: - sast . artifacts: paths: [gl-sast-report.json] + +sast:container: + image: docker:latest + variables: + DOCKER_DRIVER: overlay2 + allow_failure: true + services: + - docker:dind + script: + - setup_docker + - sast_container + artifacts: + paths: [gl-sast-container-report.json] review: stage: review @@ -247,6 +260,18 @@ production: export CI_APPLICATION_TAG=$CI_COMMIT_SHA export CI_CONTAINER_NAME=ci_job_build_${CI_JOB_ID} export TILLER_NAMESPACE=$KUBE_NAMESPACE + + function sast_container() { + docker run -d --name db arminc/clair-db:latest + docker run -p 6060:6060 --link db:postgres -d --name clair arminc/clair-local-scan:v2.0.1 + apk add -U wget ca-certificates + docker pull ${CI_APPLICATION_REPOSITORY}:${CI_APPLICATION_TAG} + wget https://github.com/arminc/clair-scanner/releases/download/v6/clair-scanner_linux_386 + mv clair-scanner_linux_386 clair-scanner + chmod +x clair-scanner + touch clair-whitelist.yml + ./clair-scanner -c http://docker:6060 --ip $(hostname -i) -r gl-sast-container-report.json -l clair.log -w clair-whitelist.yml ${CI_APPLICATION_REPOSITORY}:${CI_APPLICATION_TAG} || true + } function codeclimate() { cc_opts="--env CODECLIMATE_CODE="$PWD" \ diff --git a/vendor/gitlab-ci-yml/Mono.gitlab-ci.yml b/vendor/gitlab-ci-yml/Mono.gitlab-ci.yml new file mode 100644 index 00000000000..3585f99760f --- /dev/null +++ b/vendor/gitlab-ci-yml/Mono.gitlab-ci.yml @@ -0,0 +1,42 @@ +# This is a simple gitlab continuous integration template (compatible with the shared runner provided on gitlab.com) +# using the official mono docker image to build a visual studio project. +# +# MyProject.sln +# MyProject\ +# MyProject\ +# MyProject.csproj (console application) +# MyProject.Test\ +# MyProject.Test.csproj (test library using nuget packages "NUnit" and "NUnit.ConsoleRunner") +# +# Please find the full example project here: +# https://gitlab.com/tobiaskoch/gitlab-ci-example-mono + +# see https://hub.docker.com/_/mono/ +image: mono:latest + +stages: + - test + - deploy + +before_script: + - nuget restore -NonInteractive + +release: + stage: deploy + only: + - master + artifacts: + paths: + - build/release/MyProject.exe + script: + # The output path is relative to the position of the csproj-file + - msbuild /p:Configuration="Release" /p:Platform="Any CPU" + /p:OutputPath="./../../build/release/" "MyProject.sln" + +debug: + stage: test + script: + # The output path is relative to the position of the csproj-file + - msbuild /p:Configuration="Debug" /p:Platform="Any CPU" + /p:OutputPath="./../../build/debug/" "MyProject.sln" + - mono packages/NUnit.ConsoleRunner.3.6.0/tools/nunit3-console.exe build/debug/MyProject.Test.dll
\ No newline at end of file diff --git a/vendor/gitlab-ci-yml/Rust.gitlab-ci.yml b/vendor/gitlab-ci-yml/Rust.gitlab-ci.yml index 1463161a04b..cab087c48c7 100644 --- a/vendor/gitlab-ci-yml/Rust.gitlab-ci.yml +++ b/vendor/gitlab-ci-yml/Rust.gitlab-ci.yml @@ -20,4 +20,4 @@ image: "rust:latest" test:cargo: script: - rustc --version && cargo --version # Print version info for debugging - - cargo test --verbose --jobs 1 --release # Don't parallelise to make errors more readable + - cargo test --all --verbose diff --git a/vendor/licenses.csv b/vendor/licenses.csv index b6a5c2f81a0..e3ccf080f74 100644 --- a/vendor/licenses.csv +++ b/vendor/licenses.csv @@ -23,7 +23,7 @@ autoprefixer-rails,6.2.3,MIT axiom-types,0.1.1,MIT babosa,1.0.2,MIT base32,0.3.2,MIT -batch-loader,1.1.1,MIT +batch-loader,1.2.1,MIT bcrypt,3.1.11,MIT bcrypt_pbkdf,1.0.0,MIT bindata,2.4.1,ruby @@ -73,8 +73,9 @@ faraday_middleware,0.11.0.1,MIT faraday_middleware-multi_json,0.0.6,MIT fast_gettext,1.4.0,"MIT,ruby" ffi,1.9.18,New BSD -flipper,0.10.2,MIT -flipper-active_record,0.10.2,MIT +flipper,0.11.0,MIT +flipper-active_record,0.11.0,MIT +flipper-active_support_cache_store,0.11.0,MIT flowdock,0.7.1,MIT fog-aliyun,0.2.0,MIT fog-aws,1.4.0,MIT @@ -92,7 +93,7 @@ gemojione,3.3.0,MIT get_process_mem,0.2.0,MIT gettext_i18n_rails,1.8.0,MIT gettext_i18n_rails_js,1.2.0,MIT -gitaly-proto,0.59.0,MIT +gitaly-proto,0.64.0,MIT github-linguist,4.7.6,MIT github-markup,1.6.1,MIT gitlab-flowdock-git-hook,1.0.1,MIT @@ -164,7 +165,7 @@ multi_xml,0.6.0,MIT multipart-post,2.0.0,MIT mustermann,1.0.0,MIT mustermann-grape,1.0.0,MIT -mysql2,0.4.5,MIT +mysql2,0.4.10,MIT net-ldap,0.16.0,MIT net-ssh,4.1.0,MIT netrc,0.11.0,MIT @@ -210,7 +211,7 @@ po_to_json,1.0.1,MIT posix-spawn,0.3.13,MIT premailer,1.10.4,New BSD premailer-rails,1.9.7,MIT -prometheus-client-mmap,0.7.0.beta43,Apache 2.0 +prometheus-client-mmap,0.7.0.beta44,Apache 2.0 public_suffix,3.0.0,MIT pyu-ruby-sasl,0.0.3.3,MIT rack,1.6.8,MIT @@ -237,11 +238,11 @@ re2,1.1.1,New BSD recaptcha,3.0.0,MIT recursive-open-struct,1.0.0,MIT redcarpet,3.4.0,MIT -redis,3.3.3,MIT +redis,3.3.5,MIT redis-actionpack,5.0.2,MIT redis-activesupport,5.0.4,MIT redis-namespace,1.5.2,MIT -redis-rack,2.0.3,MIT +redis-rack,2.0.4,MIT redis-rails,5.0.2,MIT redis-store,1.4.1,MIT representable,3.0.4,MIT @@ -273,7 +274,7 @@ select2-rails,3.5.9.3,MIT sentry-raven,2.5.3,Apache 2.0 settingslogic,2.0.9,MIT sexp_processor,4.9.0,MIT -sidekiq,5.0.4,LGPL +sidekiq,5.0.5,LGPL sidekiq-cron,0.6.0,MIT sidekiq-limit_fetch,3.4.0,MIT signet,0.7.3,Apache 2.0 diff --git a/vendor/project_templates/express.tar.gz b/vendor/project_templates/express.tar.gz Binary files differindex 7a811e1986b..dcf5e4a0416 100644 --- a/vendor/project_templates/express.tar.gz +++ b/vendor/project_templates/express.tar.gz diff --git a/vendor/project_templates/rails.tar.gz b/vendor/project_templates/rails.tar.gz Binary files differindex 7db63ecc65f..d4856090ed9 100644 --- a/vendor/project_templates/rails.tar.gz +++ b/vendor/project_templates/rails.tar.gz diff --git a/vendor/project_templates/spring.tar.gz b/vendor/project_templates/spring.tar.gz Binary files differindex 96f51ee804c..6ee7e76f676 100644 --- a/vendor/project_templates/spring.tar.gz +++ b/vendor/project_templates/spring.tar.gz diff --git a/yarn.lock b/yarn.lock index ba7d9eb70b8..3c792d8d7ee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -54,9 +54,9 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" -"@gitlab-org/gitlab-svgs@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.4.0.tgz#83c0a76485c1378babf2e83456b4d2442efa98e8" +"@gitlab-org/gitlab-svgs@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@gitlab-org/gitlab-svgs/-/gitlab-svgs-1.5.0.tgz#6635df6aad6c71fb293ff113efd4311a744c0e2c" "@types/jquery@^2.0.40": version "2.0.48" |