├── .dockerignore ├── .editorconfig ├── .env.dist ├── .github └── workflows │ ├── build.yml │ ├── legacy.yml │ └── nightly.yml ├── .gitignore ├── .php-cs-fixer.php ├── .prettierrc ├── LICENSE ├── Makefile ├── README.md ├── assets ├── themes │ └── default │ │ ├── assets │ │ ├── js │ │ │ └── main.js │ │ └── scss │ │ │ ├── blame.scss │ │ │ ├── bootstrap.scss │ │ │ ├── breadcrumb.scss │ │ │ ├── buttons.scss │ │ │ ├── card.scss │ │ │ ├── commit.scss │ │ │ ├── diff.scss │ │ │ ├── main.scss │ │ │ ├── navbar.scss │ │ │ ├── repository.scss │ │ │ └── tree.scss │ │ └── templates │ │ ├── Blob │ │ ├── blame.html.twig │ │ ├── breadcrumb.html.twig │ │ ├── history.html.twig │ │ ├── show.html.twig │ │ └── viewer │ │ │ ├── ace.html.twig │ │ │ ├── codemirror.html.twig │ │ │ └── simple.html.twig │ │ ├── Commit │ │ ├── feed.atom.twig │ │ ├── feed.rss.twig │ │ ├── list-items.html.twig │ │ ├── list.html.twig │ │ └── show.html.twig │ │ ├── Repository │ │ ├── branches.html.twig │ │ ├── list.html.twig │ │ ├── show.html.twig │ │ └── tags.html.twig │ │ ├── Search │ │ ├── form.html.twig │ │ └── list.html.twig │ │ ├── base.html.twig │ │ ├── page-header.html.twig │ │ ├── reflist.html.twig │ │ └── search.html.twig ├── translations │ ├── .gitignore │ ├── messages.af.yaml │ ├── messages.ar.yaml │ ├── messages.bn.yaml │ ├── messages.ca.yaml │ ├── messages.cs.yaml │ ├── messages.da.yaml │ ├── messages.de.yaml │ ├── messages.el.yaml │ ├── messages.en.yaml │ ├── messages.es.yaml │ ├── messages.fi.yaml │ ├── messages.fr.yaml │ ├── messages.he.yaml │ ├── messages.hu.yaml │ ├── messages.it.yaml │ ├── messages.ja.yaml │ ├── messages.ko.yaml │ ├── messages.nl.yaml │ ├── messages.no.yaml │ ├── messages.pl.yaml │ ├── messages.pt.yaml │ ├── messages.ro.yaml │ ├── messages.ru.yaml │ ├── messages.sr.yaml │ ├── messages.sv.yaml │ ├── messages.tr.yaml │ ├── messages.uk.yaml │ ├── messages.vi.yaml │ └── messages.zh.yaml └── viewers │ ├── ace │ ├── main.js │ └── main.scss │ └── codemirror │ ├── main.js │ └── main.scss ├── bin ├── console └── linguist ├── composer.json ├── composer.lock ├── config ├── config.yml ├── dev │ └── routes.yml ├── framework.yml ├── routes.yml └── services.yml ├── crowdin.yml ├── cypress.json ├── docker-compose.override.yml.dist ├── docker-compose.yml ├── docker ├── nginx │ ├── Dockerfile │ └── nginx.conf └── php-fpm │ ├── Dockerfile │ ├── php-fpm.d │ ├── docker.conf │ └── www.conf │ └── php.ini ├── package-lock.json ├── package.json ├── phpstan.neon ├── phpunit.xml.dist ├── postcss.config.js ├── public └── index.php ├── src ├── App │ ├── Controller │ │ ├── Blob.php │ │ ├── Commit.php │ │ ├── CommitSearch.php │ │ └── Repository.php │ ├── Form │ │ └── CriteriaType.php │ └── Twig │ │ ├── AvatarExtension.php │ │ ├── DateTimeExtension.php │ │ ├── MarkdownExtension.php │ │ ├── RepositoryExtension.php │ │ └── StringExtension.php ├── Exception │ ├── BlobNotFoundException.php │ ├── InvalidRepositoryException.php │ └── RepositoryNotFoundException.php ├── Kernel.php ├── Repository.php ├── Repository │ ├── Commitish.php │ └── Index.php └── SCM │ ├── AnnotatedLine.php │ ├── Blame.php │ ├── Blob.php │ ├── Branch.php │ ├── Commit.php │ ├── Commit │ ├── Criteria.php │ ├── Person.php │ └── Signature.php │ ├── Diff │ ├── File.php │ ├── Hunk.php │ ├── Line.php │ └── Parse.php │ ├── Exception │ ├── CommandException.php │ └── InvalidCommitException.php │ ├── File.php │ ├── Item.php │ ├── Language.php │ ├── Repository.php │ ├── Symlink.php │ ├── System.php │ ├── System │ ├── Git │ │ └── CommandLine.php │ └── Mercurial │ │ └── CommandLine.php │ ├── Tag.php │ └── Tree.php ├── tests ├── cypress │ └── integration │ │ ├── blame.spec.js │ │ ├── branches.spec.js │ │ ├── commits.spec.js │ │ ├── history.spec.js │ │ ├── repository.spec.js │ │ ├── repository_list.spec.js │ │ ├── search.spec.js │ │ ├── tags.spec.js │ │ └── tree.spec.js ├── fixtures │ ├── git-bare-repo │ │ ├── HEAD │ │ ├── config │ │ ├── description │ │ ├── hooks │ │ │ ├── applypatch-msg.sample │ │ │ ├── commit-msg.sample │ │ │ ├── post-update.sample │ │ │ ├── pre-applypatch.sample │ │ │ ├── pre-commit.sample │ │ │ ├── pre-push.sample │ │ │ ├── pre-rebase.sample │ │ │ ├── pre-receive.sample │ │ │ ├── prepare-commit-msg.sample │ │ │ └── update.sample │ │ ├── info │ │ │ └── exclude │ │ ├── objects │ │ │ ├── 17 │ │ │ │ └── c75a4246c8bbab8b56fe4d562cd85ea670a21f │ │ │ ├── 29 │ │ │ │ └── 0863292f509e947f62efed0b9cb6eac9b9ecb9 │ │ │ ├── 35 │ │ │ │ └── 7b1952da98491dd01c31bfe7882bc6ae21eaf7 │ │ │ ├── 41 │ │ │ │ └── ab8cf8762f94ab56254925710c2b967a353fee │ │ │ ├── 55 │ │ │ │ └── 70c142146e430b7356a84175f281ab2a364d48 │ │ │ ├── 58 │ │ │ │ └── c37915623ec76e854a54dcfc12b19a060f6bda │ │ │ ├── 59 │ │ │ │ └── 5019ca2e1bfab6711424c8567af364ec3cc319 │ │ │ ├── 75 │ │ │ │ └── 6b07d2549cd6eb8f35fbe333c80a28d97096e3 │ │ │ ├── 82 │ │ │ │ └── 4b0a91e944a6217e473c2eec510cf694a2c4b7 │ │ │ ├── 85 │ │ │ │ ├── 9f67f18fc4522a4da5b784bce6cb9ada034a16 │ │ │ │ └── e656875f18b1985dd71dccaffe3eeffd6abf6f │ │ │ ├── 0e │ │ │ │ └── 3ddf0c6d39e7a300bef61b99a914a86ce5e267 │ │ │ ├── 2d │ │ │ │ └── b0c88706accdb2d0ceb938a68be150759f17c0 │ │ │ ├── 6a │ │ │ │ └── cefd912439ce7f9b03ae3dc2ce0eaf30104206 │ │ │ ├── 6d │ │ │ │ └── 9590305133e750ac8ebfcf9d652ca96f446819 │ │ │ ├── 9c │ │ │ │ └── 69996c1e01618709dacd99bcd129a3bcde290c │ │ │ ├── 9d │ │ │ │ └── 78a8cbc59caa98aebaf4ca9d6ee63cca241c4d │ │ │ ├── a0 │ │ │ │ └── 03d30bc7a355f55bf28479e62134186bae1aed │ │ │ ├── b0 │ │ │ │ └── 64e711b341b3d160288cd121caf56811ca8991 │ │ │ ├── c1 │ │ │ │ └── 7751c0dcafb95eda9f41e9cdc9ce101edbebed │ │ │ ├── c3 │ │ │ │ └── 23e7368bd5da960547f53b25596f7b43a2d3d9 │ │ │ ├── c4 │ │ │ │ └── 1563a39a03723f1fa122a4309c3dc9a185a858 │ │ │ ├── c9 │ │ │ │ └── 60459eda7e640ea55be1d4ed80c6a9125a8877 │ │ │ ├── e6 │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391 │ │ │ ├── ec │ │ │ │ └── 587c3ebbaf491605d24a0b1d42e6de7dc26372 │ │ │ └── ff │ │ │ │ └── 6accf4931975aa697ea40f7b6d22af23ec77a2 │ │ └── refs │ │ │ ├── heads │ │ │ ├── feature │ │ │ │ └── 1.2-dev │ │ │ └── master │ │ │ └── tags │ │ │ └── 1.2 │ └── hg-repo │ │ └── .hg │ │ ├── 00changelog.i │ │ ├── bookmarks │ │ ├── branch │ │ ├── cache │ │ ├── branch2-served │ │ ├── checkisexec │ │ ├── checklink │ │ ├── checklink-target │ │ ├── checknoexec │ │ ├── hgtagsfnodes1 │ │ ├── rbc-names-v1 │ │ ├── rbc-revs-v1 │ │ └── tags2-visible │ │ ├── dirstate │ │ ├── hgrc │ │ ├── requires │ │ ├── shamap │ │ ├── store │ │ ├── 00changelog.i │ │ ├── 00manifest.i │ │ ├── data │ │ │ ├── mm │ │ │ │ ├── cma.c.i │ │ │ │ └── cma.h.i │ │ │ ├── new.json.i │ │ │ ├── old.json.i │ │ │ ├── src │ │ │ │ ├── index.php.i │ │ │ │ └── test.php.i │ │ │ ├── test.json.i │ │ │ └── ~2ehgtags.i │ │ ├── fncache │ │ ├── phaseroots │ │ ├── undo │ │ ├── undo.backup.fncache │ │ ├── undo.backupfiles │ │ └── undo.phaseroots │ │ ├── undo.bookmarks │ │ ├── undo.branch │ │ ├── undo.desc │ │ └── undo.dirstate └── unit │ ├── App │ ├── Form │ │ └── CriteriaTypeTest.php │ └── Twig │ │ ├── AvatarExtensionTest.php │ │ ├── DateTimeExtensionTest.php │ │ ├── RepositoryExtensionTest.php │ │ └── StringExtensionTest.php │ ├── Repository │ └── CommitishTest.php │ ├── RepositoryTest.php │ └── SCM │ ├── BlobTest.php │ ├── CommitTest.php │ ├── Diff │ ├── ParseMergeTest.php │ └── ParseTest.php │ ├── FileTest.php │ ├── ItemTest.php │ ├── LanguageTest.php │ ├── System │ ├── Git │ │ └── CommandLineTest.php │ └── Mercurial │ │ └── CommandLineTest.php │ └── TreeTest.php └── webpack.config.js /.dockerignore: -------------------------------------------------------------------------------- 1 | .git/ 2 | node_modules/ 3 | vendor/ 4 | var/cache 5 | var/logs 6 | var/log 7 | var/sessions 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.{js,html,twig,yaml}] 13 | indent_size = 2 14 | 15 | [*.{php}] 16 | indent_style = space 17 | indent_size = 4 18 | 19 | [*.md] 20 | trim_trailing_whitespace = false 21 | -------------------------------------------------------------------------------- /.env.dist: -------------------------------------------------------------------------------- 1 | APP_ENV=dev 2 | APP_SECRET=foobar 3 | DEFAULT_REPOSITORY_DIR=/var/repositories 4 | -------------------------------------------------------------------------------- /.github/workflows/legacy.yml: -------------------------------------------------------------------------------- 1 | name: Legacy Build 2 | 3 | on: 4 | workflow_dispatch: ~ 5 | 6 | push: 7 | branches: 8 | - legacy 9 | tags: 10 | - 1.** 11 | 12 | pull_request: 13 | branches: 14 | - legacy 15 | 16 | jobs: 17 | build: 18 | runs-on: ubuntu-latest 19 | 20 | strategy: 21 | matrix: 22 | php: 23 | - 7.4 24 | - 8.0 25 | - 8.1 26 | 27 | steps: 28 | - uses: actions/checkout@v2 29 | 30 | - name: Validate composer.json and composer.lock 31 | run: composer validate --strict 32 | 33 | - name: Cache Composer packages 34 | id: composer-cache 35 | uses: actions/cache@v2 36 | with: 37 | path: vendor 38 | key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} 39 | restore-keys: | 40 | ${{ runner.os }}-php- 41 | 42 | - name: Install dependencies 43 | run: composer install --prefer-dist --no-progress 44 | 45 | - name: Run test suite 46 | run: composer run-script test 47 | 48 | release: 49 | if: startsWith(github.ref, 'refs/tags/1') 50 | runs-on: ubuntu-latest 51 | needs: [build] 52 | steps: 53 | - name: Checkout 54 | uses: actions/checkout@v2 55 | 56 | - name: Build package 57 | run: make build 58 | 59 | - name: Rename package to current tag 60 | run: mv build.zip gitlist-${{ github.ref_name }}.zip 61 | 62 | - name: Release 63 | uses: softprops/action-gh-release@v1 64 | with: 65 | generate_release_notes: true 66 | files: gitlist-${{ github.ref_name }}.zip 67 | -------------------------------------------------------------------------------- /.github/workflows/nightly.yml: -------------------------------------------------------------------------------- 1 | name: Nightly Build 2 | on: 3 | workflow_dispatch: ~ 4 | schedule: 5 | - cron: '0 0 * * *' 6 | 7 | jobs: 8 | release: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@v2 13 | 14 | - name: Setup Node.js environment 15 | uses: actions/setup-node@v2.5.1 16 | with: 17 | node-version: '16' 18 | 19 | - name: Install frontend dependencies 20 | run: npm install 21 | 22 | - name: Build package 23 | run: make build 24 | 25 | - name: Rename package 26 | run: mv build.zip gitlist-nightly.zip 27 | 28 | - name: Release 29 | uses: softprops/action-gh-release@v1 30 | with: 31 | name: nightly 32 | tag_name: nightly 33 | prerelease: true 34 | body: Nightly release generated from `master` at 12 AM UTC. 35 | files: gitlist-nightly.zip 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | public/bundles/ 2 | public/assets/ 3 | var/ 4 | vendor/ 5 | node_modules/ 6 | .env 7 | docker-compose.override.yml 8 | npm-debug.log 9 | yarn-error.log 10 | .php_cs.cache 11 | .phpunit.result.cache 12 | .php-cs-fixer.cache 13 | phpunit.xml 14 | -------------------------------------------------------------------------------- /.php-cs-fixer.php: -------------------------------------------------------------------------------- 1 | in(__DIR__ . '/src') 5 | ->in(__DIR__ . '/tests') 6 | ; 7 | 8 | $config = new PhpCsFixer\Config(); 9 | return $config->setRules([ 10 | '@Symfony' => true, 11 | 'global_namespace_import' => [ 12 | 'import_classes' => true, 13 | 'import_constants' => false, 14 | 'import_functions' => false, 15 | ], 16 | ]) 17 | ->setRiskyAllowed(true) 18 | ->setFinder($finder) 19 | ; 20 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012, Klaus Silveira and contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 8 | Neither the name of GitList nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 9 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 10 | -------------------------------------------------------------------------------- /assets/themes/default/assets/scss/blame.scss: -------------------------------------------------------------------------------- 1 | $blame-hover-bg: #fffbdd !default; 2 | $blame-hunk-bg: $gray-200 !default; 3 | $blame-hunk-color: $gray-500 !default; 4 | $blame-line-border: $gray-300 !default; 5 | $blame-line-color: $gray-500 !default; 6 | 7 | .blame-lines { 8 | border-spacing: 0; 9 | border: 0; 10 | margin: 0; 11 | 12 | pre { 13 | margin: 0; 14 | border: 0; 15 | padding: 0 0 0 0.5rem; 16 | width: inherit; 17 | 18 | &:hover { 19 | background-color: $blame-hover-bg; 20 | } 21 | } 22 | 23 | tr { 24 | border-bottom: 1px solid $blame-line-border; 25 | } 26 | 27 | td { 28 | padding: 1rem; 29 | border: 0; 30 | } 31 | 32 | .author-info { 33 | p { 34 | margin: 0; 35 | } 36 | 37 | border-right: 1px solid $blame-line-border; 38 | padding: 0.2rem 0.75rem; 39 | } 40 | 41 | .line-number { 42 | color: $blame-line-color; 43 | padding: 0 0.5rem; 44 | text-align: right; 45 | border-right: 1px solid $blame-line-border; 46 | font-family: $font-family-monospace; 47 | 48 | a { 49 | color: inherit; 50 | } 51 | } 52 | 53 | .line { 54 | padding: 0; 55 | width: 100%; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /assets/themes/default/assets/scss/bootstrap.scss: -------------------------------------------------------------------------------- 1 | // Configuration 2 | @import '~bootstrap/scss/functions'; 3 | @import '~bootstrap/scss/variables'; 4 | @import '~bootstrap/scss/mixins'; 5 | @import '~bootstrap/scss/utilities'; 6 | 7 | // Layout & components 8 | @import '~bootstrap/scss/root'; 9 | @import '~bootstrap/scss/reboot'; 10 | @import '~bootstrap/scss/type'; 11 | @import '~bootstrap/scss/images'; 12 | @import '~bootstrap/scss/containers'; 13 | @import '~bootstrap/scss/grid'; 14 | @import '~bootstrap/scss/tables'; 15 | @import '~bootstrap/scss/forms'; 16 | @import '~bootstrap/scss/buttons'; 17 | @import '~bootstrap/scss/transitions'; 18 | @import '~bootstrap/scss/dropdown'; 19 | @import '~bootstrap/scss/button-group'; 20 | @import '~bootstrap/scss/nav'; 21 | @import '~bootstrap/scss/navbar'; 22 | @import '~bootstrap/scss/card'; 23 | @import '~bootstrap/scss/breadcrumb'; 24 | @import '~bootstrap/scss/pagination'; 25 | @import '~bootstrap/scss/badge'; 26 | @import '~bootstrap/scss/alert'; 27 | @import '~bootstrap/scss/progress'; 28 | @import '~bootstrap/scss/list-group'; 29 | @import '~bootstrap/scss/close'; 30 | @import '~bootstrap/scss/toasts'; 31 | @import '~bootstrap/scss/tooltip'; 32 | @import '~bootstrap/scss/popover'; 33 | @import '~bootstrap/scss/placeholders'; 34 | 35 | // Helpers 36 | @import '~bootstrap/scss/helpers'; 37 | 38 | // Utilities 39 | @import '~bootstrap/scss/utilities/api'; 40 | -------------------------------------------------------------------------------- /assets/themes/default/assets/scss/breadcrumb.scss: -------------------------------------------------------------------------------- 1 | .breadcrumb { 2 | font-size: $font-size-lg; 3 | margin: 0; 4 | margin-left: 1rem; 5 | } 6 | -------------------------------------------------------------------------------- /assets/themes/default/assets/scss/card.scss: -------------------------------------------------------------------------------- 1 | .card-header { 2 | color: $dark; 3 | background-color: $secondary; 4 | @include gradient-y($secondary, shade-color($secondary, 5%)); 5 | border-bottom: 1px solid shade-color($secondary, 10%); 6 | } 7 | 8 | .card-body-diff { 9 | padding: 0; 10 | margin: 0; 11 | overflow: clip; 12 | overflow-x: scroll; 13 | } 14 | 15 | .card-body { 16 | textarea { 17 | width: 100%; 18 | height: 600px; 19 | } 20 | } 21 | 22 | .card-body-markdown { 23 | padding: 2rem; 24 | 25 | > *:first-child { 26 | margin-top: 0 !important; 27 | } 28 | 29 | > *:last-child { 30 | margin-bottom: 0 !important; 31 | } 32 | 33 | p, 34 | blockquote, 35 | ul, 36 | ol, 37 | dl, 38 | table, 39 | pre, 40 | details { 41 | margin-top: 0; 42 | margin-bottom: $spacer; 43 | } 44 | 45 | h1, 46 | h2, 47 | h3, 48 | h4, 49 | h5, 50 | h6 { 51 | margin-top: $spacer * 1.5; 52 | margin-bottom: $spacer; 53 | font-weight: $font-weight-bold; 54 | 55 | tt, 56 | code { 57 | padding: 0 0.2rem; 58 | font-size: inherit; 59 | } 60 | } 61 | 62 | h1 { 63 | padding-bottom: 0.3rem; 64 | font-size: 2rem; 65 | border-bottom: $border-width solid $border-color; 66 | } 67 | 68 | h2 { 69 | padding-bottom: 0.3rem; 70 | font-size: 1.5rem; 71 | border-bottom: $border-width solid $border-color; 72 | } 73 | 74 | h3 { 75 | font-size: 1.25rem; 76 | } 77 | 78 | h4 { 79 | font-size: 1rem; 80 | } 81 | 82 | h5 { 83 | font-size: 0.875rem; 84 | } 85 | 86 | h6 { 87 | font-size: 0.85rem; 88 | } 89 | 90 | pre { 91 | background-color: $code-bg; 92 | border-radius: $code-border-radius; 93 | padding: $spacer; 94 | 95 | br { 96 | display: none; 97 | } 98 | 99 | code { 100 | display: block; 101 | } 102 | } 103 | 104 | code { 105 | background-color: $code-bg; 106 | border-radius: $code-border-radius; 107 | margin: 0; 108 | padding: 0.2rem 0.4rem; 109 | } 110 | 111 | blockquote { 112 | padding: 0 $spacer; 113 | border-left: 0.25rem solid $border-color; 114 | 115 | > :first-child { 116 | margin-top: 0; 117 | } 118 | 119 | > :last-child { 120 | margin-bottom: 0; 121 | } 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /assets/themes/default/assets/scss/commit.scss: -------------------------------------------------------------------------------- 1 | .commit-body-popover { 2 | max-width: none; 3 | 4 | .popover-body { 5 | display: block; 6 | unicode-bidi: embed; 7 | font-family: $font-family-monospace; 8 | white-space: pre; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /assets/themes/default/assets/scss/diff.scss: -------------------------------------------------------------------------------- 1 | $diff-add-bg: #cdffd8 !default; 2 | $diff-delete-bg: #ffdce0 !default; 3 | $diff-hover-bg: #fffbdd !default; 4 | $diff-hunk-bg: $gray-200 !default; 5 | $diff-hunk-color: $gray-500 !default; 6 | $diff-line-border: $gray-300 !default; 7 | $diff-line-color: $gray-500 !default; 8 | 9 | .diff-lines { 10 | border-spacing: 0; 11 | border: 0; 12 | margin: 0; 13 | 14 | pre { 15 | margin: 0; 16 | border: 0; 17 | padding: 0 0 0 0.5rem; 18 | width: inherit; 19 | 20 | &:hover { 21 | background-color: $diff-hover-bg; 22 | } 23 | } 24 | 25 | td { 26 | padding: 0; 27 | border: 0; 28 | } 29 | 30 | .hunk { 31 | background-color: $diff-hunk-bg; 32 | color: $diff-hunk-color; 33 | } 34 | 35 | .add { 36 | background-color: $diff-add-bg; 37 | } 38 | 39 | .delete { 40 | background-color: $diff-delete-bg; 41 | } 42 | 43 | .line-number { 44 | color: $diff-line-color; 45 | padding: 0 0.5rem; 46 | text-align: right; 47 | border-right: 1px solid $diff-line-border; 48 | font-family: $font-family-monospace; 49 | font-size: $font-size-sm; 50 | 51 | a { 52 | color: inherit; 53 | } 54 | } 55 | 56 | .line { 57 | padding: 0; 58 | width: 100%; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /assets/themes/default/assets/scss/main.scss: -------------------------------------------------------------------------------- 1 | // Basic configuration 2 | $enable-gradients: true; 3 | $enable-print-styles: false; 4 | 5 | // Typography scale 6 | $font-size-root: 1rem; 7 | $font-size-base: 1rem; 8 | $font-size-sm: $font-size-base * 0.875; 9 | $font-size-md: $font-size-base * 1; 10 | $font-size-lg: $font-size-base * 1.25; 11 | $line-height-base: 1.5; 12 | $line-height-sm: 1.25; 13 | $line-height-lg: 2; 14 | $btn-font-weight: 700; 15 | 16 | // Colors 17 | $min-contrast-ratio: 2; 18 | $blue: #4078c0; 19 | $gray: #767676; 20 | $green: #6cc644; 21 | $orange: #c9510c; 22 | $purple: #6e5494; 23 | $red: #bd2c00; 24 | $cyan: #b8cbd4; 25 | 26 | // Theme 27 | $primary: $blue; 28 | $secondary: #fcfcfc; 29 | $success: $green; 30 | $info: $cyan; 31 | $warning: $orange; 32 | $danger: $red; 33 | $light: #999; 34 | $dark: #333; 35 | 36 | // Component colors 37 | $card-cap-bg: $secondary; 38 | $card-cap-color: $dark; 39 | $code-bg: #f5f5f5; 40 | $code-border-radius: 6px; 41 | 42 | @import 'bootstrap'; 43 | @import '~ionicons/dist/scss/ionicons'; 44 | @import 'buttons'; 45 | @import 'breadcrumb'; 46 | @import 'card'; 47 | @import 'navbar'; 48 | @import 'repository'; 49 | @import 'blame'; 50 | @import 'diff'; 51 | @import 'tree'; 52 | 53 | // Layout 54 | .module-row { 55 | margin-bottom: 1.5rem; 56 | margin-top: 1.5rem; 57 | } 58 | 59 | header { 60 | margin-bottom: 1rem; 61 | } 62 | 63 | .icon { 64 | margin-right: 0.25rem; 65 | } 66 | 67 | .icon-solo { 68 | margin-right: 0; 69 | } 70 | 71 | footer { 72 | color: tint-color($gray, 40%); 73 | margin: 2rem 0; 74 | 75 | a { 76 | color: inherit; 77 | } 78 | } 79 | 80 | // Editor styling fixes 81 | .CodeMirror { 82 | font-family: $font-family-monospace; 83 | color: $body-color; 84 | height: 600px; 85 | } 86 | 87 | .ace_editor { 88 | margin-bottom: 0; 89 | } 90 | -------------------------------------------------------------------------------- /assets/themes/default/assets/scss/navbar.scss: -------------------------------------------------------------------------------- 1 | .navbar-light { 2 | background-color: $secondary; 3 | @include gradient-y($secondary, shade-color($secondary, 5%)); 4 | border-bottom: 1px solid shade-color($secondary, 10%); 5 | } 6 | -------------------------------------------------------------------------------- /assets/themes/default/assets/scss/repository.scss: -------------------------------------------------------------------------------- 1 | .page-header { 2 | h1 { 3 | font-size: 3.5rem; 4 | font-weight: 300; 5 | line-height: 1.2; 6 | margin-bottom: 1rem; 7 | } 8 | } 9 | 10 | .repository-description { 11 | margin: 0; 12 | } 13 | 14 | .repository-stats a { 15 | color: $gray-700; 16 | font-size: $font-size-base; 17 | } 18 | 19 | .ref-list { 20 | .input-group { 21 | padding: 0 0.75rem 0.75rem 0.75rem; 22 | 23 | max-height: 200px; 24 | overflow-y: auto; 25 | } 26 | 27 | .nav-tabs { 28 | padding-left: 0.75rem; 29 | } 30 | 31 | .tab-content { 32 | max-height: 200px; 33 | overflow: scroll; 34 | } 35 | } 36 | 37 | .clone-input { 38 | margin-right: 1rem; 39 | 40 | .form-control { 41 | font-family: $font-family-monospace; 42 | 43 | &[readonly] { 44 | background-color: $input-bg; 45 | opacity: 1; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /assets/themes/default/assets/scss/tree.scss: -------------------------------------------------------------------------------- 1 | .table-tree { 2 | margin-bottom: 0; 3 | 4 | tr:first-child { 5 | td, 6 | th { 7 | border-top: 0; 8 | } 9 | } 10 | 11 | td, 12 | th { 13 | padding: $spacer; 14 | } 15 | 16 | .tree-truncate { 17 | white-space: nowrap; 18 | overflow: hidden; 19 | text-overflow: ellipsis; 20 | display: block; 21 | } 22 | 23 | .tree-filename { 24 | max-width: 200px; 25 | color: $body-color; 26 | 27 | .icon { 28 | margin-right: 0.4rem; 29 | } 30 | 31 | a { 32 | color: $body-color; 33 | font-weight: $font-weight-normal; 34 | text-decoration: none; 35 | 36 | &:hover { 37 | color: $body-color; 38 | text-decoration: underline; 39 | } 40 | } 41 | } 42 | 43 | .tree-commit { 44 | color: $text-muted; 45 | max-width: 320px; 46 | 47 | a { 48 | color: $text-muted; 49 | font-weight: $font-weight-normal; 50 | text-decoration: none; 51 | 52 | &:hover { 53 | color: $text-muted; 54 | text-decoration: underline; 55 | } 56 | } 57 | } 58 | 59 | .tree-timestamp { 60 | color: $text-muted; 61 | text-align: right; 62 | } 63 | 64 | .tree-filesize { 65 | color: $text-muted; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Blob/blame.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'base.html.twig' %} 2 | 3 | {% block title %} 4 | {{ blob.name }} ({{ blob.shortHash }}) - {{ repository.name }} 5 | {% endblock %} 6 | 7 | {% block header %} 8 | {% include 'page-header.html.twig' with { repository: repository, baseRef: blob.hash, current: 'code' } %} 9 | {% endblock %} 10 | 11 | {% block search %} 12 | {% include 'search.html.twig' with { repository: repository, commitish: blob.hash } %} 13 | {% endblock %} 14 | 15 | {% block body %} 16 | {% include 'Blob/breadcrumb.html.twig' with { repository: repository, blob: blob } %} 17 | 18 |
19 |
20 |
21 |
22 | {{ blame.path }} 23 |
24 |
25 | 26 | {% for line in blame.annotatedLines %} 27 | 28 | 36 | 39 | 40 | {% endfor %} 41 |
29 | {{ line.commit.author.name }} 30 | 31 | 32 | {{ line.commit.subject|truncate(30, '...') }} 33 | 34 |

{{ line.commit.author.name }} {{ 'REPOSITORY_COMMIT_AUTHORED'|trans }} {{ line.commit.commitedAt|ago }}

35 |
37 |
{{ line.contents }}
38 |
42 |
43 |
44 |
45 |
46 | {% endblock %} 47 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Blob/breadcrumb.html.twig: -------------------------------------------------------------------------------- 1 |
2 | {% include 'reflist.html.twig' with { ref: blob.shortHash, refPath: blob.name, path: 'blob_show', repository: repository } %} 3 | 4 | 22 |
23 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Blob/history.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'base.html.twig' %} 2 | 3 | {% block title %} 4 | {{ blob.name }} ({{ blob.shortHash }}) - {{ repository.name }} 5 | {% endblock %} 6 | 7 | {% block header %} 8 | {% include 'page-header.html.twig' with { repository: repository, baseRef: blob.hash, current: 'code' } %} 9 | {% endblock %} 10 | 11 | {% block search %} 12 | {% include 'search.html.twig' with { repository: repository, commitish: blob.hash } %} 13 | {% endblock %} 14 | 15 | {% block body %} 16 | {% include 'Blob/breadcrumb.html.twig' with { repository: repository, blob: blob } %} 17 | 18 | {% for commitGroup, commits in commitGroups %} 19 |
20 |
21 |
22 |
23 | {{ commitGroup|date(commit_group_date_format) }} 24 |
25 |
26 | {% include 'Commit/list-items.html.twig' with { repository: repository, commits: commits } %} 27 |
28 |
29 |
30 |
31 | {% endfor %} 32 | 33 | 49 | {% endblock %} 50 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Blob/viewer/ace.html.twig: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Blob/viewer/codemirror.html.twig: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Blob/viewer/simple.html.twig: -------------------------------------------------------------------------------- 1 |
2 |
{{ file.contents }}
3 |
4 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Commit/feed.atom.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ url('repository_tree', { repository: repository.name, commitish: commitish.hash }) }} 4 | 5 | 6 | {{ 'REPOSITORY_FEED_RECENT_COMMITS'|trans }} {{ repository.name }} ({{ commitish.hash }}) 7 | {{ commits|first.commitedAt|date('Y-m-d\\TH:i:sP') }} 8 | {% for commit in commits %} 9 | 10 | tag:gitlist.org,2012:commit/{{ commit.hash }} 11 | 12 | {{ commit.subject }} 13 | {{ commit.commitedAt|date('Y-m-d\\TH:i:sP') }} 14 | 15 | 16 | {{ commit.author.name }} 17 | {{ commit.author.email }} 18 | 19 | 20 | {{ '
' ~ commit.body ~ '
'|escape }} 21 |
22 |
23 | {% endfor %} 24 |
25 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Commit/feed.rss.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ 'REPOSITORY_FEED_RECENT_COMMITS'|trans }} {{ repository.name }} ({{ commitish.hash }}) 5 | {{ url('repository_tree', { repository: repository.name, commitish: commitish.hash }) }} 6 | 7 | {{ 'REPOSITORY_FEED_RECENT_COMMITS_SOURCE'|trans }} 8 | {% for commit in commits %} 9 | 10 | {{ commit.subject }} 11 | {{ commit.body }} 12 | {{ url('commit_show', { repository: repository.name, commitish: commit.hash }) }} 13 | {{ commit.author.email }} ({{ commit.author.name }}) 14 | {{ commit.commitedAt|date('r') }} 15 | {{ commit.hash }} 16 | 17 | {% endfor %} 18 | 19 | 20 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Commit/list-items.html.twig: -------------------------------------------------------------------------------- 1 | 30 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Commit/list.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'base.html.twig' %} 2 | 3 | {% block title %} 4 | {{ 'REPOSITORY_COMMITS_TITLE'|trans }} - {{ repository.name }} 5 | {% endblock %} 6 | 7 | {% block header %} 8 | {% include 'page-header.html.twig' with { repository: repository, baseRef: repository.defaultBranch, current: 'commits' } %} 9 | {% endblock %} 10 | 11 | {% block search %} 12 | {% include 'search.html.twig' with { repository: repository, commitish: commitish } %} 13 | {% endblock %} 14 | 15 | {% block body %} 16 |
17 | {% include 'reflist.html.twig' with { ref: commitish, refPath: '', path: 'commit_list', repository: repository } %} 18 |
19 | 20 | {% for commitGroup, commits in commitGroups %} 21 |
22 |
23 |
24 |
25 | {{ commitGroup|date(commit_group_date_format) }} 26 |
27 |
28 | {% include 'Commit/list-items.html.twig' with { repository: repository, commits: commits } %} 29 |
30 |
31 |
32 |
33 | {% endfor %} 34 | 35 | 51 | {% endblock %} 52 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Repository/branches.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'base.html.twig' %} 2 | 3 | {% block header %} 4 | {% include 'page-header.html.twig' with { repository: repository, baseRef: repository.defaultBranch, current: 'branches' } %} 5 | {% endblock %} 6 | 7 | {% block search %} 8 | {% include 'search.html.twig' with { repository: repository, commitish: repository.defaultBranch } %} 9 | {% endblock %} 10 | 11 | {% block body %} 12 |
13 |
14 |
15 |
16 | {{ 'REPOSITORY_BRANCH_TITLE'|trans }} 17 |
18 |
19 | 39 |
40 |
41 |
42 |
43 | {% endblock %} 44 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Repository/list.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'base.html.twig' %} 2 | 3 | {% block title %} 4 | {{ 'REPOSITORY_LIST_TITLE'|trans }} 5 | {% endblock %} 6 | 7 | {% block body %} 8 |
9 | {% for repository in repositories %} 10 |
11 |
12 | 19 |
20 | {{ repository.description }} 21 |
22 |
23 |
24 | {% endfor %} 25 |
26 | {% endblock %} 27 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Repository/tags.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'base.html.twig' %} 2 | 3 | {% block header %} 4 | {% include 'page-header.html.twig' with { repository: repository, baseRef: repository.defaultBranch, current: 'tags' } %} 5 | {% endblock %} 6 | 7 | {% block search %} 8 | {% include 'search.html.twig' with { repository: repository, commitish: repository.defaultBranch } %} 9 | {% endblock %} 10 | 11 | {% block body %} 12 |
13 |
14 |
15 |
16 | {{ 'REPOSITORY_TAGS_TITLE'|trans }} 17 |
18 |
19 | {% if tags %} 20 | 42 | {% else %} 43 | {{ 'REPOSITORY_TAGS_NO_TAGS_AVAILABLE'|trans }} 44 | {% endif %} 45 |
46 |
47 |
48 |
49 | {% endblock %} 50 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Search/form.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'base.html.twig' %} 2 | {% form_theme form 'bootstrap_5_layout.html.twig' %} 3 | 4 | {% block title %} 5 | {{ 'REPOSITORY_SEARCH_FORM_TITLE'|trans }} - {{ repository.name }} 6 | {% endblock %} 7 | 8 | {% block header %} 9 | {% include 'page-header.html.twig' with { repository: repository, baseRef: repository.defaultBranch, current: 'search' } %} 10 | {% endblock %} 11 | 12 | {% block search %} 13 | {% include 'search.html.twig' with { repository: repository, commitish: commitish } %} 14 | {% endblock %} 15 | 16 | {% block body %} 17 |
18 | {{ form_start(form) }} 19 |
20 |
21 | 22 | {{ form_widget(form.from) }} 23 |
24 |
25 | 26 | {{ form_widget(form.to) }} 27 |
28 |
29 |
30 |
31 | 32 | {{ form_widget(form.author) }} 33 |
34 |
35 | 36 | {{ form_widget(form.message) }} 37 |
38 |
39 | 40 |
41 |
42 | {{ form_widget(form.submit) }} 43 |
44 |
45 | 46 | {{ form_end(form) }} 47 |
48 | {% endblock %} 49 | -------------------------------------------------------------------------------- /assets/themes/default/templates/Search/list.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'base.html.twig' %} 2 | 3 | {% block title %} 4 | {{ 'REPOSITORY_SEARCH_RESULTS_TITLE'|trans }} - {{ repository.name }} 5 | {% endblock %} 6 | 7 | {% block header %} 8 | {% include 'page-header.html.twig' with { repository: repository, baseRef: repository.defaultBranch, current: 'search' } %} 9 | {% endblock %} 10 | 11 | {% block search %} 12 | {% include 'search.html.twig' with { repository: repository, commitish: commitish } %} 13 | {% endblock %} 14 | 15 | {% block body %} 16 | {% for commitGroup, commits in commitGroups %} 17 |
18 |
19 |
20 |
21 | {{ commitGroup|date(commit_group_date_format) }} 22 |
23 |
24 | {% include 'Commit/list-items.html.twig' with { repository: repository, commits: commits } %} 25 |
26 |
27 |
28 |
29 | {% endfor %} 30 | {% endblock %} 31 | -------------------------------------------------------------------------------- /assets/themes/default/templates/base.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {% block title %}{{ 'REPOSITORY_LIST_TITLE'|trans }}{% endblock %} · {{ title }} 7 | {% block stylesheets %}{% endblock %} 8 | {% if default_blob_viewer != 'simple' %} 9 | {{ encore_entry_link_tags(default_blob_viewer ~ '/css/main') }} 10 | {% endif %} 11 | {{ encore_entry_link_tags(theme ~ '/css/main') }} 12 | 13 | {% block javascripts %}{% endblock %} 14 | {{ encore_entry_script_tags(theme ~ '/js/main') }} 15 | 16 | {% if default_blob_viewer != 'simple' %} 17 | {{ encore_entry_script_tags(default_blob_viewer ~ '/js/main') }} 18 | {% endif %} 19 | 20 | 21 |
22 | 41 |
42 | 43 |
44 | {% for label, messages in app.flashes() %} 45 | {% for message in messages %} 46 |
47 | {{ message }} 48 |
49 | {% endfor %} 50 | {% endfor %} 51 |
52 | 53 | {% block header %}{% endblock %} 54 | 55 |
56 | {% block body %}{% endblock %} 57 |
58 | 59 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /assets/themes/default/templates/page-header.html.twig: -------------------------------------------------------------------------------- 1 | 24 | -------------------------------------------------------------------------------- /assets/themes/default/templates/reflist.html.twig: -------------------------------------------------------------------------------- 1 | 53 | -------------------------------------------------------------------------------- /assets/themes/default/templates/search.html.twig: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 6 |
7 |
8 |
9 | -------------------------------------------------------------------------------- /assets/translations/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/assets/translations/.gitignore -------------------------------------------------------------------------------- /assets/translations/messages.af.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.ar.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'شجرة' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.bn.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: ভান্ডার 3 | REPOSITORY_MENU_CODE: কোড 4 | REPOSITORY_MENU_COMMITS: কমিট 5 | REPOSITORY_MENU_BRANCHES: শাখা 6 | REPOSITORY_MENU_TAGS: ট্যাগ 7 | REPOSITORY_MENU_SEARCH: অনুসন্ধান 8 | REPOSITORY_MENU_STATS: তথ্যাদি 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: এই ভান্ডারে অনুসন্ধান করুন... 10 | REPOSITORY_SUBMENU_BRANCHES: শাখা 11 | REPOSITORY_SUBMENU_TAGS: ট্যাগ 12 | REPOSITORY_REFLIST_TOGGLE: 'বৃক্ষ:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: শাখা এবং ট্যাগের মধ্যে অসুন্ধান করুন... 14 | REPOSITORY_REFLIST_BRANCHES: শাখা 15 | REPOSITORY_REFLIST_TAGS: ট্যাগ 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: ক্লিপবোর্ডে কপি করা হয়েছে! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: ডাউনলোড 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: .zip ডাউনলোড 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: .tar ডাউনলোড 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: .tar.gz ডাউনলোড 25 | REPOSITORY_BRANCH_TITLE: দূরবর্তী শাখা 26 | REPOSITORY_TAGS_TITLE: দূরবর্তী ট্যাগ 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: এই ভান্ডারে কোন ট্যাগ নেই। 28 | REPOSITORY_SEARCH_FORM_TITLE: অনুসন্ধান 29 | REPOSITORY_SEARCH_RESULTS_TITLE: অনুসন্ধানের ফলাফল 30 | REPOSITORY_BROWSE_AT_COMMIT: ভান্ডারটি ঘুরে দেখুন 31 | REPOSITORY_FEED_RECENT_COMMITS: সম্প্রতি কমিট হয়েছে 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: GitList-এর প্রস্তুতকৃত সাম্প্রতিক কমিট ফিড। 33 | REPOSITORY_COMMITS_TITLE: কমিট 34 | REPOSITORY_COMMITS_NAV_TITLE: কমিটের ইতিহাস পরিদর্শন 35 | REPOSITORY_COMMITS_NAV_NEWER: নতুন 36 | REPOSITORY_COMMITS_NAV_OLDER: পুরোনো 37 | REPOSITORY_COMMIT_COMMITED_ON: কমিট করেছেন 38 | REPOSITORY_COMMIT_AUTHORED_ON: প্রস্তুতের সময় 39 | REPOSITORY_COMMIT_AUTHORED: প্রস্তুত করেছেন 40 | REPOSITORY_COMMIT_PARENT: মূল 41 | REPOSITORY_COMMIT_CHANGE_STATS: '%changed%টি পরিবর্তিত ফাইল, যার মধ্যে %additions% নতুন লাইন এবং %deletions% মুছে ফেলা লাইন দেখানো হচ্ছে।' 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: '@ ফাইল দেখুন' 43 | REPOSITORY_BLOB_HISTORY_FOR: ইতিহাস 44 | -------------------------------------------------------------------------------- /assets/translations/messages.ca.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.cs.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.da.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.de.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Suche 8 | REPOSITORY_MENU_STATS: Statistiken 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Repository durchsuchen... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Strukturansicht:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Suche nach Branches und Tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: In die Zwischenablage kopiert! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Herunterladen 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: ZIP-Datei herunterladen 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Tar-Datei herunterladen 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: TAR.GZ-Datei herunterladen 25 | REPOSITORY_BRANCH_TITLE: Entfernte Branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: Keine Tags in diesem Repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Suchen 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Suchergebnisse 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: neuer 36 | REPOSITORY_COMMITS_NAV_OLDER: älter 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Zeige %changed% geänderte Dateien mit %additions% Einfügungen und %deletions% Löschungen. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: Zeige Datei @ 43 | REPOSITORY_BLOB_HISTORY_FOR: Verlauf für 44 | -------------------------------------------------------------------------------- /assets/translations/messages.el.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.en.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.es.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.fi.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.fr.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.he.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.hu.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.it.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.ja.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: リポジトリ 3 | REPOSITORY_MENU_CODE: コード 4 | REPOSITORY_MENU_COMMITS: コミット 5 | REPOSITORY_MENU_BRANCHES: ブランチ 6 | REPOSITORY_MENU_TAGS: タグ 7 | REPOSITORY_MENU_SEARCH: 検索 8 | REPOSITORY_MENU_STATS: 統計情報 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: このリポジトリを検索... 10 | REPOSITORY_SUBMENU_BRANCHES: ブランチ 11 | REPOSITORY_SUBMENU_TAGS: タグ 12 | REPOSITORY_REFLIST_TOGGLE: 'ツリー :' 13 | REPOSITORY_REFLIST_PLACEHOLDER: ブランチとタグを検索... 14 | REPOSITORY_REFLIST_BRANCHES: ブランチ 15 | REPOSITORY_REFLIST_TAGS: タグ 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: クリップボードにコピーしました! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: ダウンロード 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: zip 形式でダウンロード 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: tar 形式でダウンロード 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: tar.gz 形式でダウンロード 25 | REPOSITORY_BRANCH_TITLE: リモートブランチ 26 | REPOSITORY_TAGS_TITLE: リモートタグ 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: リポジトリにタグがありません。 28 | REPOSITORY_SEARCH_FORM_TITLE: 検索 29 | REPOSITORY_SEARCH_RESULTS_TITLE: 検索結果 30 | REPOSITORY_BROWSE_AT_COMMIT: 'レポジトリを表示 : ' 31 | REPOSITORY_FEED_RECENT_COMMITS: '最近のコミット :' 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: GitList が提供する「最近のコミット」のフィード。 33 | REPOSITORY_COMMITS_TITLE: コミット 34 | REPOSITORY_COMMITS_NAV_TITLE: コミット履歴ナビゲーション 35 | REPOSITORY_COMMITS_NAV_NEWER: 新しい 36 | REPOSITORY_COMMITS_NAV_OLDER: 古い 37 | REPOSITORY_COMMIT_COMMITED_ON: 'コミット日時 : ' 38 | REPOSITORY_COMMIT_AUTHORED_ON: '作成日時 : ' 39 | REPOSITORY_COMMIT_AUTHORED: '作成者 : ' 40 | REPOSITORY_COMMIT_PARENT: 親 41 | REPOSITORY_COMMIT_CHANGE_STATS: '%changed% 件の変更・%additions% 件の追加・%deletions% 件の削除を表示しています。' 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: ファイル表示 @ 43 | REPOSITORY_BLOB_HISTORY_FOR: 履歴 44 | -------------------------------------------------------------------------------- /assets/translations/messages.ko.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.nl.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.no.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.pl.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.pt.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.ro.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.ru.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.sr.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.sv.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.tr.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.uk.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.vi.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/translations/messages.zh.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | REPOSITORY_LIST_TITLE: Repositories 3 | REPOSITORY_MENU_CODE: Code 4 | REPOSITORY_MENU_COMMITS: Commits 5 | REPOSITORY_MENU_BRANCHES: Branches 6 | REPOSITORY_MENU_TAGS: Tags 7 | REPOSITORY_MENU_SEARCH: Search 8 | REPOSITORY_MENU_STATS: Stats 9 | REPOSITORY_MENU_SEARCH_PLACEHOLDER: Search this repository... 10 | REPOSITORY_SUBMENU_BRANCHES: Branches 11 | REPOSITORY_SUBMENU_TAGS: Tags 12 | REPOSITORY_REFLIST_TOGGLE: 'Tree:' 13 | REPOSITORY_REFLIST_PLACEHOLDER: Search branches and tags... 14 | REPOSITORY_REFLIST_BRANCHES: Branches 15 | REPOSITORY_REFLIST_TAGS: Tags 16 | REPOSITORY_TOOLBAR_CLONE_SSH: SSH 17 | REPOSITORY_TOOLBAR_CLONE_HTTPS: HTTPS 18 | REPOSITORY_TOOLBAR_CLONE_COPIED: Copied to clipboard! 19 | REPOSITORY_TOOLBAR_FEED_RSS: RSS 20 | REPOSITORY_TOOLBAR_FEED_ATOM: ATOM 21 | REPOSITORY_TOOLBAR_DOWNLOAD: Download 22 | REPOSITORY_TOOLBAR_DOWNLOAD_ZIP: Download .zip 23 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR: Download .tar 24 | REPOSITORY_TOOLBAR_DOWNLOAD_TAR_GZ: Download .tar.gz 25 | REPOSITORY_BRANCH_TITLE: Remote branches 26 | REPOSITORY_TAGS_TITLE: Remote tags 27 | REPOSITORY_TAGS_NO_TAGS_AVAILABLE: No tags in this repository. 28 | REPOSITORY_SEARCH_FORM_TITLE: Search 29 | REPOSITORY_SEARCH_RESULTS_TITLE: Search results 30 | REPOSITORY_BROWSE_AT_COMMIT: Browse repository at 31 | REPOSITORY_FEED_RECENT_COMMITS: Recent commits to 32 | REPOSITORY_FEED_RECENT_COMMITS_SOURCE: Recent commits feed provided by GitList. 33 | REPOSITORY_COMMITS_TITLE: Commits 34 | REPOSITORY_COMMITS_NAV_TITLE: Commit history navigation 35 | REPOSITORY_COMMITS_NAV_NEWER: Newer 36 | REPOSITORY_COMMITS_NAV_OLDER: Older 37 | REPOSITORY_COMMIT_COMMITED_ON: commited on 38 | REPOSITORY_COMMIT_AUTHORED_ON: authored on 39 | REPOSITORY_COMMIT_AUTHORED: authored 40 | REPOSITORY_COMMIT_PARENT: Parent 41 | REPOSITORY_COMMIT_CHANGE_STATS: Showing %changed% changed files, with %additions% additions and %deletions% deletions. 42 | REPOSITORY_COMMIT_VIEW_FILE_AT: View file @ 43 | REPOSITORY_BLOB_HISTORY_FOR: History for 44 | -------------------------------------------------------------------------------- /assets/viewers/ace/main.js: -------------------------------------------------------------------------------- 1 | var ace = require('ace-builds/src-min-noconflict/ace'); 2 | require('ace-builds/webpack-resolver'); 3 | 4 | window.addEventListener('load', function () { 5 | var editor = document.getElementById('ace-editor'); 6 | 7 | if (!editor) { 8 | return; 9 | } 10 | 11 | ace.edit(editor, { 12 | mode: 'ace/mode/' + editor.dataset.mode, 13 | maxLines: 50, 14 | minLines: 10, 15 | fontSize: 16, 16 | }); 17 | }); 18 | -------------------------------------------------------------------------------- /assets/viewers/ace/main.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/assets/viewers/ace/main.scss -------------------------------------------------------------------------------- /assets/viewers/codemirror/main.js: -------------------------------------------------------------------------------- 1 | var CodeMirror = require('codemirror'); 2 | 3 | // Dynamically load modes 4 | var requireContext = require.context('codemirror/mode/', true, /\.js$/); 5 | requireContext.keys().forEach(function (key) { 6 | requireContext(key); 7 | }); 8 | 9 | window.addEventListener('load', function () { 10 | var editor = document.getElementById('cm-editor'); 11 | 12 | if (!editor) { 13 | return; 14 | } 15 | 16 | CodeMirror.fromTextArea(editor, { 17 | mode: editor.dataset.mode, 18 | lineNumbers: true, 19 | lineWrapping: true, 20 | autofocus: true, 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /assets/viewers/codemirror/main.scss: -------------------------------------------------------------------------------- 1 | @import '~codemirror/lib/codemirror.css'; 2 | -------------------------------------------------------------------------------- /bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | getParameterOption(['--env', '-e'], $_SERVER['APP_ENV'] ?? 'dev', true); 16 | $debug = (bool) ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)) && !$input->hasParameterOption('--no-debug', true); 17 | 18 | if ($debug) { 19 | umask(0000); 20 | 21 | if (class_exists(Debug::class)) { 22 | Debug::enable(); 23 | } 24 | } 25 | 26 | $kernel = new Kernel($env, $debug); 27 | $application = new Application($kernel); 28 | $application->run($input); 29 | -------------------------------------------------------------------------------- /bin/linguist: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | $language) { 19 | if (!isset($language['extensions'])) { 20 | continue; 21 | } 22 | 23 | foreach ($language['extensions'] as $extension) { 24 | $extension = substr($extension, 1); 25 | $languageMap[$extension] = [ 26 | 'name' => $name, 27 | 'group' => $language['group'] ?? null, 28 | 'color' => $language['color'] ?? null, 29 | 'ace' => $language['ace_mode'] ?? null, 30 | 'cm' => $language['codemirror_mode'] ?? null, 31 | ]; 32 | } 33 | } 34 | 35 | $sourceFile = __DIR__ . '/../src/SCM/Language.php'; 36 | $template = file_get_contents($sourceFile); 37 | $blockStart = 'const MAP = ['; 38 | $blockEnd = '];'; 39 | $blockStartPos = strpos($template, $blockStart) + strlen($blockStart); 40 | $blockEndPos = strpos($template, $blockEnd); 41 | 42 | $languageMapSource = var_export($languageMap, true); 43 | $languageMapSource = substr($languageMapSource, 7); 44 | $languageMapSource = substr($languageMapSource, 0, -1); 45 | 46 | $updatedSource = substr_replace($template, $languageMapSource, $blockStartPos); 47 | $updatedSource .= substr($template, $blockEndPos); 48 | 49 | file_put_contents($sourceFile, $updatedSource); 50 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "klaussilveira/gitlist", 3 | "description": "An elegant git repository viewer", 4 | "keywords": ["scm", "vcs", "git", "repository", "github", "gitweb"], 5 | "type": "project", 6 | "license": "BSD-3-Clause", 7 | "require": { 8 | "php": ">=8.1", 9 | "ext-iconv": "*", 10 | "ext-mbstring": "*", 11 | "league/commonmark": "^2.4", 12 | "nesbot/carbon": "^2.71", 13 | "symfony/asset": "^6.3", 14 | "symfony/cache": "^6.3", 15 | "symfony/console": "^6.3", 16 | "symfony/form": "^6.3", 17 | "symfony/framework-bundle": "^6.3", 18 | "symfony/monolog-bundle": "^3.10", 19 | "symfony/process": "^6.3", 20 | "symfony/string": "^6.3", 21 | "symfony/templating": "^6.3", 22 | "symfony/translation": "^6.3", 23 | "symfony/twig-bundle": "^6.3", 24 | "symfony/webpack-encore-bundle": "^2.1", 25 | "symfony/yaml": "^6.3" 26 | }, 27 | "require-dev": { 28 | "friendsofphp/php-cs-fixer": "^3.38", 29 | "phpspec/prophecy-phpunit": "^2.0", 30 | "phpstan/phpstan": "^1.10", 31 | "phpunit/phpunit": "^9.6", 32 | "symfony/debug-bundle": "^6.3", 33 | "symfony/dotenv": "^6.3" 34 | }, 35 | "config": { 36 | "preferred-install": { 37 | "*": "dist" 38 | }, 39 | "sort-packages": true, 40 | "process-timeout": 0 41 | }, 42 | "autoload": { 43 | "psr-4": { 44 | "GitList\\": "src/" 45 | } 46 | }, 47 | "scripts": { 48 | "auto-scripts": [ 49 | "bin/console cache:clear", 50 | "bin/console assets:install --symlink --relative public" 51 | ], 52 | "post-install-cmd": [ 53 | "@auto-scripts" 54 | ], 55 | "post-update-cmd": [ 56 | "@auto-scripts" 57 | ], 58 | "test": [ 59 | "@cs", 60 | "@unit", 61 | "@lint", 62 | "@stan" 63 | ], 64 | "format": [ 65 | "vendor/bin/php-cs-fixer fix -v --show-progress=dots" 66 | ], 67 | "lint": [ 68 | "bin/console lint:twig assets/themes/", 69 | "bin/console lint:yaml assets/translations/", 70 | "bin/console lint:yaml config/", 71 | "find src -name '*.php' -print0 | xargs -0 -n1 -P8 php -l" 72 | ], 73 | "cs": [ 74 | "vendor/bin/php-cs-fixer fix --dry-run -v --show-progress=dots" 75 | ], 76 | "unit": [ 77 | "vendor/bin/phpunit" 78 | ], 79 | "stan": [ 80 | "vendor/bin/phpstan analyse -c phpstan.neon -l 5 src/" 81 | ] 82 | }, 83 | "conflict": { 84 | "symfony/symfony": "*" 85 | }, 86 | "extra": { 87 | "symfony": { 88 | "allow-contrib": false 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /config/config.yml: -------------------------------------------------------------------------------- 1 | # GitList configuration 2 | parameters: 3 | # Web application title 4 | title: GitList 5 | 6 | # Locale configuration 7 | locale: en 8 | 9 | # Theme 10 | theme: default 11 | 12 | # Navigation links 13 | navigation: 14 | - 15 | label: Help 16 | target: https://github.com/klaussilveira/gitlist/wiki 17 | - 18 | label: Report an Issue 19 | target: https://github.com/klaussilveira/gitlist/issues 20 | 21 | # List of directories containing repositories 22 | default_repository_dir: /var/www 23 | repositories: 24 | - '%env(default:default_repository_dir:DEFAULT_REPOSITORY_DIR)%' 25 | 26 | # List of repositories to exclude 27 | exclude_repositories: 28 | - /var/example/gitlist 29 | 30 | # How many levels should be recursively traversed looking for repositories 31 | repository_depth: '0' 32 | 33 | # Commits to show per page 34 | commits_per_page: 10 35 | 36 | # Blob viewer: simple, codemirror or ace 37 | default_blob_viewer: ace 38 | 39 | # Show file size in tree 40 | tree_show_file_size: false 41 | 42 | # Show last commit in tree 43 | tree_show_last_commit: true 44 | 45 | # Default binary paths 46 | git_path: /usr/bin/git 47 | hg_path: /usr/bin/hg 48 | 49 | secret: '%env(APP_SECRET)%' 50 | 51 | avatar_url: '//gravatar.com/avatar' 52 | avatar_config: [] 53 | 54 | commit_date_format: 'Y-m-d H:i:s' 55 | commit_group_date_format: 'F j, Y' 56 | commit_list_date_format: 'Y-m-d H:i:s' 57 | 58 | ssh_clone_url: 'git@gitlist.org:%s.git' # %s will be replaced by the repository name 59 | https_clone_url: 'https://gitlist.org/%s.git' # %s will be replaced by the repository name 60 | 61 | # Route validators 62 | valid_repository_name: '[a-zA-Z0-9\-\_\.]+' 63 | #valid_commitish_format: '.+' 64 | valid_commitish_format: '[a-zA-Z0-9\_\.\-\/]+' 65 | -------------------------------------------------------------------------------- /config/dev/routes.yml: -------------------------------------------------------------------------------- 1 | _errors: 2 | resource: '@FrameworkBundle/Resources/config/routing/errors.xml' 3 | prefix: /_error 4 | -------------------------------------------------------------------------------- /config/framework.yml: -------------------------------------------------------------------------------- 1 | framework: 2 | secret: '%env(APP_SECRET)%' 3 | session: 4 | handler_id: ~ 5 | php_errors: 6 | log: true 7 | cache: 8 | prefix_seed: gl 9 | router: 10 | strict_requirements: ~ 11 | utf8: true 12 | default_locale: '%locale%' 13 | translator: 14 | paths: 15 | - '%kernel.project_dir%/assets/translations' 16 | fallbacks: 17 | - '%locale%' 18 | assets: 19 | base_path: 'assets' 20 | 21 | twig: 22 | paths: ['%kernel.project_dir%/assets/themes/%theme%/templates'] 23 | debug: '%kernel.debug%' 24 | strict_variables: '%kernel.debug%' 25 | form_themes: ['bootstrap_5_horizontal_layout.html.twig'] 26 | globals: 27 | title: '%title%' 28 | theme: '%theme%' 29 | navigation: '%navigation%' 30 | commit_date_format: '%commit_date_format%' 31 | commit_group_date_format: '%commit_group_date_format%' 32 | commit_list_date_format: '%commit_list_date_format%' 33 | ssh_clone_url: '%ssh_clone_url%' 34 | https_clone_url: '%https_clone_url%' 35 | default_blob_viewer: '%default_blob_viewer%' 36 | tree_show_file_size: '%tree_show_file_size%' 37 | tree_show_last_commit: '%tree_show_last_commit%' 38 | 39 | monolog: 40 | handlers: 41 | file_log: 42 | type: stream 43 | path: "%kernel.logs_dir%/%kernel.environment%.log" 44 | level: debug 45 | 46 | syslog_handler: 47 | type: syslog 48 | level: error 49 | 50 | webpack_encore: 51 | output_path: '%kernel.project_dir%/public/assets' 52 | -------------------------------------------------------------------------------- /config/services.yml: -------------------------------------------------------------------------------- 1 | services: 2 | _defaults: 3 | autowire: true 4 | autoconfigure: true 5 | public: false 6 | 7 | GitList\: 8 | resource: '../src/*' 9 | 10 | GitList\App\Controller\: 11 | resource: '../src/App/Controller' 12 | tags: ['controller.service_arguments'] 13 | 14 | GitList\App\Controller\Commit: 15 | arguments: 16 | $perPage: '%commits_per_page%' 17 | tags: ['controller.service_arguments'] 18 | 19 | GitList\App\Controller\Blob: 20 | arguments: 21 | $perPage: '%commits_per_page%' 22 | tags: ['controller.service_arguments'] 23 | 24 | GitList\Repository\Index: 25 | arguments: 26 | $paths: '%repositories%' 27 | $excludePaths: '%exclude_repositories%' 28 | $depth: '%repository_depth%' 29 | $systems: 30 | - '@GitList\SCM\System\Git\CommandLine' 31 | - '@GitList\SCM\System\Mercurial\CommandLine' 32 | 33 | GitList\SCM\System\Git\CommandLine: 34 | arguments: 35 | $path: '%git_path%' 36 | 37 | GitList\SCM\System\Mercurial\CommandLine: 38 | arguments: 39 | $path: '%hg_path%' 40 | 41 | GitList\App\Twig\AvatarExtension: 42 | arguments: 43 | $avatarUrl: '%avatar_url%' 44 | $avatarConfig: '%avatar_config%' 45 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | project_identifier: gitlist 2 | base_path: . 3 | preserve_hierarchy: false 4 | files: 5 | - source: /assets/translations/messages.en.yaml 6 | translation: /assets/translations/messages.%two_letters_code%.yaml 7 | type: yaml 8 | -------------------------------------------------------------------------------- /cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "baseUrl": "http://0.0.0.0:8880", 3 | "experimentalStudio": true, 4 | "downloadsFolder": "tests/cypress/downloads", 5 | "fixturesFolder": "tests/cypress/fixtures", 6 | "integrationFolder": "tests/cypress/integration", 7 | "pluginsFile": false, 8 | "screenshotsFolder": "tests/cypress/screenshots", 9 | "supportFile": false, 10 | "video": false 11 | } 12 | -------------------------------------------------------------------------------- /docker-compose.override.yml.dist: -------------------------------------------------------------------------------- 1 | volumes: 2 | var-cache-volume: 3 | 4 | services: 5 | webserver: 6 | volumes: 7 | - .:/application:cached 8 | ports: 9 | - '8880:80' 10 | 11 | php-fpm: 12 | volumes: 13 | - /var/www:/var/repositories 14 | - .:/application:cached 15 | - var-cache-volume:/application/var/cache 16 | - $HOME/.composer:/root/.composer/:cached 17 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | services: 2 | node: 3 | image: node:16-alpine 4 | working_dir: /application 5 | volumes: 6 | - .:/application 7 | command: npm install && npm run watch 8 | 9 | webserver: 10 | build: 11 | context: docker/nginx/ 12 | depends_on: 13 | - php-fpm 14 | working_dir: /application 15 | volumes: 16 | - .:/application 17 | 18 | php-fpm: 19 | build: 20 | context: docker/php-fpm/ 21 | working_dir: /application 22 | volumes: 23 | - .:/application 24 | -------------------------------------------------------------------------------- /docker/nginx/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:stable-alpine 2 | COPY nginx.conf /etc/nginx/conf.d/default.conf 3 | -------------------------------------------------------------------------------- /docker/nginx/nginx.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80 default; 3 | 4 | root /application/public; 5 | access_log /var/log/nginx/access.log; 6 | resolver 127.0.0.11 ipv6=off; 7 | set $fpm_backend php-fpm; 8 | 9 | location / { 10 | try_files $uri /index.php$is_args$args; 11 | } 12 | 13 | location ~* ^[^(\.php)]+\.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js)$ { 14 | access_log off; 15 | expires 1h; 16 | add_header Cache-Control public; 17 | } 18 | 19 | location ~ ^/index\.php(/|$) { 20 | fastcgi_pass $fpm_backend:9000; 21 | fastcgi_split_path_info ^(.+\.php)(/.*)$; 22 | 23 | fastcgi_intercept_errors on; 24 | fastcgi_connect_timeout 300; 25 | fastcgi_send_timeout 300; 26 | fastcgi_read_timeout 300; 27 | fastcgi_buffer_size 128k; 28 | fastcgi_buffers 4 256k; 29 | fastcgi_busy_buffers_size 256k; 30 | fastcgi_temp_file_write_size 256k; 31 | send_timeout 300; 32 | 33 | fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; 34 | fastcgi_param DOCUMENT_ROOT $realpath_root; 35 | 36 | include fastcgi_params; 37 | } 38 | 39 | # Basic configuration 40 | expires off; 41 | server_tokens off; 42 | client_max_body_size 4m; 43 | keepalive_timeout 20s; 44 | sendfile on; 45 | tcp_nopush on; 46 | 47 | # Security 48 | add_header X-Frame-Options "SAMEORIGIN" always; 49 | add_header X-XSS-Protection "1; mode=block" always; 50 | add_header X-Content-Type-Options nosniff always; 51 | add_header Referrer-Policy "no-referrer-when-downgrade" always; 52 | 53 | # Performance 54 | gzip on; 55 | gzip_comp_level 5; 56 | gzip_min_length 256; 57 | gzip_proxied any; 58 | gzip_vary on; 59 | gzip_types 60 | application/atom+xml 61 | application/javascript 62 | application/json 63 | application/ld+json 64 | application/manifest+json 65 | application/rss+xml 66 | application/geo+json 67 | application/vnd.ms-fontobject 68 | application/x-web-app-manifest+json 69 | application/xhtml+xml 70 | application/xml 71 | application/rdf+xml 72 | font/otf 73 | application/wasm 74 | image/bmp 75 | image/svg+xml 76 | text/cache-manifest 77 | text/css 78 | text/javascript 79 | text/plain 80 | text/markdown 81 | text/vcard 82 | text/calendar 83 | text/vnd.rim.location.xloc 84 | text/vtt 85 | text/x-component 86 | text/x-cross-domain-policy; 87 | 88 | # Content types 89 | include mime.types; 90 | charset utf-8; 91 | charset_types 92 | text/css 93 | text/plain 94 | text/vnd.wap.wml 95 | text/javascript 96 | text/markdown 97 | text/calendar 98 | text/x-component 99 | text/vcard 100 | text/cache-manifest 101 | text/vtt 102 | application/json 103 | application/manifest+json; 104 | } 105 | -------------------------------------------------------------------------------- /docker/php-fpm/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.2-fpm-alpine 2 | 3 | ENV PHP_EXT_DEPS \ 4 | gettext=gettext-dev \ 5 | icu=icu-dev \ 6 | libgcrypt=libgcrypt-dev \ 7 | libxml2=libxml2-dev \ 8 | libxslt=libxslt-dev \ 9 | libzip=libzip-dev 10 | 11 | RUN set -x; \ 12 | apk add --no-cache --virtual .php-extensions-build-dependencies \ 13 | $PHPIZE_DEPS \ 14 | linux-headers \ 15 | $(echo ${PHP_EXT_DEPS} | tr ' ' '\n' | cut -d = -f 2) \ 16 | && apk add --no-cache \ 17 | $(echo ${PHP_EXT_DEPS} | tr ' ' '\n' | cut -d = -f 1) \ 18 | && docker-php-ext-install \ 19 | exif \ 20 | gettext \ 21 | intl \ 22 | opcache \ 23 | sockets \ 24 | xsl \ 25 | zip \ 26 | && printf "\n" | pecl install apcu xdebug \ 27 | && docker-php-ext-enable apcu \ 28 | && apk del .php-extensions-build-dependencies 29 | 30 | RUN apk add --no-cache \ 31 | bash \ 32 | coreutils \ 33 | git \ 34 | grep \ 35 | mercurial \ 36 | make \ 37 | wget 38 | 39 | ENV COMPOSER_ALLOW_SUPERUSER 1 40 | 41 | RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --2 42 | 43 | ENV PATH="/application/bin:/application/vendor/bin:${PATH}" 44 | 45 | WORKDIR "/application" 46 | 47 | CMD ["php-fpm", "--allow-to-run-as-root"] 48 | 49 | COPY php.ini /usr/local/etc/php/conf.d/99-overrides.ini 50 | COPY php-fpm.d/* /usr/local/etc/php-fpm.d/ 51 | -------------------------------------------------------------------------------- /docker/php-fpm/php-fpm.d/docker.conf: -------------------------------------------------------------------------------- 1 | [global] 2 | error_log = /proc/self/fd/2 3 | log_buffering = no 4 | 5 | [www] 6 | access.log = /proc/self/fd/2 7 | clear_env = no 8 | 9 | ; Ensure worker stdout and stderr are collected 10 | catch_workers_output = yes 11 | decorate_workers_output = no 12 | -------------------------------------------------------------------------------- /docker/php-fpm/php-fpm.d/www.conf: -------------------------------------------------------------------------------- 1 | [www] 2 | user = root 3 | group = root 4 | 5 | listen = 127.0.0.1:9000 6 | 7 | pm = dynamic 8 | pm.max_children = 5 9 | pm.start_servers = 2 10 | pm.min_spare_servers = 1 11 | pm.max_spare_servers = 3 12 | pm.status_path = /fpm_status 13 | 14 | ping.path = /fpm_ping 15 | ping.response = pong 16 | -------------------------------------------------------------------------------- /docker/php-fpm/php.ini: -------------------------------------------------------------------------------- 1 | upload_max_filesize = 4M 2 | post_max_size = 4M 3 | memory_limit = -1 4 | date.timezone = UTC 5 | 6 | [xdebug] 7 | zend_extension = xdebug.so 8 | xdebug.cli_color =1 9 | xdebug.mode = debug 10 | xdebug.discover_client_host = 1 11 | xdebug.client_port = 9003 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gitlist", 3 | "main": "index.js", 4 | "repository": "https://github.com/klaussilveira/gitlist", 5 | "license": "BSD-3-Clause", 6 | "scripts": { 7 | "dev-server": "encore dev-server", 8 | "dev": "encore dev", 9 | "watch": "encore dev --watch", 10 | "build": "encore production", 11 | "test": "npm run lint", 12 | "format": "prettier --write 'assets/**/*.{js,ts,json,css,scss,yaml}'", 13 | "lint": "prettier --check 'assets/**/*.{js,ts,json,css,scss,yaml}'", 14 | "cypress": "cypress run" 15 | }, 16 | "dependencies": { 17 | "@popperjs/core": "^2.11.2", 18 | "ace-builds": "^1.4", 19 | "bootstrap": "^5.1", 20 | "codemirror": "^5.65", 21 | "ionicons": "^4.6" 22 | }, 23 | "devDependencies": { 24 | "@symfony/webpack-encore": "^1.7", 25 | "autoprefixer": "^10.4", 26 | "cssnano": "^5.0", 27 | "cypress": "^9.2.1", 28 | "file-loader": "^6.2", 29 | "husky": "^7.0", 30 | "postcss-loader": "^6.2", 31 | "prettier": "^2.5", 32 | "pretty-quick": "^3.1", 33 | "sass": "^1.45", 34 | "sass-loader": "^12.4" 35 | }, 36 | "browserslist": [ 37 | "> 1%", 38 | "IE 10" 39 | ] 40 | } 41 | -------------------------------------------------------------------------------- /phpstan.neon: -------------------------------------------------------------------------------- 1 | parameters: 2 | level: max 3 | checkMissingIterableValueType: false 4 | paths: 5 | - src 6 | ignoreErrors: 7 | - '#Method GitList\\Kernel::configureContainer\(\) is unused.#' 8 | - '#Method GitList\\Kernel::configureRoutes\(\) is unused.#' 9 | - '#Call to an undefined method Symfony\\Component\\HttpFoundation\\Session\\SessionInterface::getFlashBag#' 10 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | src 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | tests 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | require('cssnano'), 4 | require('autoprefixer') 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | load($env); 15 | } 16 | 17 | $env = $_SERVER['APP_ENV'] = $_ENV['APP_ENV'] ?? $_SERVER['APP_ENV'] ?? 'prod'; 18 | $debug = (bool) ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)); 19 | 20 | if ($debug) { 21 | umask(0000); 22 | Debug::enable(); 23 | } 24 | 25 | if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) { 26 | Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); 27 | } 28 | 29 | if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) { 30 | Request::setTrustedHosts(explode(',', $trustedHosts)); 31 | } 32 | 33 | $kernel = new Kernel($env, $debug); 34 | $request = Request::createFromGlobals(); 35 | $response = $kernel->handle($request); 36 | $response->send(); 37 | $kernel->terminate($request, $response); 38 | -------------------------------------------------------------------------------- /src/App/Controller/Commit.php: -------------------------------------------------------------------------------- 1 | query->get('page', 1); 22 | $perPage = (int) $request->query->get('perPage', $this->perPage); 23 | 24 | $repository = $this->index->getRepository($repository); 25 | $commits = $repository->getCommits($commitish, $page, $perPage); 26 | $commitGroups = []; 27 | 28 | foreach ($commits as $commit) { 29 | $commitGroups[$commit->getCommitedAt()->format('Y-m-d')][] = $commit; 30 | } 31 | 32 | return new Response($this->templating->render('Commit/list.html.twig', [ 33 | 'repository' => $repository, 34 | 'commitish' => $commitish, 35 | 'commitGroups' => $commitGroups, 36 | 'page' => $page, 37 | 'nextPage' => $page + 1, 38 | 'previousPage' => $page - 1, 39 | 'perPage' => $perPage, 40 | ])); 41 | } 42 | 43 | public function show(string $repository, string $commitish): Response 44 | { 45 | $repository = $this->index->getRepository($repository); 46 | $commit = $repository->getCommit($commitish); 47 | 48 | return new Response($this->templating->render('Commit/show.html.twig', [ 49 | 'repository' => $repository, 50 | 'commit' => $commit, 51 | ])); 52 | } 53 | 54 | public function feed(string $repository, string $commitish, string $format): Response 55 | { 56 | $repository = $this->index->getRepository($repository); 57 | $commits = $repository->getCommits($commitish, 1, $this->perPage); 58 | $commitish = new Commitish($repository, $commitish); 59 | 60 | return new Response($this->templating->render(sprintf('Commit/feed.%s.twig', $format), [ 61 | 'repository' => $repository, 62 | 'commitish' => $commitish, 63 | 'commits' => $commits, 64 | ])); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/App/Controller/CommitSearch.php: -------------------------------------------------------------------------------- 1 | index->getRepository($repository); 26 | $form = $this->formFactory->create(CriteriaType::class, new Criteria()); 27 | 28 | return new Response($this->templating->render('Search/form.html.twig', [ 29 | 'repository' => $repository, 30 | 'commitish' => $commitish, 31 | 'form' => $form->createView(), 32 | ])); 33 | } 34 | 35 | public function showResults(Request $request, string $repository, string $commitish): Response 36 | { 37 | $criteria = new Criteria(); 38 | $criteria->setMessage($request->request->get('query', '')); 39 | 40 | $form = $this->formFactory->create(CriteriaType::class, $criteria); 41 | $form->handleRequest($request); 42 | 43 | if ($form->isSubmitted() && !$form->isValid()) { 44 | foreach ($form->getErrors(true) as $error) { 45 | $request->getSession()->getFlashBag()->add('danger', $error->getMessage()); 46 | } 47 | 48 | return new RedirectResponse($this->router->generate('repository_tree', [ 49 | 'repository' => $repository, 50 | 'commitish' => $commitish, 51 | ])); 52 | } 53 | 54 | $repository = $this->index->getRepository($repository); 55 | $commits = $repository->searchCommits($form->getData(), $commitish); 56 | $commitGroups = []; 57 | 58 | foreach ($commits as $commit) { 59 | $commitGroups[$commit->getCommitedAt()->format('Y-m-d')][] = $commit; 60 | } 61 | 62 | return new Response($this->templating->render('Search/list.html.twig', [ 63 | 'repository' => $repository, 64 | 'commitGroups' => $commitGroups, 65 | 'commitish' => $commitish, 66 | ])); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/App/Form/CriteriaType.php: -------------------------------------------------------------------------------- 1 | add('from', DateTimeType::class, [ 21 | 'widget' => 'single_text', 22 | 'required' => false, 23 | ]) 24 | ->add('to', DateTimeType::class, [ 25 | 'widget' => 'single_text', 26 | 'required' => false, 27 | ]) 28 | ->add('author', TextType::class, [ 29 | 'required' => false, 30 | ]) 31 | ->add('message', TextType::class, [ 32 | 'required' => false, 33 | ]) 34 | ->add('submit', SubmitType::class); 35 | } 36 | 37 | public function configureOptions(OptionsResolver $resolver): void 38 | { 39 | $resolver->setDefaults([ 40 | 'data_class' => Criteria::class, 41 | ]); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/App/Twig/AvatarExtension.php: -------------------------------------------------------------------------------- 1 | $size], $this->avatarConfig); 30 | 31 | return sprintf('%s/%s?%s', $this->avatarUrl, md5(strtolower($email)), http_build_query($queryString)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/App/Twig/DateTimeExtension.php: -------------------------------------------------------------------------------- 1 | locale($this->locale)->diffForHumans(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/App/Twig/MarkdownExtension.php: -------------------------------------------------------------------------------- 1 | 'strip', 24 | 'allow_unsafe_links' => false, 25 | ]); 26 | 27 | $environment->addExtension(new CommonMarkCoreExtension()); 28 | $environment->addExtension(new GithubFlavoredMarkdownExtension()); 29 | $environment->addExtension(new AutolinkExtension()); 30 | $environment->addExtension(new TaskListExtension()); 31 | 32 | $this->converter = new MarkdownConverter($environment); 33 | } 34 | 35 | public function getFilters() 36 | { 37 | return [ 38 | new TwigFilter('markdown', [$this, 'markdown']), 39 | ]; 40 | } 41 | 42 | public function markdown($string): string 43 | { 44 | if (!$string) { 45 | return ''; 46 | } 47 | 48 | return (string) $this->converter->convertToHtml($string); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/App/Twig/RepositoryExtension.php: -------------------------------------------------------------------------------- 1 | !$this->isTree($item)); 41 | } 42 | 43 | public function isTree($value): bool 44 | { 45 | if (!$value) { 46 | return false; 47 | } 48 | 49 | return $value instanceof Tree; 50 | } 51 | 52 | public function getCommitish(string $hash, string $path): string 53 | { 54 | return $hash.'/'.$path; 55 | } 56 | 57 | public function getParent(string $path): string 58 | { 59 | $parent = dirname($path); 60 | 61 | if ('.' == $parent) { 62 | return ''; 63 | } 64 | 65 | return $parent; 66 | } 67 | 68 | public function getBreadcrumbs(Blob $blob): array 69 | { 70 | $breadcrumbs = []; 71 | $parts = explode('/', $blob->getName()); 72 | $previousPart = ''; 73 | 74 | foreach ($parts as $index => $part) { 75 | $previousPart .= (0 == $index ? '' : '/').$part; 76 | $breadcrumbs[] = [ 77 | 'name' => $part, 78 | 'commitish' => $this->getCommitish($blob->getHash(), $previousPart), 79 | ]; 80 | } 81 | 82 | return $breadcrumbs; 83 | } 84 | 85 | public function formatFileSize($value = null): string 86 | { 87 | if (!$value) { 88 | return '0 B'; 89 | } 90 | 91 | $units = ['B', 'KB', 'MB', 'GB', 'TB']; 92 | $pow = floor(log($value) / log(1024)); 93 | $pow = min($pow, count($units) - 1); 94 | $value /= 1024 ** $pow; 95 | 96 | return (string) round($value, 2).' '.$units[$pow]; 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /src/App/Twig/StringExtension.php: -------------------------------------------------------------------------------- 1 | truncate($maxLength, $terminator, $cut) 28 | ->toString(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Exception/BlobNotFoundException.php: -------------------------------------------------------------------------------- 1 | getProjectDir().'/var/cache/'.$this->environment; 31 | } 32 | 33 | public function getLogDir(): string 34 | { 35 | return $this->getProjectDir().'/var/log'; 36 | } 37 | 38 | public function registerBundles(): iterable 39 | { 40 | $bundles = [ 41 | FrameworkBundle::class, 42 | TwigBundle::class, 43 | MonologBundle::class, 44 | WebpackEncoreBundle::class, 45 | ]; 46 | 47 | if ($this->debug) { 48 | $bundles[] = DebugBundle::class; 49 | } 50 | 51 | foreach ($bundles as $bundle) { 52 | yield new $bundle(); 53 | } 54 | } 55 | 56 | private function configureContainer(ContainerConfigurator $container, LoaderInterface $loader, ContainerBuilder $builder): void 57 | { 58 | $confDir = $this->getProjectDir().'/config'; 59 | $loader->load($confDir.'/config.yml'); 60 | $loader->load($confDir.'/framework.yml'); 61 | $loader->load($confDir.'/services.yml'); 62 | } 63 | 64 | private function configureRoutes(RoutingConfigurator $routes): void 65 | { 66 | $confDir = $this->getProjectDir().'/config'; 67 | $routes->import($confDir.'/routes.yml'); 68 | 69 | if ('dev' == $this->environment) { 70 | $routes->import($confDir.'/dev/routes.yml'); 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/Repository/Commitish.php: -------------------------------------------------------------------------------- 1 | hash = strtok($commitish, '/'); 17 | $revs = [...$repository->getBranches(), ...$repository->getTags()]; 18 | 19 | foreach ($revs as $rev) { 20 | if (false === ($pos = strpos($commitish, (string) $rev->getName()))) { 21 | continue; 22 | } 23 | 24 | $this->hash = $rev->getName(); 25 | $revSuffix = substr($commitish, strlen($this->hash)); 26 | 27 | if ($revSuffix && ('@' === $revSuffix[0] || '^' === $revSuffix[0] || '~' === $revSuffix[0])) { 28 | $this->hash .= strtok($revSuffix, '/'); 29 | } 30 | } 31 | 32 | if ($this->hash != $commitish) { 33 | $this->path = substr($commitish, strlen($this->hash) + 1); 34 | } 35 | } 36 | 37 | public function getHash(): string 38 | { 39 | return $this->hash; 40 | } 41 | 42 | public function hasPath(): bool 43 | { 44 | return (bool) $this->path; 45 | } 46 | 47 | public function getPath(): ?string 48 | { 49 | return $this->path; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/Repository/Index.php: -------------------------------------------------------------------------------- 1 | directories() 28 | ->depth($depth) 29 | ->ignoreUnreadableDirs() 30 | ->exclude($excludePaths) 31 | ->in($path); 32 | 33 | foreach ($directories as $directory) { 34 | $repository = new SourceRepository($directory->getRealPath()); 35 | 36 | try { 37 | $system = $this->getSystem($repository); 38 | } catch (InvalidRepositoryException) { 39 | continue; 40 | } 41 | 42 | $this->addRepository(new Repository($system, $repository, $directory->getBasename())); 43 | } 44 | } 45 | } 46 | 47 | public function getSystem(SourceRepository $repository): System 48 | { 49 | foreach ($this->systems as $system) { 50 | if ($system->isValidRepository($repository)) { 51 | return $system; 52 | } 53 | } 54 | 55 | throw new InvalidRepositoryException($repository->getPath()); 56 | } 57 | 58 | public function addRepository(Repository $repository): void 59 | { 60 | $this->repositories[$repository->getName()] = $repository; 61 | } 62 | 63 | public function getRepository(string $name): Repository 64 | { 65 | if (!isset($this->repositories[$name])) { 66 | throw new RepositoryNotFoundException($name); 67 | } 68 | 69 | return $this->repositories[$name]; 70 | } 71 | 72 | public function getRepositories(): array 73 | { 74 | return $this->repositories; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/SCM/AnnotatedLine.php: -------------------------------------------------------------------------------- 1 | commit; 16 | } 17 | 18 | public function getContents(): string 19 | { 20 | return $this->contents; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/SCM/Blame.php: -------------------------------------------------------------------------------- 1 | path; 23 | } 24 | 25 | public function getHash(): string 26 | { 27 | return $this->hash; 28 | } 29 | 30 | public function getAnnotatedLines(): array 31 | { 32 | return $this->annotatedLines; 33 | } 34 | 35 | public function addAnnotatedLine(AnnotatedLine $annotatedLine): void 36 | { 37 | $this->annotatedLines[] = $annotatedLine; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/SCM/Blob.php: -------------------------------------------------------------------------------- 1 | mode; 17 | } 18 | 19 | public function setMode(string $mode): void 20 | { 21 | $this->mode = $mode; 22 | } 23 | 24 | public function getName(): ?string 25 | { 26 | return $this->name; 27 | } 28 | 29 | public function getFileName(): ?string 30 | { 31 | return basename($this->name ?? ''); 32 | } 33 | 34 | public function setName(string $name): void 35 | { 36 | $this->name = $name; 37 | } 38 | 39 | public function isReadme(): bool 40 | { 41 | $fileName = strtolower($this->getFileName()); 42 | 43 | return 'readme.md' == $fileName || 'readme.txt' == $fileName; 44 | } 45 | 46 | public function getSize(): ?int 47 | { 48 | return $this->size; 49 | } 50 | 51 | public function setSize(int $size): void 52 | { 53 | $this->size = $size; 54 | } 55 | 56 | public function getContents(): ?string 57 | { 58 | return $this->contents; 59 | } 60 | 61 | public function setContents(string $contents): void 62 | { 63 | $this->contents = $contents; 64 | } 65 | 66 | public function isCommit(): bool 67 | { 68 | return false; 69 | } 70 | 71 | public function isTree(): bool 72 | { 73 | return false; 74 | } 75 | 76 | public function isBlob(): bool 77 | { 78 | return true; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/SCM/Branch.php: -------------------------------------------------------------------------------- 1 | repository; 16 | } 17 | 18 | public function getName(): string 19 | { 20 | return $this->name; 21 | } 22 | 23 | public function getTarget(): Commit 24 | { 25 | return $this->target; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SCM/Commit/Criteria.php: -------------------------------------------------------------------------------- 1 | from; 20 | } 21 | 22 | public function setFrom(?DateTimeInterface $from): void 23 | { 24 | $this->from = $from; 25 | } 26 | 27 | public function getTo(): ?DateTimeInterface 28 | { 29 | return $this->to; 30 | } 31 | 32 | public function setTo(?DateTimeInterface $to): void 33 | { 34 | $this->to = $to; 35 | } 36 | 37 | public function getAuthor(): ?string 38 | { 39 | return $this->author; 40 | } 41 | 42 | public function setAuthor(?string $author): void 43 | { 44 | $this->author = $author; 45 | } 46 | 47 | public function getMessage(): ?string 48 | { 49 | return $this->message; 50 | } 51 | 52 | public function setMessage(?string $message): void 53 | { 54 | $this->message = $message; 55 | } 56 | 57 | public function getLimit(): ?int 58 | { 59 | return $this->limit; 60 | } 61 | 62 | public function setLimit(?int $limit): void 63 | { 64 | $this->limit = $limit; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/SCM/Commit/Person.php: -------------------------------------------------------------------------------- 1 | name; 16 | } 17 | 18 | public function getEmail(): string 19 | { 20 | return $this->email; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/SCM/Commit/Signature.php: -------------------------------------------------------------------------------- 1 | signer; 18 | } 19 | 20 | public function getKey(): string 21 | { 22 | return $this->key; 23 | } 24 | 25 | public function isValid(): bool 26 | { 27 | return $this->valid; 28 | } 29 | 30 | public function validate(): void 31 | { 32 | $this->valid = true; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/SCM/Diff/File.php: -------------------------------------------------------------------------------- 1 | name; 31 | } 32 | 33 | public function getType(): string 34 | { 35 | return $this->type; 36 | } 37 | 38 | public function setType(string $type): void 39 | { 40 | $this->type = $type; 41 | } 42 | 43 | public function getIndex(): ?string 44 | { 45 | return $this->index; 46 | } 47 | 48 | public function setIndex(string $index): void 49 | { 50 | $this->index = $index; 51 | } 52 | 53 | public function getFrom(): string 54 | { 55 | return $this->from; 56 | } 57 | 58 | public function setFrom(string $from): void 59 | { 60 | $this->from = $from; 61 | } 62 | 63 | public function getTo(): string 64 | { 65 | return $this->to; 66 | } 67 | 68 | public function setTo(string $to): void 69 | { 70 | $this->to = $to; 71 | } 72 | 73 | public function getHunks(): array 74 | { 75 | return $this->hunks; 76 | } 77 | 78 | public function addHunk(Hunk $hunk): void 79 | { 80 | $this->hunks[] = $hunk; 81 | } 82 | 83 | public function getAdditions(): int 84 | { 85 | return $this->additions; 86 | } 87 | 88 | public function increaseAdditions(int $amount = 1): void 89 | { 90 | $this->additions += $amount; 91 | } 92 | 93 | public function getDeletions(): int 94 | { 95 | return $this->deletions; 96 | } 97 | 98 | public function increaseDeletions(int $amount = 1): void 99 | { 100 | $this->deletions += $amount; 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /src/SCM/Diff/Hunk.php: -------------------------------------------------------------------------------- 1 | oldStart; 21 | } 22 | 23 | public function getOldCount(): int 24 | { 25 | return $this->oldCount; 26 | } 27 | 28 | public function getNewStart(): int 29 | { 30 | return $this->newStart; 31 | } 32 | 33 | public function getNewCount(): int 34 | { 35 | return $this->newCount; 36 | } 37 | 38 | public function getContents(): string 39 | { 40 | return $this->contents; 41 | } 42 | 43 | public function getLines(): array 44 | { 45 | return $this->lines; 46 | } 47 | 48 | public function addLine(Line $line): void 49 | { 50 | $this->lines[] = $line; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/SCM/Diff/Line.php: -------------------------------------------------------------------------------- 1 | type; 20 | } 21 | 22 | public function getContents(): string 23 | { 24 | return $this->contents; 25 | } 26 | 27 | public function getOldNumber(): int 28 | { 29 | return $this->oldNumber; 30 | } 31 | 32 | public function getNewNumber(): int 33 | { 34 | return $this->newNumber; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/SCM/Exception/CommandException.php: -------------------------------------------------------------------------------- 1 | message, 'does not exist'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/SCM/Exception/InvalidCommitException.php: -------------------------------------------------------------------------------- 1 | repository; 21 | } 22 | 23 | public function getHash(): string 24 | { 25 | return $this->hash; 26 | } 27 | 28 | public function getShortHash(): ?string 29 | { 30 | return $this->shortHash; 31 | } 32 | 33 | public function setShortHash(string $shortHash): void 34 | { 35 | $this->shortHash = $shortHash; 36 | } 37 | 38 | public function getParents(): array 39 | { 40 | return $this->parents; 41 | } 42 | 43 | public function clearParents(): void 44 | { 45 | $this->parents = []; 46 | } 47 | 48 | public function addParent(self $parent): void 49 | { 50 | $this->parents[] = $parent; 51 | } 52 | 53 | public function getFirstParent(): ?self 54 | { 55 | return $this->parents[0] ?? null; 56 | } 57 | 58 | public function isCommit(): bool 59 | { 60 | return false; 61 | } 62 | 63 | public function isTree(): bool 64 | { 65 | return false; 66 | } 67 | 68 | public function isBlob(): bool 69 | { 70 | return false; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/SCM/Repository.php: -------------------------------------------------------------------------------- 1 | path; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/SCM/Symlink.php: -------------------------------------------------------------------------------- 1 | target; 14 | } 15 | 16 | public function setTarget(string $target): void 17 | { 18 | $this->target = $target; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/SCM/System.php: -------------------------------------------------------------------------------- 1 | repository; 22 | } 23 | 24 | public function getName(): string 25 | { 26 | return $this->name; 27 | } 28 | 29 | public function getSubject() 30 | { 31 | return $this->subject; 32 | } 33 | 34 | public function setSubject(string $subject): void 35 | { 36 | $this->subject = $subject; 37 | } 38 | 39 | public function getTarget(): ?Commit 40 | { 41 | return $this->target; 42 | } 43 | 44 | public function setTarget(Commit $target): void 45 | { 46 | $this->target = $target; 47 | } 48 | 49 | public function getAuthor(): Person 50 | { 51 | return $this->author; 52 | } 53 | 54 | public function getAuthoredAt(): CarbonInterface 55 | { 56 | return $this->authoredAt; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/SCM/Tree.php: -------------------------------------------------------------------------------- 1 | addParent($this); 19 | $this->children[] = $child; 20 | } 21 | 22 | public function removeChild(Item $childToRemove): void 23 | { 24 | foreach ($this->children as $key => $child) { 25 | if ($child === $childToRemove) { 26 | unset($this->children[$key]); 27 | } 28 | } 29 | 30 | $this->children = array_values($this->children); 31 | $childToRemove->clearParents(); 32 | } 33 | 34 | public function getChildren(): array 35 | { 36 | return $this->children; 37 | } 38 | 39 | public function hasChildren(): bool 40 | { 41 | return !empty($this->children); 42 | } 43 | 44 | public function isChild(): bool 45 | { 46 | return !empty($this->parents); 47 | } 48 | 49 | public function isRoot(): bool 50 | { 51 | return empty($this->parents); 52 | } 53 | 54 | public function isLeaf(): bool 55 | { 56 | return empty($this->children); 57 | } 58 | 59 | public function getName(): ?string 60 | { 61 | return $this->name; 62 | } 63 | 64 | public function setName(string $name): void 65 | { 66 | $this->name = $name; 67 | } 68 | 69 | public function getFileName(): ?string 70 | { 71 | return basename($this->name ?? ''); 72 | } 73 | 74 | public function getMode(): ?string 75 | { 76 | return $this->mode; 77 | } 78 | 79 | public function setMode(string $mode): void 80 | { 81 | $this->mode = $mode; 82 | } 83 | 84 | public function getReadme(): ?Blob 85 | { 86 | foreach ($this->children as $child) { 87 | if (!($child instanceof Blob)) { 88 | continue; 89 | } 90 | 91 | if ($child->isReadme()) { 92 | return $child; 93 | } 94 | } 95 | 96 | return null; 97 | } 98 | 99 | public function isCommit(): bool 100 | { 101 | return false; 102 | } 103 | 104 | public function isTree(): bool 105 | { 106 | return true; 107 | } 108 | 109 | public function isBlob(): bool 110 | { 111 | return false; 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /tests/cypress/integration/blame.spec.js: -------------------------------------------------------------------------------- 1 | describe('Blame page', () => { 2 | it('view file blame', () => { 3 | cy.visit('/git-bare-repo/blame/a003d30bc7a355f55bf28479e62134186bae1aed/mm/cma.c'); 4 | 5 | cy.get('.breadcrumb > .active').should('have.text', '\n cma.c\n '); 6 | cy.get(':nth-child(1) > .col-3 > a').should('have.text', '\n Added mm.\n '); 7 | cy.get(':nth-child(2) > .col-3 > a').should('have.text', '\n Fixed mm.\n '); 8 | }); 9 | }); 10 | -------------------------------------------------------------------------------- /tests/cypress/integration/branches.spec.js: -------------------------------------------------------------------------------- 1 | describe('Repository branches page', () => { 2 | it('successfully loads', () => { 3 | cy.visit('/git-bare-repo/branches'); 4 | 5 | cy.get('.card-header').should('have.text', '\n Remote branches\n '); 6 | cy.get(':nth-child(2) > h5 > a').should('have.text', '\n master\n '); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /tests/cypress/integration/commits.spec.js: -------------------------------------------------------------------------------- 1 | describe('Repository commits page', () => { 2 | it('successfully loads', () => { 3 | cy.visit('/git-bare-repo/commits/master'); 4 | 5 | cy.get('.me-auto > [href="/git-bare-repo/commit/b064e711b341b3d160288cd121caf56811ca8991"]').should('have.text', 'Initial commit.'); 6 | }); 7 | 8 | it('view specific commit', () => { 9 | cy.visit('/git-bare-repo/commit/a003d30bc7a355f55bf28479e62134186bae1aed'); 10 | 11 | cy.get('.card-text').should('have.text', '\n Klaus Silveira commited on 2016-11-24 12:30:04\n Showing 1 changed files, with 44 additions and 173 deletions.\n '); 12 | cy.get(':nth-child(5) > .line > .delete').should('have.text', '-#define CREATE_TRACE_POINTS'); 13 | }); 14 | 15 | it('view parent commit', () => { 16 | cy.visit('/git-bare-repo/commit/a003d30bc7a355f55bf28479e62134186bae1aed'); 17 | 18 | cy.get(':nth-child(1) > .col-12 > .card > .card-header > .btn-group > .btn').click(); 19 | cy.get(':nth-child(1) > .col-12 > .card > .card-header').should('have.text', '\n Added mm.\n\n \n \n Parent 85e6568\n \n \n '); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /tests/cypress/integration/history.spec.js: -------------------------------------------------------------------------------- 1 | describe('History page', () => { 2 | it('view file history', () => { 3 | cy.visit('/git-bare-repo/history/a003d30bc7a355f55bf28479e62134186bae1aed/mm/cma.c'); 4 | 5 | cy.get('.breadcrumb > .active').should('have.text', '\n cma.c\n '); 6 | cy.get('.card-header').should('have.text', '\n November 24, 2016\n '); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /tests/cypress/integration/repository.spec.js: -------------------------------------------------------------------------------- 1 | describe('Repository page', () => { 2 | it('successfully loads', () => { 3 | cy.visit('/git-bare-repo'); 4 | 5 | cy.get('.card-body > .nav > :nth-child(1) > .nav-link').should('have.text', ' 2 Branches'); 6 | cy.get('.card-body > .nav > :nth-child(2) > .nav-link').should('have.text', ' 1 Tags'); 7 | cy.get('.card-header > :nth-child(1)').should('have.text', '\n \n Klaus Silveira\n Fixed mm.\n '); 8 | cy.get('.float-right').should('have.text', '\n a003d30 @ 2016-11-24 12:30:04\n '); 9 | }); 10 | 11 | it('shows branch dropdown', () => { 12 | cy.visit('/git-bare-repo'); 13 | 14 | cy.get('.dropdown > .btn').click(); 15 | cy.get('[href="/git-bare-repo/tree/feature/1.2-dev/"]').should('have.text', 'feature/1.2-dev'); 16 | }); 17 | 18 | it('shows reflist dropdown', () => { 19 | cy.visit('/git-bare-repo'); 20 | 21 | cy.get('.dropdown > .btn').click(); 22 | cy.get('[href="/git-bare-repo/tree/feature/1.2-dev/"]').should('have.text', 'feature/1.2-dev'); 23 | cy.get('#tags-tab').click(); 24 | cy.get('#tags > .list-group > .list-group-item').should('have.text', '1.2'); 25 | }); 26 | 27 | it('shows reflist dropdown and autocompletes', () => { 28 | cy.visit('/git-bare-repo'); 29 | 30 | cy.get('.dropdown > .btn').click(); 31 | cy.get('.dropdown-menu > .input-group > .form-control').clear(); 32 | cy.get('.dropdown-menu > .input-group > .form-control').type('feature/1.2-dev'); 33 | cy.get('h1').should('be.visible'); 34 | cy.url().should('be.equal', 'http://0.0.0.0:8880/git-bare-repo/tree/feature/1.2-dev/') 35 | }); 36 | 37 | it('swaps clone url', () => { 38 | cy.visit('/git-bare-repo'); 39 | 40 | cy.get('.input-group-prepend > .btn').click(); 41 | cy.get('[data-clone-url="https://gitlist.org/git-bare-repo.git"]').click(); 42 | cy.get('.btn-toolbar > .input-group > .form-control').should('have.value', 'https://gitlist.org/git-bare-repo.git'); 43 | cy.get('.input-group-prepend > .btn').click(); 44 | cy.get('[data-clone-url="git@gitlist.org:git-bare-repo.git"]').click(); 45 | cy.get('.btn-toolbar > .input-group > .form-control').should('have.value', 'git@gitlist.org:git-bare-repo.git'); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /tests/cypress/integration/repository_list.spec.js: -------------------------------------------------------------------------------- 1 | describe('Repository list page', () => { 2 | it('successfully loads', () => { 3 | cy.visit('/'); 4 | cy.get('.card-header').should('contain', 'git-bare-repo'); 5 | cy.get('.card-body').should('contain', 'foobar'); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /tests/cypress/integration/search.spec.js: -------------------------------------------------------------------------------- 1 | describe('Repository search', () => { 2 | it('successfully searches', () => { 3 | cy.visit('/git-bare-repo/search/commits/master'); 4 | 5 | cy.get('#criteria_message').clear(); 6 | cy.get('#criteria_message').type('mm'); 7 | cy.get('#criteria_submit').click(); 8 | cy.get('.me-auto > [href="/git-bare-repo/commit/a003d30bc7a355f55bf28479e62134186bae1aed"]').should('have.text', 'Fixed mm.'); 9 | cy.get('.me-auto > [href="/git-bare-repo/commit/5570c142146e430b7356a84175f281ab2a364d48"]').should('have.text', 'Added mm.'); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /tests/cypress/integration/tags.spec.js: -------------------------------------------------------------------------------- 1 | describe('Repository tags page', () => { 2 | it('successfully loads', () => { 3 | cy.visit('/git-bare-repo/tags'); 4 | 5 | cy.get('.card-header').should('have.text', '\n Remote tags\n '); 6 | cy.get('h5 > a').should('have.text', '\n 1.2\n '); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /tests/cypress/integration/tree.spec.js: -------------------------------------------------------------------------------- 1 | describe('Tree navigation', () => { 2 | it('showing sub-tree and file', () => { 3 | cy.visit('/git-bare-repo'); 4 | 5 | cy.get(':nth-child(1) > .tree-filename > .tree-truncate > a').click(); 6 | cy.get(':nth-child(2) > .tree-filename > .tree-truncate > a').click(); 7 | cy.get('h5').should('have.text', 'Fixed mm.'); 8 | cy.get('.breadcrumb > .active').should('have.text', '\n cma.c\n '); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/master 2 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = true 5 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/description: -------------------------------------------------------------------------------- 1 | foobar 2 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/hooks/applypatch-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message taken by 4 | # applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. The hook is 8 | # allowed to edit the commit message file. 9 | # 10 | # To enable this hook, rename this file to "applypatch-msg". 11 | 12 | . git-sh-setup 13 | commitmsg="$(git rev-parse --git-path hooks/commit-msg)" 14 | test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} 15 | : 16 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/hooks/commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message. 4 | # Called by "git commit" with one argument, the name of the file 5 | # that has the commit message. The hook should exit with non-zero 6 | # status after issuing an appropriate message if it wants to stop the 7 | # commit. The hook is allowed to edit the commit message file. 8 | # 9 | # To enable this hook, rename this file to "commit-msg". 10 | 11 | # Uncomment the below to add a Signed-off-by line to the message. 12 | # Doing this in a hook is a bad idea in general, but the prepare-commit-msg 13 | # hook is more suited to it. 14 | # 15 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 16 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 17 | 18 | # This example catches duplicate Signed-off-by lines. 19 | 20 | test "" = "$(grep '^Signed-off-by: ' "$1" | 21 | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { 22 | echo >&2 Duplicate Signed-off-by lines. 23 | exit 1 24 | } 25 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/hooks/pre-applypatch.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed 4 | # by applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. 8 | # 9 | # To enable this hook, rename this file to "pre-applypatch". 10 | 11 | . git-sh-setup 12 | precommit="$(git rev-parse --git-path hooks/pre-commit)" 13 | test -x "$precommit" && exec "$precommit" ${1+"$@"} 14 | : 15 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/hooks/pre-commit.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed. 4 | # Called by "git commit" with no arguments. The hook should 5 | # exit with non-zero status after issuing an appropriate message if 6 | # it wants to stop the commit. 7 | # 8 | # To enable this hook, rename this file to "pre-commit". 9 | 10 | if git rev-parse --verify HEAD >/dev/null 2>&1 11 | then 12 | against=HEAD 13 | else 14 | # Initial commit: diff against an empty tree object 15 | against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 16 | fi 17 | 18 | # If you want to allow non-ASCII filenames set this variable to true. 19 | allownonascii=$(git config --bool hooks.allownonascii) 20 | 21 | # Redirect output to stderr. 22 | exec 1>&2 23 | 24 | # Cross platform projects tend to avoid non-ASCII filenames; prevent 25 | # them from being added to the repository. We exploit the fact that the 26 | # printable range starts at the space character and ends with tilde. 27 | if [ "$allownonascii" != "true" ] && 28 | # Note that the use of brackets around a tr range is ok here, (it's 29 | # even required, for portability to Solaris 10's /usr/bin/tr), since 30 | # the square bracket bytes happen to fall in the designated range. 31 | test $(git diff --cached --name-only --diff-filter=A -z $against | 32 | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 33 | then 34 | cat <<\EOF 35 | Error: Attempt to add a non-ASCII file name. 36 | 37 | This can cause problems if you want to work with people on other platforms. 38 | 39 | To be portable it is advisable to rename the file. 40 | 41 | If you know what you are doing you can disable this check using: 42 | 43 | git config hooks.allownonascii true 44 | EOF 45 | exit 1 46 | fi 47 | 48 | # If there are whitespace errors, print the offending file names and fail. 49 | exec git diff-index --check --cached $against -- 50 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/hooks/pre-push.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # An example hook script to verify what is about to be pushed. Called by "git 4 | # push" after it has checked the remote status, but before anything has been 5 | # pushed. If this script exits with a non-zero status nothing will be pushed. 6 | # 7 | # This hook is called with the following parameters: 8 | # 9 | # $1 -- Name of the remote to which the push is being done 10 | # $2 -- URL to which the push is being done 11 | # 12 | # If pushing without using a named remote those arguments will be equal. 13 | # 14 | # Information about the commits which are being pushed is supplied as lines to 15 | # the standard input in the form: 16 | # 17 | # 18 | # 19 | # This sample shows how to prevent push of commits where the log message starts 20 | # with "WIP" (work in progress). 21 | 22 | remote="$1" 23 | url="$2" 24 | 25 | z40=0000000000000000000000000000000000000000 26 | 27 | while read local_ref local_sha remote_ref remote_sha 28 | do 29 | if [ "$local_sha" = $z40 ] 30 | then 31 | # Handle delete 32 | : 33 | else 34 | if [ "$remote_sha" = $z40 ] 35 | then 36 | # New branch, examine all commits 37 | range="$local_sha" 38 | else 39 | # Update to existing branch, examine new commits 40 | range="$remote_sha..$local_sha" 41 | fi 42 | 43 | # Check for WIP commit 44 | commit=`git rev-list -n 1 --grep '^WIP' "$range"` 45 | if [ -n "$commit" ] 46 | then 47 | echo >&2 "Found WIP commit in $local_ref, not pushing" 48 | exit 1 49 | fi 50 | fi 51 | done 52 | 53 | exit 0 54 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/hooks/pre-receive.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to make use of push options. 4 | # The example simply echoes all push options that start with 'echoback=' 5 | # and rejects all pushes when the "reject" push option is used. 6 | # 7 | # To enable this hook, rename this file to "pre-receive". 8 | 9 | if test -n "$GIT_PUSH_OPTION_COUNT" 10 | then 11 | i=0 12 | while test "$i" -lt "$GIT_PUSH_OPTION_COUNT" 13 | do 14 | eval "value=\$GIT_PUSH_OPTION_$i" 15 | case "$value" in 16 | echoback=*) 17 | echo "echo from the pre-receive-hook: ${value#*=}" >&2 18 | ;; 19 | reject) 20 | exit 1 21 | esac 22 | i=$((i + 1)) 23 | done 24 | fi 25 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/hooks/prepare-commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare the commit log message. 4 | # Called by "git commit" with the name of the file that has the 5 | # commit message, followed by the description of the commit 6 | # message's source. The hook's purpose is to edit the commit 7 | # message file. If the hook fails with a non-zero status, 8 | # the commit is aborted. 9 | # 10 | # To enable this hook, rename this file to "prepare-commit-msg". 11 | 12 | # This hook includes three examples. The first comments out the 13 | # "Conflicts:" part of a merge commit. 14 | # 15 | # The second includes the output of "git diff --name-status -r" 16 | # into the message, just before the "git status" output. It is 17 | # commented because it doesn't cope with --amend or with squashed 18 | # commits. 19 | # 20 | # The third example adds a Signed-off-by line to the message, that can 21 | # still be edited. This is rarely a good idea. 22 | 23 | case "$2,$3" in 24 | merge,) 25 | /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; 26 | 27 | # ,|template,) 28 | # /usr/bin/perl -i.bak -pe ' 29 | # print "\n" . `git diff --cached --name-status -r` 30 | # if /^#/ && $first++ == 0' "$1" ;; 31 | 32 | *) ;; 33 | esac 34 | 35 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 36 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 37 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/0e/3ddf0c6d39e7a300bef61b99a914a86ce5e267: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/0e/3ddf0c6d39e7a300bef61b99a914a86ce5e267 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/17/c75a4246c8bbab8b56fe4d562cd85ea670a21f: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/17/c75a4246c8bbab8b56fe4d562cd85ea670a21f -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/29/0863292f509e947f62efed0b9cb6eac9b9ecb9: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/29/0863292f509e947f62efed0b9cb6eac9b9ecb9 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/2d/b0c88706accdb2d0ceb938a68be150759f17c0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/2d/b0c88706accdb2d0ceb938a68be150759f17c0 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/35/7b1952da98491dd01c31bfe7882bc6ae21eaf7: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/35/7b1952da98491dd01c31bfe7882bc6ae21eaf7 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/41/ab8cf8762f94ab56254925710c2b967a353fee: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/41/ab8cf8762f94ab56254925710c2b967a353fee -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/55/70c142146e430b7356a84175f281ab2a364d48: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/55/70c142146e430b7356a84175f281ab2a364d48 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/58/c37915623ec76e854a54dcfc12b19a060f6bda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/58/c37915623ec76e854a54dcfc12b19a060f6bda -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/59/5019ca2e1bfab6711424c8567af364ec3cc319: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/59/5019ca2e1bfab6711424c8567af364ec3cc319 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/6a/cefd912439ce7f9b03ae3dc2ce0eaf30104206: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/6a/cefd912439ce7f9b03ae3dc2ce0eaf30104206 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/6d/9590305133e750ac8ebfcf9d652ca96f446819: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/6d/9590305133e750ac8ebfcf9d652ca96f446819 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/75/6b07d2549cd6eb8f35fbe333c80a28d97096e3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/75/6b07d2549cd6eb8f35fbe333c80a28d97096e3 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/82/4b0a91e944a6217e473c2eec510cf694a2c4b7: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/82/4b0a91e944a6217e473c2eec510cf694a2c4b7 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/85/9f67f18fc4522a4da5b784bce6cb9ada034a16: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/85/9f67f18fc4522a4da5b784bce6cb9ada034a16 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/85/e656875f18b1985dd71dccaffe3eeffd6abf6f: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/85/e656875f18b1985dd71dccaffe3eeffd6abf6f -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/9c/69996c1e01618709dacd99bcd129a3bcde290c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/9c/69996c1e01618709dacd99bcd129a3bcde290c -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/9d/78a8cbc59caa98aebaf4ca9d6ee63cca241c4d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/9d/78a8cbc59caa98aebaf4ca9d6ee63cca241c4d -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/a0/03d30bc7a355f55bf28479e62134186bae1aed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/a0/03d30bc7a355f55bf28479e62134186bae1aed -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/b0/64e711b341b3d160288cd121caf56811ca8991: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/b0/64e711b341b3d160288cd121caf56811ca8991 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/c1/7751c0dcafb95eda9f41e9cdc9ce101edbebed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/c1/7751c0dcafb95eda9f41e9cdc9ce101edbebed -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/c3/23e7368bd5da960547f53b25596f7b43a2d3d9: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/c3/23e7368bd5da960547f53b25596f7b43a2d3d9 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/c4/1563a39a03723f1fa122a4309c3dc9a185a858: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/c4/1563a39a03723f1fa122a4309c3dc9a185a858 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/c9/60459eda7e640ea55be1d4ed80c6a9125a8877: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/c9/60459eda7e640ea55be1d4ed80c6a9125a8877 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/ec/587c3ebbaf491605d24a0b1d42e6de7dc26372: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/ec/587c3ebbaf491605d24a0b1d42e6de7dc26372 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/objects/ff/6accf4931975aa697ea40f7b6d22af23ec77a2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/git-bare-repo/objects/ff/6accf4931975aa697ea40f7b6d22af23ec77a2 -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/refs/heads/feature/1.2-dev: -------------------------------------------------------------------------------- 1 | 859f67f18fc4522a4da5b784bce6cb9ada034a16 2 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/refs/heads/master: -------------------------------------------------------------------------------- 1 | a003d30bc7a355f55bf28479e62134186bae1aed 2 | -------------------------------------------------------------------------------- /tests/fixtures/git-bare-repo/refs/tags/1.2: -------------------------------------------------------------------------------- 1 | ec587c3ebbaf491605d24a0b1d42e6de7dc26372 2 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/00changelog.i: -------------------------------------------------------------------------------- 1 |  dummy changelog to prevent using the old repo layout -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/bookmarks: -------------------------------------------------------------------------------- 1 | 5ea48553c4dfbba5ee51189bb5a145f75db4b425 master 2 | 7bc72b056e7c13b3d7a2f8fdb2d3fbb5556a7ec2 feature/1.2-dev 3 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/branch: -------------------------------------------------------------------------------- 1 | default 2 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/cache/branch2-served: -------------------------------------------------------------------------------- 1 | 5ea48553c4dfbba5ee51189bb5a145f75db4b425 7 2 | 7bc72b056e7c13b3d7a2f8fdb2d3fbb5556a7ec2 o default 3 | 5ea48553c4dfbba5ee51189bb5a145f75db4b425 o default 4 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/cache/checkisexec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/cache/checkisexec -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/cache/checklink: -------------------------------------------------------------------------------- 1 | checklink-target -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/cache/checklink-target: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/cache/checklink-target -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/cache/checknoexec: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/cache/checknoexec -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/cache/hgtagsfnodes1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/cache/hgtagsfnodes1 -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/cache/rbc-names-v1: -------------------------------------------------------------------------------- 1 | default -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/cache/rbc-revs-v1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/cache/rbc-revs-v1 -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/cache/tags2-visible: -------------------------------------------------------------------------------- 1 | 7 5ea48553c4dfbba5ee51189bb5a145f75db4b425 2 | 8acbca7fcefa3029c29d6a3eb4a676e607a73c81 1.2 3 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/dirstate: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/hgrc: -------------------------------------------------------------------------------- 1 | description = "foobar" 2 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/requires: -------------------------------------------------------------------------------- 1 | dotencode 2 | fncache 3 | generaldelta 4 | revlogv1 5 | store 6 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/shamap: -------------------------------------------------------------------------------- 1 | b064e711b341b3d160288cd121caf56811ca8991 e88dc2aa0e74b10445f92de34d2a61d274a919fe 2 | 0e3ddf0c6d39e7a300bef61b99a914a86ce5e267 bf6c7defa0f269df1389cef460c98ea18e007a8d 3 | 9d78a8cbc59caa98aebaf4ca9d6ee63cca241c4d 8acbca7fcefa3029c29d6a3eb4a676e607a73c81 4 | 859f67f18fc4522a4da5b784bce6cb9ada034a16 7bc72b056e7c13b3d7a2f8fdb2d3fbb5556a7ec2 5 | 85e656875f18b1985dd71dccaffe3eeffd6abf6f 828cda676385bf21433a1c313c1b3bb84ef87232 6 | 5570c142146e430b7356a84175f281ab2a364d48 4447d3262dcd2ec2a122813ae6dcb64b4941a305 7 | a003d30bc7a355f55bf28479e62134186bae1aed d471ea0b4d78d5296f7c266161ba79f1f0be4927 8 | a003d30bc7a355f55bf28479e62134186bae1aed 5ea48553c4dfbba5ee51189bb5a145f75db4b425 9 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/00changelog.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/00changelog.i -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/00manifest.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/00manifest.i -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/data/mm/cma.c.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/data/mm/cma.c.i -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/data/mm/cma.h.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/data/mm/cma.h.i -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/data/new.json.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/data/new.json.i -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/data/old.json.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/data/old.json.i -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/data/src/index.php.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/data/src/index.php.i -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/data/src/test.php.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/data/src/test.php.i -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/data/test.json.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/data/test.json.i -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/data/~2ehgtags.i: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/data/~2ehgtags.i -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/fncache: -------------------------------------------------------------------------------- 1 | data/mm/cma.h.i 2 | data/src/test.php.i 3 | data/src/index.php.i 4 | data/new.json.i 5 | data/old.json.i 6 | data/.hgtags.i 7 | data/mm/cma.c.i 8 | data/test.json.i 9 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/phaseroots: -------------------------------------------------------------------------------- 1 | 1 e88dc2aa0e74b10445f92de34d2a61d274a919fe 2 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/undo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/store/undo -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/undo.backup.fncache: -------------------------------------------------------------------------------- 1 | data/mm/cma.h.i 2 | data/src/test.php.i 3 | data/src/index.php.i 4 | data/new.json.i 5 | data/old.json.i 6 | data/mm/cma.c.i 7 | data/test.json.i 8 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/undo.backupfiles: -------------------------------------------------------------------------------- 1 | 2 2 | plainbookmarks0 3 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/store/undo.phaseroots: -------------------------------------------------------------------------------- 1 | 1 e88dc2aa0e74b10445f92de34d2a61d274a919fe 2 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/undo.bookmarks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/klaussilveira/gitlist/30d69a631d80ff7952b5f4ed504895632dfcd4ce/tests/fixtures/hg-repo/.hg/undo.bookmarks -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/undo.branch: -------------------------------------------------------------------------------- 1 | default -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/undo.desc: -------------------------------------------------------------------------------- 1 | 8 2 | bookmark 3 | -------------------------------------------------------------------------------- /tests/fixtures/hg-repo/.hg/undo.dirstate: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/unit/App/Form/CriteriaTypeTest.php: -------------------------------------------------------------------------------- 1 | '2021-12-28T00:00', 17 | 'to' => '2021-12-28T00:00', 18 | 'author' => 'Foo', 19 | 'message' => 'foobar', 20 | ]; 21 | 22 | $actual = new Criteria(); 23 | 24 | $expected = new Criteria(); 25 | $expected->setFrom(new DateTime('2021-12-28T00:00')); 26 | $expected->setTo(new DateTime('2021-12-28T00:00')); 27 | $expected->setAuthor('Foo'); 28 | $expected->setMessage('foobar'); 29 | 30 | $form = $this->factory->create(CriteriaType::class, $actual); 31 | $form->submit($input); 32 | 33 | $this->assertTrue($form->isSynchronized()); 34 | $this->assertTrue($form->isValid()); 35 | $this->assertEquals($expected, $actual); 36 | } 37 | 38 | public function testIsValidatingDates(): void 39 | { 40 | $input = [ 41 | 'from' => '88888-12-2800:00', 42 | 'author' => 'Foo', 43 | ]; 44 | 45 | $actual = new Criteria(); 46 | 47 | $form = $this->factory->create(CriteriaType::class, $actual); 48 | $form->submit($input); 49 | 50 | $this->assertTrue($form->isSynchronized()); 51 | $this->assertFalse($form->isValid()); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /tests/unit/App/Twig/AvatarExtensionTest.php: -------------------------------------------------------------------------------- 1 | getAvatar('foo@bar.com'); 15 | $this->assertEquals('//gravatar.com/avatar/f3ada405ce890b6f8204094deb12d8a8?s=60', $avatar); 16 | } 17 | 18 | public function testIsGettingAvatarWithCustomConfig(): void 19 | { 20 | $extension = new AvatarExtension('//gravatar.com/avatar', ['a' => 'b']); 21 | $avatar = $extension->getAvatar('foo@bar.com'); 22 | $this->assertEquals('//gravatar.com/avatar/f3ada405ce890b6f8204094deb12d8a8?s=60&a=b', $avatar); 23 | } 24 | 25 | public function testIsNotGettingAvatarWithoutEmail(): void 26 | { 27 | $extension = new AvatarExtension('//gravatar.com/avatar'); 28 | $avatar = $extension->getAvatar(''); 29 | $this->assertEmpty($avatar); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /tests/unit/App/Twig/DateTimeExtensionTest.php: -------------------------------------------------------------------------------- 1 | assertEquals('9 years ago', $extension->ago($date)); 31 | } 32 | 33 | public function testIsGettingLocalizedTimeAgo(): void 34 | { 35 | $date = new Carbon('2012-01-01 12:00:00'); 36 | $extension = new DateTimeExtension('pt_BR'); 37 | $this->assertEquals('há 9 anos', $extension->ago($date)); 38 | } 39 | 40 | public function testIsConvertingDateTime(): void 41 | { 42 | $date = new DateTime('2012-01-01 12:00:00'); 43 | $extension = new DateTimeExtension(); 44 | $this->assertEquals('9 years ago', $extension->ago($date)); 45 | } 46 | 47 | public function testIsConvertingDateTimeImmutable(): void 48 | { 49 | $date = new DateTimeImmutable('2012-01-01 12:00:00'); 50 | $extension = new DateTimeExtension(); 51 | $this->assertEquals('9 years ago', $extension->ago($date)); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /tests/unit/App/Twig/RepositoryExtensionTest.php: -------------------------------------------------------------------------------- 1 | assertFalse($extension->isTree(false)); 17 | $this->assertTrue($extension->isTree(new Tree(new Repository('foo'), '123'))); 18 | } 19 | 20 | public function testIsFormattingFileSizeWithInvalidInput(): void 21 | { 22 | $extension = new RepositoryExtension(); 23 | $this->assertEquals('0 B', $extension->formatFileSize(false)); 24 | $this->assertEquals('0 B', $extension->formatFileSize(null)); 25 | $this->assertEquals('0 B', $extension->formatFileSize()); 26 | } 27 | 28 | public function testIsFormattingFileSize(): void 29 | { 30 | $extension = new RepositoryExtension(); 31 | $this->assertEquals('200 B', $extension->formatFileSize(200)); 32 | $this->assertEquals('19.53 KB', $extension->formatFileSize(20000)); 33 | $this->assertEquals('4.35 MB', $extension->formatFileSize(4_560_000)); 34 | } 35 | 36 | public function testIsGettingCommitish(): void 37 | { 38 | $extension = new RepositoryExtension(); 39 | $this->assertEquals('master/foo.php', $extension->getCommitish('master', 'foo.php')); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /tests/unit/App/Twig/StringExtensionTest.php: -------------------------------------------------------------------------------- 1 | assertEquals($expected, $extension->truncate($string, $length, $ellipsis, $cut)); 18 | } 19 | 20 | public static function provideTruncateFixtures() 21 | { 22 | return [ 23 | ['', '', 3, ''], 24 | ['', 'foo', 0, '...'], 25 | ['foo', 'foo', 0, '...', false], 26 | ['fo', 'foobar', 2, ''], 27 | ['foobar', 'foobar', 10, ''], 28 | ['foobar', 'foobar', 10, '...', false], 29 | ['foo', 'foo', 3, '...'], 30 | ['fo', 'foobar', 2, '...'], 31 | ['...', 'foobar', 3, '...'], 32 | ['fo...', 'foobar', 5, '...'], 33 | ['foobar...', 'foobar foo', 6, '...', false], 34 | ['foobar...', 'foobar foo', 7, '...', false], 35 | ['foobar foo...', 'foobar foo a', 10, '...', false], 36 | ['foobar foo aar', 'foobar foo aar', 12, '...', false], 37 | ]; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /tests/unit/SCM/BlobTest.php: -------------------------------------------------------------------------------- 1 | setName('/var/foo/bar.c'); 15 | $this->assertEquals('/var/foo/bar.c', $blob->getName()); 16 | $this->assertEquals('bar.c', $blob->getFileName()); 17 | } 18 | 19 | public function testIsDetectingReadme(): void 20 | { 21 | $blob = new Blob(new Repository('/my/repo'), sha1((string) random_int(0, mt_getrandmax()))); 22 | 23 | $blob->setName('/var/foo/README.md'); 24 | $this->assertTrue($blob->isReadme()); 25 | 26 | $blob->setName('/var/foo/ReaDME.MD'); 27 | $this->assertTrue($blob->isReadme()); 28 | 29 | $blob->setName('/var/foo/README.c'); 30 | $this->assertFalse($blob->isReadme()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tests/unit/SCM/CommitTest.php: -------------------------------------------------------------------------------- 1 | increaseAdditions(); 16 | $fileA->increaseAdditions(); 17 | 18 | $fileB = new File('bar.php'); 19 | $fileB->increaseAdditions(); 20 | $fileB->increaseDeletions(); 21 | 22 | $commit = new Commit(new Repository('/my/repo'), sha1((string) random_int(0, mt_getrandmax()))); 23 | $commit->addDiff($fileA); 24 | $commit->addDiff($fileB); 25 | 26 | $this->assertEquals(3, $commit->getAdditions()); 27 | $this->assertEquals(1, $commit->getDeletions()); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /tests/unit/SCM/ItemTest.php: -------------------------------------------------------------------------------- 1 | addParent($firstParent); 18 | $object->addParent($secondParent); 19 | 20 | $this->assertEquals($firstParent, $object->getFirstParent()); 21 | } 22 | 23 | public function testIsClearingParents(): void 24 | { 25 | $firstParent = new Item(new Repository('/my/repo'), sha1((string) random_int(0, mt_getrandmax()))); 26 | $secondParent = new Item(new Repository('/my/repo'), sha1((string) random_int(0, mt_getrandmax()))); 27 | 28 | $object = new Item(new Repository('/my/repo'), sha1((string) random_int(0, mt_getrandmax()))); 29 | $object->addParent($firstParent); 30 | $object->addParent($secondParent); 31 | $object->clearParents(); 32 | 33 | $this->assertEmpty($object->getParents()); 34 | $this->assertNull($object->getFirstParent()); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /tests/unit/SCM/LanguageTest.php: -------------------------------------------------------------------------------- 1 | assertEquals('PHP', $language->getName()); 15 | $this->assertNull($language->getGroup()); 16 | $this->assertEquals('#4F5D95', $language->getColor()); 17 | $this->assertEquals('php', $language->getAceMode()); 18 | $this->assertEquals('php', $language->getCodeMirrorMode()); 19 | } 20 | 21 | public function testIsCreatingUnknown(): void 22 | { 23 | $language = new Language('foobarbaz'); 24 | $this->assertEquals('Unknown', $language->getName()); 25 | $this->assertNull($language->getGroup()); 26 | $this->assertNull($language->getColor()); 27 | $this->assertEquals('text', $language->getAceMode()); 28 | $this->assertNull($language->getCodeMirrorMode()); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const encore = require('@symfony/webpack-encore'); 2 | const webpack = require('webpack'); 3 | const { readdirSync, statSync } = require('fs'); 4 | const { join } = require('path'); 5 | 6 | const getDirectories = path => readdirSync(path).filter( 7 | folder => statSync(join(path, folder)).isDirectory() 8 | ); 9 | 10 | const themes = getDirectories('./assets/themes/'); 11 | const viewers = getDirectories('./assets/viewers/'); 12 | 13 | encore 14 | .setOutputPath('public/assets/') 15 | .setPublicPath('/assets') 16 | .cleanupOutputBeforeBuild() 17 | .disableSingleRuntimeChunk() 18 | .enableSourceMaps(!encore.isProduction()) 19 | .enableSassLoader() 20 | .enablePostCssLoader() 21 | ; 22 | 23 | for (const theme of themes) { 24 | encore.addStyleEntry(theme + '/css/main', './assets/themes/' + theme + '/assets/scss/main.scss'); 25 | encore.addEntry(theme + '/js/main', './assets/themes/' + theme + '/assets/js/main.js'); 26 | } 27 | 28 | for (const viewer of viewers) { 29 | encore.addStyleEntry(viewer + '/css/main', './assets/viewers/' + viewer + '/main.scss'); 30 | encore.addEntry(viewer + '/js/main', './assets/viewers/' + viewer + '/main.js'); 31 | } 32 | 33 | module.exports = encore.getWebpackConfig(); 34 | --------------------------------------------------------------------------------