diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eddb6441..fa2771ab 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,9 +38,18 @@ jobs: runs-on: ubuntu-latest container: # image: bilelmoussaoui/flatpak-github-actions:kde-5.15-21.08 - image: exactlyonekas/gittyup-flatpak-builder:latest + image: archlinux:latest options: --privileged steps: + + - name: Update + run: | + pacman --noconfirm -Suy + pacman --noconfirm -S flatpak flatpak-builder xorg-server-xvfb + flatpak install --assumeyes org.kde.Sdk//5.15-21.08 + flatpak install --assumeyes org.freedesktop.Sdk.Extension.golang//21.08 + flatpak install --assumeyes org.kde.Platform//5.15-21.08 + - name: Show environment variables run: > echo IS_RELEASE: ${{ env.IS_RELEASE }} @@ -67,7 +76,7 @@ jobs: - name: Replace git tag by the commit id on which it runs if: github.ref_type != 'tag' run: > - sed -i 's@tag: gittyup_v[1-9]*.[0-9]*.[0-9]*@commit: "${{ (github.event.pull_request && github.event.pull_request.head.sha) || github.sha }}"@' com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml + sed -i 's@tag: .*@commit: "${{ (github.event.pull_request && github.event.pull_request.head.sha) || github.sha }}"@' com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml - name: Use correct git tag if: github.ref_type == 'tag' @@ -88,6 +97,11 @@ jobs: run: > sed -i 's@desktop-file-name-suffix: ""@desktop-file-name-suffix: " (Development)"@' com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml + - name: Enable automatic update + if: github.ref_type != 'tag' + run: > + sed -i 's@-DENABLE_UPDATE_OVER_GUI=OFF@-DENABLE_UPDATE_OVER_GUI=ON@' com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml + - name: Show Flatpak manifest run: cat com.github.Murmele.Gittyup/com.github.Murmele.Gittyup.yml @@ -123,8 +137,11 @@ jobs: os: ubuntu-latest ninja_platform: linux qt_platform: linux + qt_arch: gcc_64 openssl_arch: linux-x86_64 - cmake_flags: "-DGENERATE_APPDATA=ON" + ld_library_arch: linux-x86-64 + cmake_flags: "-DGENERATE_APPDATA=ON -DCMAKE_INSTALL_PREFIX=/usr -DUSE_SYSTEM_QT=ON -DENABLE_UPDATE_OVER_GUI=OFF" + pack: 0 cmake_env: {} - name: macos @@ -193,7 +210,7 @@ jobs: perl-version: '5.30' - name: Install Qt - uses: jurplel/install-qt-action@v2.13.0 + uses: jurplel/install-qt-action@v3.3.0 timeout-minutes: 10 if: "!matrix.qt.check_only" with: @@ -205,7 +222,7 @@ jobs: modules: qtwebengine - name: Install Qt - uses: jurplel/install-qt-action@v2.13.0 + uses: jurplel/install-qt-action@v3.3.0 timeout-minutes: 10 if: matrix.qt.check_only with: @@ -264,7 +281,7 @@ jobs: run: | mkdir -p build/release cd build/release - cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DDEBUG_OUTPUT=OFF -DGITTYUP_CI_TESTS=ON ${{ env.CMAKE_FLAGS }} ${{ matrix.env.cmake_flags }} ../.. + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DUPDATE_TRANSLATIONS=ON -DGITTYUP_CI_TESTS=ON ${{ env.CMAKE_FLAGS }} ${{ matrix.env.cmake_flags }} ../.. - name: Build Information run: | @@ -301,15 +318,20 @@ jobs: if: matrix.env.pack && !matrix.qt.check_only uses: actions/upload-artifact@v3 with: - path: build/release/VERSION.txt + path: build/release/Version.txt name: Gittyup-VERSION + - name: Check Version file + run: | + cd build/release + cat ./Version.txt + - name: Test if: matrix.env.ninja_platform != 'win' && matrix.env.ninja_platform != 'mac' uses: GabrielBB/xvfb-action@v1 with: working-directory: build/release - run: ninja check + run: ninja check --verbose - name: Test (Windows) if: matrix.env.ninja_platform == 'win' @@ -317,6 +339,44 @@ jobs: cd build/release ninja check_no_win32_offscreen + - name: Build Appimage + if: matrix.env.ninja_platform == 'linux' && !matrix.qt.check_only + run: | + cd build/release + sudo apt -y install appstream + sudo apt -y install libfuse2 + sudo apt -y install libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 + sudo apt -y install libxcb-shm0 libxcb-sync1 libxcb-util1 libxcb-xinerama0 libxcb-xinput0 libxcb-xkb1 libxcb-xrm0 libxcb-xv0 libxcb-xvmc0 libxcb1 + + mkdir -p AppDir + DESTDIR=AppDir ninja install + + export QTDIR=$RUNNER_WORKSPACE/Qt/${{ matrix.qt.version }}/${{ matrix.env.qt_arch }} + + rm -rf ./AppDir/usr/include/ + strip ./AppDir/usr/bin/cmark ./AppDir/usr/bin/gittyup ./AppDir/usr/bin/indexer ./AppDir/usr/bin/relauncher + + wget -c https://github.com/$(wget -q https://github.com/probonopd/go-appimage/releases/expanded_assets/continuous -O - | grep "appimagetool-.*-x86_64.AppImage" | head -n 1 | cut -d '"' -f 2) + chmod +x appimagetool-*.AppImage + QTDIR=$QTDIR ./appimagetool-*.AppImage -s deploy ./AppDir/usr/share/applications/*.desktop --appimage-extract-and-run # Bundle EVERYTHING + + # Modify the AppDir: move ld-linux into the same directory as the payload application + # and change AppRun accordingly; so that, e.g., Qt qApp->applicationDirPath() works + mv ./AppDir/lib64/ld-${{ matrix.env.ld_library_arch }}.so.2 ./AppDir/usr/bin/ + sed -i -e 's@^LD_LINUX.*@LD_LINUX=$(find "$HERE/usr/bin" -name "ld-*.so.*" | head -n 1)@g' ./AppDir/AppRun + + rm ./AppDir/usr/share/metainfo/gittyup.appdata.xml + VERSION=$(cat ./Version.txt) + VERSION="$VERSION" ./appimagetool-*.AppImage ./AppDir # turn AppDir into AppImage + #ls -lh Gittyup-* + + - name: Publish Appimage + if: matrix.env.ninja_platform == 'linux' && !matrix.qt.check_only + uses: actions/upload-artifact@v3 + with: + path: build/release/*.AppImage + name: GittyupAppImage + publish: # https://github.com/marvinpinto/actions/issues/177 needs: [flatpak, build] @@ -347,7 +407,7 @@ jobs: # version is exported from cmake to file - name: Retrieve version run: | - echo "::set-output name=VERSION::$(cat artifacts/Gittyup-VERSION/VERSION.txt)" + echo "::set-output name=VERSION::$(cat artifacts/Gittyup-VERSION/Version.txt)" id: version - name: Update GitHub release (latest tag) @@ -363,6 +423,7 @@ jobs: **/artifacts/Gittyup macos/Gittyup*.dmg **/artifacts/Gittyup Flatpak/com.github.Murmele.Gittyup.yml **/Gittyup-x86_64/*.flatpak + **/artifacts/GittyupAppImage/* - name: Update GitHub release (version tag) uses: marvinpinto/action-automatic-releases@latest @@ -378,6 +439,7 @@ jobs: **/artifacts/Gittyup macos/Gittyup*.dmg **/artifacts/Gittyup Flatpak/com.github.Murmele.Gittyup.yml **/Gittyup-x86_64/*.flatpak + **/artifacts/GittyupAppImage/* # needed otherwise the docs folder is not available - name: Checkout repository diff --git a/.gitignore b/.gitignore index 1848e091..ca6f9e25 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,13 @@ build +.cache .DS_Store .project .vscode/ CMakeLists.txt.user +cmake-build-debug/ +cmake-build-release/ +build +.idea/ +.venv +compile_commands.json + diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..488bc46c --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,7 @@ +repos: +- repo: https://github.com/pre-commit/mirrors-clang-format + rev: v13.0.1 + hooks: + - id: clang-format + args: [ -i ] + diff --git a/CMakeLists.txt b/CMakeLists.txt index a1ca20d2..3b1d8f32 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,22 @@ -cmake_minimum_required(VERSION 3.6.2) +cmake_minimum_required(VERSION 3.12) project(Gittyup) # Set name and version. set(GITTYUP_NAME "Gittyup") +set(GITTYUP_EXECUTABLE_NAME "gittyup") +set(GITTYUP_IDENTIFIER "com.github.Murmele.Gittyup") set(GITTYUP_VERSION_MAJOR 1) -set(GITTYUP_VERSION_MINOR 2) -set(GITTYUP_VERSION_PATCH 1) +set(GITTYUP_VERSION_MINOR 3) +set(GITTYUP_VERSION_PATCH 0) set(GITTYUP_VERSION "${GITTYUP_VERSION_MAJOR}.${GITTYUP_VERSION_MINOR}.${GITTYUP_VERSION_PATCH}" ) +string(TIMESTAMP CURR_YEAR "%Y") +add_compile_definitions(CURR_YEAR=${CURR_YEAR}) +configure_file(${CMAKE_SOURCE_DIR}/LICENSE.md.in ${CMAKE_SOURCE_DIR}/LICENSE.md + @ONLY NEWLINE_STYLE UNIX) + # Write version to file so it can be used also from external, for example in the # github manifest file(WRITE "${CMAKE_BINARY_DIR}/Version.txt" ${GITTYUP_VERSION}) @@ -45,6 +52,7 @@ set(BUILD_SHARED_LIBS OFF) option(FLATPAK "Building for flatpak" OFF) option(DEBUG_FLATPAK "Building but using flatpak urls for testing" OFF) +option(ENABLE_UPDATE_OVER_GUI "Enable updating from the Gittyup gui" ON) option(USE_SYSTEM_OPENSSL "Use the system-wide OpenSSL installation" OFF) option( USE_SYSTEM_LIBGIT2 @@ -68,7 +76,10 @@ set(LUA_MODULES_PATH set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) -if(UNIX AND NOT APPLE) +if(HAIKU) + # qsort_r in libgit2 requires this + set(CMAKE_EXE_LINKER_FLAGS -lgnu) +elseif(UNIX AND NOT APPLE) set(CMAKE_EXE_LINKER_FLAGS -ldl) endif() @@ -86,9 +97,20 @@ if(UNIX) set(QT_MODULES ${QT_MODULES} DBus) endif() -option(DEBUG_OUTPUT "Print debug output" ON) +option(DEBUG_OUTPUT + "Print debug output (Only available if debug menu is enabled!)" ON) +option(DEBUG_OUTPUT_GENERAL "Enable general debug messages" ON) +option(DEBUG_OUTPUT_REFRESH "Enable debug messages to debug the refresh flow" + OFF) if(NOT DEBUG_OUTPUT) add_compile_definitions(QT_NO_DEBUG_OUTPUT) +else() + if(DEBUG_OUTPUT_GENERAL) + add_compile_definitions(DEBUG_OUTPUT_GENERAL) + endif() + if(DEBUG_OUTPUT_REFRESH) + add_compile_definitions(DEBUG_OUTPUT_REFRESH) + endif() endif() find_package( @@ -103,6 +125,10 @@ if(FLATPAK) add_compile_definitions(FLATPAK) endif() +if(ENABLE_UPDATE_OVER_GUI) + add_compile_definitions(ENABLE_UPDATE_OVER_GUI) +endif() + if(DEBUG_FLATPAK) add_compile_definitions(DEBUG_FLATPAK) endif() @@ -125,6 +151,18 @@ if(APPLE) endforeach() endif() +if(APPLE) + set(CONTENTS_DIR ${GITTYUP_EXECUTABLE_NAME}.app/Contents) + set(RESOURCES_DIR ${CONTENTS_DIR}/Resources) + set(L10N_INSTALL_DIR ${RESOURCES_DIR}/l10n) +elseif(UNIX) + set(L10N_INSTALL_DIR ${CMAKE_INSTALL_LOCALEDIR}/${GITTYUP_NAME}) + set(RESOURCES_DIR ${CMAKE_INSTALL_DATADIR}/${GITTYUP_NAME}) +else() + set(L10N_INSTALL_DIR Resources/l10n) + set(RESOURCES_DIR Resources) +endif() + add_subdirectory(dep) add_subdirectory(src) add_subdirectory(l10n) diff --git a/LICENSE.md b/LICENSE.md index 06c55155..76c1c167 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,7 @@ MIT License Copyright (c) 2018 Scientific Toolworks, Inc. -Copyright (c) 2021-2022 Gittyup contributors +Copyright (c) 2021-2023 Gittyup contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/LICENSE.md.in b/LICENSE.md.in new file mode 100644 index 00000000..cd7de576 --- /dev/null +++ b/LICENSE.md.in @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2018 Scientific Toolworks, Inc. +Copyright (c) 2021-@CURR_YEAR@ Gittyup contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index d1c88d0b..9d5a7c0f 100644 --- a/README.md +++ b/README.md @@ -132,8 +132,11 @@ where `` points to the Qt install directory that contains `bin`, `lib`, etc. **Build** - +``` ninja +``` + +### A Convenient Shell Script for Ubuntu is available [here](https://raw.githubusercontent.com/Murmele/Gittyup/master/pack/buildUbuntu.sh), and will install all the necessary prerequisites, and build a release version for immediate use. How to Install ----------------- @@ -177,7 +180,6 @@ function run_disown_silence(){ run_disown_silence flatpak run com.github.Murmele.Gittyup ``` - How to Contribute ----------------- @@ -192,6 +194,15 @@ branch. Create pull requests against the `master` branch. Follow the [seven guidelines](https://chris.beams.io/posts/git-commit/) to writing a great commit message. +Prior to committing a change, please use `cl-format.sh` to ensure your code +adheres to the formatting conventions for this project. You can also use the +`setup-env.sh` script to install a pre-commit hook which will automatically +run `clang-format` against all modified files. + +Prior to pushing a change, please ensure you run the unit tests to avoid any +regressions. These are found in `/test` and can be run using +`ctest`. + License ------- diff --git a/cl-fmt.sh b/cl-fmt.sh index 05922b13..dbf6bf86 100755 --- a/cl-fmt.sh +++ b/cl-fmt.sh @@ -1,18 +1,18 @@ #!/bin/bash +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) cd "`dirname "$0"`" # Variable that will hold the name of the clang-format command FMT="" -FOLDERS=("./src" "./test") +FOLDERS=("./src" "./test" "./l10n") -# Some distros just call it clang-format. Others (e.g. Ubuntu) are insistent -# that the version number be part of the command. We prefer clang-format if -# that's present, otherwise we work backwards from highest version to lowest -# version but at least 13. -for clangfmt in clang-format{,-{1,2,3}{9,8,7,6,5,4,3}}; do - if which "$clangfmt" &>/dev/null; then +# We specifically require clang-format v13. Some distros include the version +# number in the name, others don't. Prefer the specifically-named version. +for clangfmt in clang-format-13 clang-format +do + if command -v "$clangfmt" &>/dev/null; then FMT="$clangfmt" break fi @@ -24,6 +24,14 @@ if [ -z "$FMT" ]; then exit 1 fi +# Check we have v13 of clang-format +VERSION=`$FMT --version | grep -Po 'version\s\K(\d+)'` +if [ "$VERSION" != "13" ]; then + echo "Found clang-format v$VERSION, but v13 is required. Please install v13 of clang-format and try again." + echo "On Debian-derived distributions, this can be done via: apt install clang-format-13" + exit 1 +fi + function format() { for f in $(find $@ \( -type d -path './test/dep/*' -prune \) -o \( -name '*.h' -or -name '*.m' -or -name '*.mm' -or -name '*.c' -or -name '*.cpp' \)); do echo "format ${f}"; @@ -41,9 +49,18 @@ for dir in ${FOLDERS[@]}; do fi done +# Format cmake files +# NOTE: requires support for python venv; on Debian-like distros, this can be +# installed using apt install python3-venv echo "Start formatting cmake files" -pip install cmake-format==0.6.13 +CMAKE_FORMAT=${SCRIPT_DIR}/.venv/bin/cmake-format +if [ ! -f "$CMAKE_FORMAT" ]; then + pushd ${SCRIPT_DIR} + python3 -m venv .venv + .venv/bin/pip install cmake-format==0.6.13 + popd +fi find . \ \( -type d -path './test/dep/*' -prune \) \ -o \( -type d -path './dep/*/*' -prune \) \ - -o \( -name CMakeLists.txt -exec cmake-format --in-place {} + \) + -o \( -name CMakeLists.txt -exec "$CMAKE_FORMAT" --in-place {} + \) diff --git a/cmake/generate_appdata.cmake b/cmake/generate_appdata.cmake index 0aedce19..783913da 100644 --- a/cmake/generate_appdata.cmake +++ b/cmake/generate_appdata.cmake @@ -1,3 +1,12 @@ +# For testing enable +#set(CMAKE_SOURCE_DIR ) +#set(CMAKE_BINARY_DIR ) +#set(DOC_SOURCE_DIR ${CMAKE_SOURCE_DIR}/docs) +#set(DOC_BINARY_DIR ${CMAKE_BINARY_DIR}/docs) +#set(CHANGELOG_HTML ${DOC_BINARY_DIR}/changelog.html) +#set(APPDATA_CONF ${CMAKE_SOURCE_DIR}/rsrc/linux/com.github.Murmele.Gittyup.appdata.xml.in) +#set(APPDATA ${CMAKE_BINARY_DIR}/rsrc/linux/com.github.Murmele.Gittyup.appdata.xml) + # add release notes to the appdata file file(READ "${CHANGELOG_HTML}" HTML_CHANGELOGS) # it is not allowed to have multiple texts without being in an environment @@ -5,6 +14,7 @@ file(READ "${CHANGELOG_HTML}" HTML_CHANGELOGS) string(REGEX REPLACE "

([^<]*)<\\/p>" "\\1" RELEASES ${HTML_CHANGELOGS}) # remove paragraph environment string(REGEX REPLACE "

([A-Za-z0-9]*)<\\/h4>" "

\\1

" RELEASES ${RELEASES}) # h4 is unknow to appdata so change it to a paragraph environment string(REPLACE "\n" "\n\t" RELEASES ${RELEASES}) # add tabulator -string(REGEX REPLACE "

(v[1-9]\\.[0-9]\\.[0-9]) - ([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9])<\\/h3>" "\n\t" RELEASES ${RELEASES}) +# For Dev Version "vX.X.X - (DEV)" can be used to show in the changelog the current progress +string(REGEX REPLACE "

(v[1-9]\\.[0-9]\\.[0-9]|vX\\.X\\.X) - ([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9])( \\(DEV\\))?<\\/h3>" "\n\t" RELEASES ${RELEASES}) string(REGEX REPLACE "
" "
\n\t
" RELEASES ${RELEASES}) configure_file(${APPDATA_CONF} ${APPDATA}) diff --git a/conf/themes/Dark.lua b/conf/themes/Dark.lua index 38013ea4..b3360721 100755 --- a/conf/themes/Dark.lua +++ b/conf/themes/Dark.lua @@ -56,13 +56,13 @@ theme['button'] = { -- commit list colors -- { default, active, inactive, disabled } theme['commits'] = { - text = '#E1E5F2', - bright_text = '#AAB2BE', + text = '#AAB2BE', + bright_text = '#E1E5F2', background = '#2D2E34', alternate = '#2D2E34', -- an alternate background color for list rows highlight = { active = '#2A82DA', inactive = '#1B5B9B' }, - highlighted_text = { active = '#E1E5F2', inactive = '#E1E5F2' }, - highlighted_bright_text = { active = '#A6CBF0', inactive = '#9090A5' } + highlighted_text = { active = '#A6CBF0', inactive = '#E1E5F2' }, + highlighted_bright_text = { active = '#E1E5F2', inactive = '#9090A5' } } -- status badge colors @@ -77,7 +77,12 @@ theme['badge'] = { selected = '#E1E5F2', -- the color when a list item is selected conflicted = '#DA2ADA', -- the color of conflicted items head = '#52A500', -- a bolder color to indicate the HEAD - notification = '#8C2026' -- the color of toolbar notifications badges + notification = '#8C2026', -- the color of toolbar notifications badges + modified = '#91973A', -- (yellow) the color of the badge when the file is modified + added = '#394734', -- (green) the color of the badge when the file was newly added + deleted = '#5E3638', -- (red) the color of the badge when the file was deleted + untracked = '#2A4944', -- (green blue) the color of the badge when the file is untracked + renamed = '#23455E' -- (blue) the color of the badge when the file is renamed } } diff --git a/conf/themes/Default.lua b/conf/themes/Default.lua index 0ea72f8d..ed6aface 100755 --- a/conf/themes/Default.lua +++ b/conf/themes/Default.lua @@ -69,7 +69,7 @@ theme['commits'] = { -- { normal, selected, conflicted, head, notification } theme['badge'] = { foreground = { - normal = '#FFFFFF', + normal = '#000000', selected = '#6C6C6C' }, background = { @@ -77,7 +77,12 @@ theme['badge'] = { selected = '#FFFFFF', -- the color when a list item is selected conflicted = '#D22222', -- the color of conflicted items head = '#6F7379', -- a bolder color to indicate the HEAD - notification = '#FF0000' -- the color of toolbar notifications badges + notification = '#FF0000', -- the color of toolbar notifications badges + modified = '#FFEEDB', -- (yellow) the color of the badge when the file is modified + added = '#DCFFDC', -- (green) the color of the badge when the file was newly added + deleted = '#FFDCDC', -- (red) the color of the badge when the file was deleted + untracked = '#d9ead2', -- (green blue) the color of the badge when the file is untracked + renamed = '#d2e8fc' -- (blue) the color of the badge when the file is renamed } } diff --git a/dep/git/CMakeLists.txt b/dep/git/CMakeLists.txt index 6add461d..fefcf1d2 100644 --- a/dep/git/CMakeLists.txt +++ b/dep/git/CMakeLists.txt @@ -4,8 +4,9 @@ if(NOT USE_SYSTEM_GIT) macro(add_helper NAME) set(TARGET git-credential-${NAME}) add_executable(${TARGET} ${PATH}/${NAME}/${TARGET}.c) - set_target_properties(${TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY - $) + set_target_properties( + ${TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY + $/credential-helpers) if(${ARGC} GREATER 1) target_link_libraries(${TARGET} ${ARGV1}) @@ -14,7 +15,7 @@ if(NOT USE_SYSTEM_GIT) if(NOT APPLE) install( TARGETS ${TARGET} - DESTINATION . + DESTINATION ${CMAKE_INSTALL_BINDIR}/credential-helpers COMPONENT ${GITTYUP_NAME}) endif() endmacro() diff --git a/dep/openssl/openssl b/dep/openssl/openssl index 29708a56..3f499b24 160000 --- a/dep/openssl/openssl +++ b/dep/openssl/openssl @@ -1 +1 @@ -Subproject commit 29708a562a1887a91de0fa6ca668c71871accde9 +Subproject commit 3f499b24f3bcd66db022074f7e8b4f6ee266a3ae diff --git a/dep/scintilla/CMakeLists.txt b/dep/scintilla/CMakeLists.txt index c91a6225..a7a11972 100644 --- a/dep/scintilla/CMakeLists.txt +++ b/dep/scintilla/CMakeLists.txt @@ -59,5 +59,8 @@ target_link_libraries(scintilla Qt5::Widgets lexilla) set_target_properties(scintilla PROPERTIES AUTOMOC ON) set(SCINTILLUA_LEXERS_DIR + ${RESOURCES_DIR}/lexers + CACHE INTERNAL "") +set(SRC_SCINTILLUA_LEXERS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/scintillua/lexers CACHE INTERNAL "") diff --git a/docs/changelog.md b/docs/changelog.md index 8b2a46d9..567609a7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,11 +1,74 @@ -### v1.2.1 - 2022-11-10 +### vX.X.X - 2023-04-20 (DEV) + +Description + +#### Added + +* UI(Commit List): Added a right-click menu entry to rename branches. +* UI(Main Menu): Added a menu-entry to rename the current branch. + +#### Changed + +* UI(Commit List): Collapse multiple branch and tag right-click menu entries + into submenus. This affects the checkout and delete operations. +* Fix(Build System): Force usage of clang-format v13 to ensure consistent formatting. + +---- + +### v1.3.0 - 2023-04-20 + +Performance Improvement and feature release + +#### Added + +* Colorized status badges +* Template: use first template as default template for the commit message +* Search function for the treeview +* Reworked credential store: add possibility to choose between different methods to store credentials + +#### Changed + +* Fix external diff in Flatpak build +* Fix windows credentials +* Fix force push to correct remote +* Fix tab title if more than three times a repository with the same name is opened +* Fix storing repository settings correctly, because otherwise they are not applied +* Fix language support +* Improved refresh velocity +* Fix storing and restoring current opened file when Gittyup refreshes +* Improved velocity for files with many hunks + +---- + +### v1.2.2 - 2023-01-22 Bug fix release #### Changed +* Fix flatpak install process + +---- + +### v1.2.1 - 2023-01-22 + +Bug fix release + +#### Added +* Possibility to hide avatar (Settings - Window - View - Show Avatars) +* Show log entry when a conflict during rebase happens + +#### Changed + * Fix download url for flatpak and macos * Fix Segmentation fault when ignoring files +* Fix discard of complete files and submodules +* Fix context menu entries +* Fix bytesize overflow +* Fix focus loose during scrolling in the Commitlist with the keyboard +* Do not crash when the repository is for some reason broken +* Fix crash if rebasing is not possible + ---- ### v1.2.0 - 2022-10-28 diff --git a/docs/index.md b/docs/index.md index a7db41a7..43753a63 100644 --- a/docs/index.md +++ b/docs/index.md @@ -31,7 +31,26 @@ Report bugs in Gittyup by opening an issue in the Remember to search for existing issues before creating a new one. If you still need help, check out our Matrix channel -[Gittyup:martix.org](https://matrix.to/#/#Gittyup:matrix.org). +[Gittyup:matrix.org](https://matrix.to/#/#Gittyup:matrix.org). + +Multi language support +====================== + +Gittyup supports the following languages: +- English (en) +- German (de) +- Spanisch (es) +- Japanese (ja) +- Portuguese (pt) +- Portuguese Brazil (pt_BR) +- Chinese (zh_CN) +- Russian (ru) + +By default the system language is used. To switch to another language execute the application with the following command +``` +LANG= +``` + Features ======== @@ -74,9 +93,9 @@ Solving rebase conflicts and continuing after conflicts are solved ![Rebase Conflicts](https://raw.githubusercontent.com/Murmele/Gittyup/master/rsrc/screenshots/RebaseConflicts.png) -### Staring commits +### Starring commits to find specific commits much faster -![Staring commits](https://raw.githubusercontent.com/Murmele/Gittyup/master/rsrc/screenshots/starring_commits.png) +![Starring commits](https://raw.githubusercontent.com/Murmele/Gittyup/master/rsrc/screenshots/starring_commits.png) ### Tag selection Use an existing tag as template for your next tag. So you never have to look which is your latest tag @@ -84,7 +103,7 @@ Use an existing tag as template for your next tag. So you never have to look whi ![Tag selection](https://raw.githubusercontent.com/Murmele/Gittyup/master/rsrc/screenshots/tag_selection.png) ### Commit message template -Create you commit messages according a defined template +Create you commit messages according a defined template. The first template is automatically applied to the commit message editor. ![Commit message template selection](https://raw.githubusercontent.com/Murmele/Gittyup/master/rsrc/screenshots/CommitMessageTemplateSelection.png) diff --git a/l10n/CMakeLists.txt b/l10n/CMakeLists.txt index 734d9200..14543f0b 100644 --- a/l10n/CMakeLists.txt +++ b/l10n/CMakeLists.txt @@ -14,10 +14,18 @@ set(LANGUAGES set(SRC_DIR ${CMAKE_SOURCE_DIR}/src) file(GLOB_RECURSE SOURCE_FILES ${SRC_DIR}/*.h ${SRC_DIR}/*.cpp ${SRC_DIR}/*.mm) +set(SYSTEM_LANG_KEY "System") +set(SUPPORTED_LANGUAGES "{\"${SYSTEM_LANG_KEY}\", \"${SYSTEM_LANG_KEY}\"},") foreach(LANGUAGE ${LANGUAGES}) set(TS_FILES ${TS_FILES} gittyup_${LANGUAGE}.ts) + set(SUPPORTED_LANGUAGES + "${SUPPORTED_LANGUAGES} {\"${LANGUAGE}\", \"${LANGUAGE}\"},") endforeach() +set(LANGUAGE_SOURCE_FILE "${CMAKE_CURRENT_BINARY_DIR}/languages.cpp") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/languages.cpp.inc" + ${LANGUAGE_SOURCE_FILE} @ONLY) + if(UPDATE_TRANSLATIONS) # FIXME: Clean removes the .ts files. qt5_create_translation(QM_FILES ${SOURCE_FILES} ${TS_FILES}) @@ -28,12 +36,11 @@ endif() add_custom_target(translations DEPENDS ${QM_FILES}) add_dependencies(gittyup translations) +add_library(translation ${LANGUAGE_SOURCE_FILE}) +target_include_directories(translation PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") +target_link_libraries(translation Qt5::Core) + # install language files -if(APPLE) - set(CONTENTS_DIR ${GITTYUP_NAME}.app/Contents) -elseif(UNIX) - set(CONTENTS_DIR ${CMAKE_INSTALL_DATADIR}/gittyup) -endif() foreach(LANGUAGE ${LANGUAGES}) set(QT_QM_FILES ${QT_QM_FILES} ${QT_TRANSLATIONS_DIR}/qtbase_${LANGUAGE}.qm) @@ -44,19 +51,22 @@ foreach(LANGUAGE ${LANGUAGES}) TARGET translations POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory - ${DIR}/${CONTENTS_DIR}/Resources/${LANGUAGE}.lproj) + ${DIR}/${RESOURCES_DIR}/${LANGUAGE}.lproj) endif() endforeach() -if(APPLE OR UNIX) - set(RESOURCES_PREFIX ${CONTENTS_DIR}/) -endif() - -foreach(QM_FILE ${QM_FILES} ${QT_QM_FILES}) +foreach(QM_FILE ${QT_QM_FILES}) if(EXISTS ${QM_FILE}) install( FILES ${QM_FILE} - DESTINATION ${RESOURCES_PREFIX}Resources/l10n + DESTINATION ${L10N_INSTALL_DIR} COMPONENT ${GITTYUP_NAME}) endif() endforeach() + +foreach(QM_FILE ${QM_FILES}) + install( + FILES ${QM_FILE} + DESTINATION ${L10N_INSTALL_DIR} + COMPONENT ${GITTYUP_NAME}) +endforeach() diff --git a/l10n/gittyup_de.ts b/l10n/gittyup_de.ts index 9a93c205..350a03ea 100644 --- a/l10n/gittyup_de.ts +++ b/l10n/gittyup_de.ts @@ -4,55 +4,63 @@ AboutDialog - + About %1 Über %1 - + Understand your history! Verstehe Deine History! - + Changelog Änderungslog - + Acknowledgments Danksagungen - + Privacy Datenschutz - Usage reporting has been disabled. Restart the application for changes to take effect. - Telemetrie wurde deaktiviert. Bitte starte die Anwendung neu, damit die Änderungen aktiv werden. + Telemetrie wurde deaktiviert. Bitte starte die Anwendung neu, damit die Änderungen aktiv werden. - Usage Reporting Disabled - Telemetrie wurde deaktiviert + Telemetrie wurde deaktiviert Account - + + Connection failed + Verbinden fehlgeschlagen + + + <b>Note:</b> Basic authentication is not supported if you have two-factor authentication enabled. Use a <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>personal access token</a> in the password field instead. <b>Hinweis:</b> Standard-Authentifizierung ist nicht unterstützt, wenn Du Zwei-Faktor-Authentifizierung aktiviert hast. Benutze stattdessen ein <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>persönliches Zugriffs-Token</a> im Passwort-Feld. - + + <b>Note:</b> Only Basic authentication is currently supported + + + + <b>Note:</b> Basic authentication is not supported. Use a <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>personal access token</a> in the password field instead. <b>Hinweis:</b> Standard-Authentifizierung ist nicht unterstützt. Benutze stattdessen ein <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>persönliches Zugriffs-Token</a> im Passwort-Feld. - + Authentication failed Anmeldung fehlgeschlagen @@ -60,7 +68,7 @@ AccountDialog - + Add Remote Account Remote-Account hinzufügen @@ -90,32 +98,32 @@ URL: - + Replace? Ersetzen? - + An account of this type already exists. Ein Account dieses Typs existiert bereits. - + Would you like to replace the previous account? Willst Du den alten Account ersetzen? - + Replace Ersetzen - + Cancel Abbrechen - + Connection Failed Verbinden fehlgeschlagen @@ -123,18 +131,18 @@ AddRemoteDialog - - + + Add Remote Remote hinzufügen - + Name: Name: - + URL: URL: @@ -142,7 +150,7 @@ AdvancedButton - + Advanced Search Erweiterte Suche @@ -150,219 +158,263 @@ AdvancedSearchWidget - + Author: Author: - + Author name Name des Authors - + Email: E-Mail: - + Author email E-Mail des Authors - + Message: Nachricht: - + Commit message Commit-Nachricht - + Date: Datum: - + Specific commit date Bestimmtes Commit-Datum - + After: Nach: - + Commits after date Commits nach Datum - + Before: Vor: - + Commits before date Commits vor Datum - + File: Datei: - + File name Dateiname - + Path: Pfad: - + File path Dateipfad - + Scope: Scope: - + Hunk header text Hunk-Kopfzeilen - + Context: Kontext: - + Diff context (white) Unterschieds-Kontext (weiß) - + Addition: Hinzugekommen: - + Diff addition (green) Im Diff hinzugekommen (grün) - + Deletion: Löschungen: - + Diff deletion (red) Im Diff gelöscht (rot) - + Comment: Kommentar: - + Source code comment Quellcode-Kommentar - + String: String: - + Source code string literal String-Literal im Quellcode - + Identifier: Identifizierer: - + Source code identifier Identifizierer im Quellcode - + Search Suche - + Return + + AmendDialog + + + Author + + + + + Committer + + + + + Commit Message: + + + + + Amend + Amende + + + + Cancel + Abbrechen + + Application - + SSL Errors SSL-Fehler - + Failed to set up SSL session. Do you want to ignore these errors? SSL-Sitzung konnte nicht initialisiert werden. Willst Du den Fehler ignorieren? + + AuthorCommitterDate + + + Author/Committer: + + + + + Author: + + + + + Committer: + + + Beanstalk - Connection failed - Verbinden fehlgeschlagen + Verbinden fehlgeschlagen Bitbucket - Connection failed - Verbinden fehlgeschlagen + Verbinden fehlgeschlagen BlameEditor - + Untitled Ohne Titel - + Not Tracked Nicht getrackt - + HEAD HEAD - + Working Copy Arbeitskopie - + Save File Datei speichern @@ -370,12 +422,12 @@ BlameMargin - + Not Committed Nicht committed - + Invalid Signature Ungültige Signatur @@ -383,17 +435,17 @@ BranchTableModel - + Name Name - + Upstream Upstream - + Rebase Rebase @@ -401,17 +453,17 @@ CheckoutDialog - + Detach HEAD HEAD loslösen - + References: Referenzen: - + Checkout Auschecken @@ -419,7 +471,7 @@ ClearButton - + Clear Leeren @@ -427,32 +479,32 @@ CloneDialog - + Initialize Repository Repository initialisieren - + Clone Repository Repository klonen - + Initialized empty repository into '%1' Leeres Repository in '%1' initialisiert - + Cloned repository from '%1' into '%2' Repository von '%1' nach '%2' geklont - + Initialize Initialisieren - + Clone Klonen @@ -460,33 +512,33 @@ ClonePage - + Clone Progress Fortschritt des Klon-Vorgangs - + The new repository will open after the clone finishes. Das neue Repository wird geöffnet, sobald das Klonen fertig ist. - + Clone Klone - - + + clone Klonen - + Clone canceled. Klonen abgebrochen. - + Failed to %1 into '%2' - %3 %1 nach %2 fehlgeschlagen - %3 @@ -494,27 +546,27 @@ CommitDetail - + Copy Kopieren - + Range: Bereich: - + Id: ID: - + initial commit Initialer Commit - + Parents: @@ -572,120 +624,181 @@ CommitEditor - + + T + + + + <b>Commit Message:</b> <b>Commit-Nachricht:</b> - - + + Spell Check Language - + The dictionary '%1' is invalid - + Spell checking is disabled. - + The choosen dictionary '%1.dic' is not a valid hunspell dictionary. - - + + Invalid dictionary '%1.dic' - + Edit User Dictionary - + Stage All Alles stagen - + Unstage All Alles unstagen - - + + Commit Committen - + + Abort rebasing + + + + + Continue rebasing + + + + + Abort Merge + Merge abbrechen + + + + %1 + %1 + + + + %1 and %2 + + + + + %1, %2, and %3 + + + + + Merge + + + + + Revert + + + + + Cherry-pick + + + + + Rebase + + + + + Abort %1 + %1 abbrechen + + + + Commit Rebase + + + Update %1 - %1 aktualisiert + %1 aktualisiert - Update %1 and %2 - %1 und %2 aktualisiert + %1 und %2 aktualisiert - Update %1, %2, and %3 - %1, %2 und %3 aktualisiert + %1, %2 und %3 aktualisiert - Update %1, %2, and %3 more files... - %1, %2 und %3 weitere dateien aktualisiert... + %1, %2 und %3 weitere dateien aktualisiert... - + Nothing staged Nichts gestaged - + %1 of %2 file staged %1 von %2 Datei gestaged - + %1 of %2 files staged %1 von %2 Dateien gestaged - + %1 file partially staged %1 Datei teilweise gestaged - + %1 files partially staged %1 Dateien teilweise gestaged - + %1 unresolved conflict %1 ungelöster Konflikt - + %1 unresolved conflicts %1 ungelöste Konflikte - + all conflicts resolved Alle Konflikte gelöst - + Commit Merge Merge committen @@ -693,114 +806,131 @@ CommitList - + Remove Untracked Files Ungetrackte Dateien entfernen - + Apply Anwenden - + Pop Poppen - + Drop Droppen - + Unstar Ent-Favorisieren - + Star Favorisieren - + Add Tag... Tag hinzufügen... - + New Branch... Neuer Branch... - Delete Tag %1 - Tag %1 löschen + Tag %1 löschen - Delete Branch %1 - Branch %1 löschen + Branch %1 löschen - + + Rename Branch + + + + + Delete Branch + + + + + Delete Tag + Lösche Tag + + + Merge... Mergen... - + Rebase... Rebasen... - + Squash... Squashen... - + Revert Reverten - + Cherry-pick Cherry-Picken - - - + + Checkout %1 %1 auschecken - + + Checkout + + + + Local branch is already checked out Ein lokaler Branch ist bereits ausgecheckt - + This is a bare repository Dies ist ein Bare-Repository - + Reset Zurücksetzen - + Soft Soft - + Mixed Mixed - + Hard Hard @@ -808,12 +938,12 @@ CommitModel - + Uncommitted changes Uncommittete Änderungen - + Checking for uncommitted changes Prüfe auf uncommittete Änderungen @@ -821,94 +951,132 @@ CommitToolBar - + Show All Branches Zeige alle Branches - + Show Selected Branch Zeige den ausgewählten Branch - + Sort by Date Nach Datum sortieren - + Sort Topologically Nach Topologie sortieren - + Show Graph Graph zeigen - + Show Clean Status Sauberen Status zeigen - + Compact Mode Kompakter Modus + + + Show Author + + + + + Show Date + + + + + Show Id + + ConfigDialog - + General Allgemein - + Diff Diff - + Remotes Remotes - + Branches Branches - + Submodules Submodule - + Search Suche - + Plugins Plugins - + LFS LFS - + Edit Config File... Konfigurations-Datei bearbeiten... - + Esc + + DateSelectionGroupWidget + + + Datetime source + + + + + Current + + + + + Manual + + + + + Original + + + DefaultContentWidget @@ -919,37 +1087,36 @@ DefaultWidget - + Clone repository Repository klonen - + Open existing repository Bestehendes Repository öffnen - + Open Repository Repository öffnen - + Initialize new repository Neues Repository initialisieren - + Add %1 account %1-Account hinzufügen - View getting started videos - Hilfe-Videos ansehen + Hilfe-Videos ansehen - + Contact us for support Kontaktiere uns für Support @@ -957,47 +1124,47 @@ DeleteBranchDialog - + Are you sure you want to delete local branch '%1'? Bist Du sicher, dass Du den lokalen branch '%1' löschen willst? - + Delete Branch? Branch löschen? - + Also delete the upstream branch from its remote Auch den Upstream-Branch von seinem Remote löschen - + Delete Löschen - + delete '%1' from '%2' Lösche '%1' von '%2' - + Push Pushe - + Push canceled. Pushen abgebrochen. - + Unable to push to %1 - %2 Kann nicht nach %1 pushen - %2 - + The branch is not fully merged. Deleting it may cause some commits to be lost. Der Branch ist nicht vollständig gemergt. Ihn zu löschen kann dazu führen, dass einige Commits verloren gehen. @@ -1005,52 +1172,52 @@ DeleteTagDialog - + Are you sure you want to delete tag '%1'? Bist Du sicher, dass Du den Tag '%1' löschen willst? - + Delete Tag? Tag löschen? - + Also delete the upstream tag from %1 Auch den Upstream-Tag von %1 löschen - + Delete Löschen - + delete '%1' from '%2' Lösche '%1' von '%2' - + Push Pushe - + Push canceled. Pushen abgebrochen. - + Unable to push to %1 - %2 Kann nicht nach %1 pushen - %2 - + Delete Tag Lösche Tag - + delete tag lösche Tag @@ -1058,16 +1225,26 @@ DetailView + + Author: - Author: + Author: + reset - zurücksetzen + zurücksetzen + + Here you can set the author used for committing +These settings will not be saved permanently + + + + Email: - E-Mail: + E-Mail: @@ -1107,12 +1284,12 @@ Hinzugefügte Dateien - + Deleted files Gelöschte Dateien - + Whitespace: Whitespace: @@ -1121,7 +1298,7 @@ Kompakter Modus: - + Auto Collapse: Automatisch zuklappen: @@ -1129,43 +1306,89 @@ DiffTool - + External Diff Externes Diff + + DiffTreeModel + + + Submodule + Submodul + + DiffView - + Add new file Neue Datei hinzufügen - + Or drag files here to copy into the repository Oder Dateien hierher ziehen, um sie dem Repository hinzuzufügen + + DoubleTreeWidget + + + Blame + + + + + Show Blame Editor + + + + + Diff + Diff + + + + Show Diff View + Unterschiede anzeigen + + + + Single Tree View + + + + + List View + + + + + Hide Untracked Files + + + DownloadDialog - + Update %1 Update %1 - + Downloading %1... Lade %1 herunter... - + Download Complete! Download vollständig! - + Install and Restart Installieren und neu starten @@ -1173,17 +1396,17 @@ EditButton - + Edit Working Copy - + Edit New Revision - + Edit Old Revision @@ -1191,7 +1414,7 @@ EditTool - + Edit in External Editor In externem Editor bearbeiten @@ -1199,47 +1422,47 @@ EditorPanel - + Tabs Tabs - + Spaces Leerzeichen - + Show heat map Heat-Map anzeigen - + Font: Schriftart: - + Font size: Schriftgröße: - + Indent using: Einzug mit: - + Indent width: Einzugs-Breite: - + Tab width: Tab-Breite: - + Blame margin: Blame-Seitenrand: @@ -1247,12 +1470,12 @@ EditorWindow - + '%1' has been modified. Do you want to save your changes? '%1' wurde verändert. Willst Du die Änderungen speichern? - + Save Changes? Änderungen speichern? @@ -1260,22 +1483,22 @@ ExternalToolsDialog - + Configure External Tools Externe Tools konfigurieren - + Detected Tools Erkannte Tools - + User Defined Tools Benutzerdefinierte Tools - + Select Executable Programm-Datei auswählen @@ -1283,17 +1506,17 @@ ExternalToolsModel - + Name Name - + Command Befehl - + Arguments Argumente @@ -1301,168 +1524,244 @@ FileContextMenu - + Revision Not Found Revision nicht gefunden - + The selected file doesn't have a %1 revision. Die ausgewählte Datei hat keine %1 Revision. - + Bash Not Found Bash nicht gefunden - + Bash was not found on your PATH. Bash wurde in deinem PATH nicht gefunden. - + Bash is required to execute external tools. Bash ist erforderlich, um externe Tools auszuführen. - + Stage Stagen - + Unstage Unstagen - - + + Discard Changes Änderungen verwerfen - + Discard Changes? Änderungen verwerfen? - + Are you sure you want to discard changes in the selected files? Bist Du sicher, dass Du die Änderungen in den ausgewählten Dateien verwerfen willst? - + This action cannot be undone. Die Aktion kann nicht rückgängig gemacht werden. - + + (Submodule) + + + + %1 files %1 Dateien - + Discard Verwerfen - + discard verwerfe - + Remove Untracked Files Ungetrackte Dateien entfernen - + Ignore Ignorieren - + Checkout Auschecken - + Unlock Entsperren - + Lock Sperren - + Copy File Name Dateiname kopieren - + Filter History History filtern - + Navigate to Navigiere zu - + Next Revision Nächste Revision - + next nächste - + Previous Revision Vorherige Revision - + previous vorherige - + Unset Executable Nicht als ausführbar markieren - + Set Executable Als ausführbar markieren - + + Save Selected Version as ... + + + + + Select new file directory + + + + + Saving files + + + + + Saving files of selected version to disk + + + + + Save file + + + + + Invalid Blob + + + + + Open this version + + + + + Opening file + + + + + Open + + + + + open file + + + + + Blob is invalid. + + + + + + Unable to checkout bare repositories + + + + + Unable to open files from bare repository + + + + + The file is already in the current working directory + + + + edit Editor - + diff Diff - + merge Merge - + External Tool Not Found Externes Tool nicht gefunden - + Failed to execute external %1 tool. %1-Tool konnte nicht ausgeführt werden. @@ -1470,14 +1769,12 @@ FileList - Sort By - Sortieren nach + Sortieren nach - Select - Auswählen + Auswählen Staged First @@ -1492,19 +1789,16 @@ Groß- / Kleinschreibung beachten - Name - Name + Name - Status - Status + Status - Ignore Whitespace (-w) - Whitespace ignorieren (-w) + Whitespace ignorieren (-w) Hide untracked files @@ -1515,165 +1809,154 @@ Kompakter Modus - Added - Hinzugefügt + Hinzugefügt - Deleted - Gelöscht + Gelöscht - Modified - Geändert + Geändert - Renamed - Umbenannt + Umbenannt - Copied - Kopiert + Kopiert - Ignored - Ignoriert + Ignoriert - Untracked - Nicht getrackt + Nicht getrackt - Unreadable - Unlesbar + Unlesbar - Conflicted - Mit konflikten + Mit konflikten - Unmodified - Unverändert + Unverändert - Type Change - Typen-Änderung + Typen-Änderung FileWidget - + LFS LFS - - + + Unlock Entsperren - - + + Lock Sperren - - + + Show Object Objekt anzeigen - + Edit File Datei bearbeiten - + Discard File Datei verwerfen - + Directory Ordner - + File Datei - + Remove %1? %1 löschen? - + Discard Changes? Änderungen verwerfen? - + Are you sure you want to remove '%1'? Bist Du sicher, dass Du '%1' löschen willst? - + Are you sure you want to discard all changes in '%1'? Bist Du sicher, dass Du alle Änderungen in '%1' verwerfen willst? - + This action cannot be undone. Die Aktion kann nicht rückgängig gemacht werden. - + Remove %1 %1 löschen - + Discard Changes Änderungen verwerfen - + Discard Verwerfen - + discard verwerfe - - + + Collapse File Datei zuklappen - - + + Expand File Datei aufklappen - + Show Pointer Pointer anzeigen @@ -1681,32 +1964,32 @@ FindWidget - + Search Suchbegriff - + Done Fertig - + Not found Nicht gefunden - + %1 match %1 Treffer - + %1 matches %1 Treffer - + Esc @@ -1714,91 +1997,100 @@ GeneralPanel - - + + Fetch every Fetchen alle - - + + minutes Minuten - - + + Push after each commit Nach jedem Commit pushen - - Update submodules after pull - Submodule nach pull aktualisieren + Submodule nach pull aktualisieren - - + + + Update submodules after pull and clone + + + + + Prune when fetching Beim Fetchen aufräumen - + No translation Keine Übersetzung - - + + User name: Benutzername: - - + + User email: E-Mail-Adresse: - - + + Automatic actions: Automatische Aktionen: - + + Language: Sprache: - + Store credentials in secure storage Zugangsdaten in sicherem Speicher hinterlegen - Allow collection of usage data - Benutzungsdaten erfassen + Benutzungsdaten erfassen - + <a href='view'>View privacy policy</a> <a href='view'>Datenschutzerklärung ansehen</a> - Only allow a single running instance - Nur eine laufende Instanz zulassen + + Credential store type: + - + + Only allow a single running instance + Nur eine laufende Instanz zulassen + + + Credentials: Zugangsdaten: - Usage reporting: - Telemetrie: + Telemetrie: Terminal emulator command: @@ -1809,37 +2101,34 @@ Dateimanager-Befehl: + Single instance: - Einzelne Instanz: + Einzelne Instanz: GitHub - Connection failed - Verbinden fehlgeschlagen + Verbinden fehlgeschlagen - Failed to authenticate with GitHub! - Anmledung an GitHub fehlgeschladen! + Anmledung an GitHub fehlgeschladen! - Successfully authenticated with GitHub! - Anmeldung an GitHub erfolgreich! + Anmeldung an GitHub erfolgreich! GitLab - Connection failed - Verbinden fehlgeschlagen + Verbinden fehlgeschlagen - + Authentication failed Anmeldung fehlgeschlagen @@ -1847,7 +2136,7 @@ Header - + Filter %1 Filtere %1 @@ -1855,7 +2144,7 @@ HostModel - + Connecting Verbinde @@ -1863,100 +2152,126 @@ HotkeyModel + Action - Aktion + Aktion + Keys - Tasten + Tasten HunkWidget - + + Save Speichern - + + Undo Rückgängig - + + Use Ours Unseres benutzen - + + Use Theirs Ihres benutzen - + Edit Hunk Hunk bearbeiten - - + Discard Hunk Hunk verwerfen - - Discard Hunk? - Hunk verwerfen? + + Discard selected lines? + - + + Are you sure you want to discard the changes in hunk from line %1 to %2 in '%3'? + + + + + Discard selected lines + + + + Discard Hunk? + Hunk verwerfen? + + + Are you sure you want to remove '%1'? Bist Du sicher, dass Du '%1' entfernen willst? - Are you sure you want to discard the hunk starting at line %1 in '%2'? - Bist Du sicher, dass Du die Änderungen im Hunk ab Zeile %1 in '%2' verwerfen willst? + Bist Du sicher, dass Du die Änderungen im Hunk ab Zeile %1 in '%2' verwerfen willst? - + This action cannot be undone. Die Aktion kann nicht rückgängig gemacht werden. - - + + Collapse Hunk Hunk zuklappen - - + + Expand Hunk Hunk aufklappen - + Fix Beheben - + Edit Bearbeiten - + No newline at end of file Keine Leerzeile am Ende der Datei - + Esc + + IgnoreDialog + + + Ignore Pattern + + + ImageContentWidget @@ -1967,27 +2282,52 @@ Images - + <b>Size:</b> %1 <b>Größe:</b> %1 + + InfoBox + + + Name: + Name: + + + + Email: + E-Mail: + + + + Commit date: + + + KeybindDialog + + The selected key is the same for the following actions: +%1 + + + + Please press the desired hotkey - Bitte drücke die gewünschten Tasten + Bitte drücke die gewünschten Tasten LfsPanel - + Initialize LFS LFS initialisieren - + Specify a glob pattern for tracking large files. Generally, large files are greater than 500kB, change frequently, @@ -2012,100 +2352,110 @@ Beispiele - + Pattern: Muster: - + Track Tracken - + days Tage - + Fetch LFS objects from all references for the past LFS-Objekte von allen Referenzen aus der Vergangenheit fetchen - + reference days or Referenz-Tage oder - + commit days Commit-Tage - + View Environment Umgebung ansehen - + git-lfs env (read only) git-lfs env (nur lesen) - + Deinitialize LFS LFS deinitialisieren - + Deinitialize LFS? LFS deinitialisieren? - + Are you sure you want uninstall LFS from this repository? Bist Du sicher, dass Du LFS aus diesem Repository deinstallieren willst? - + Deinitialize Deinitialisieren - + Server URL: Server-URL: - + Prune Offset: Prune-Offset: - + Fetch Recent: Neue holen: - + Advanced: Erweitert: + + + Included patterns: + + + + + Excluded patterns: + + Location - + %1 | %2 %1 | %2 - + NC NC - + Not Committed Nicht committet @@ -2113,57 +2463,57 @@ Beispiele LocationPage - + Repository Location Repository-Ort - + Choose the name and location of the new repository. A new directory will be created if it doesn't already exist. Wähle den Namen und den Ort des neuen Repositories. Ein neuer Ordner wird erstellt, wenn nicht bereits einer existiert. - + Initialize Initialisieren - + Clone Klonen - + ... ... - + Choose Directory Ordner wählen - + Name: Name: - + Directory: Ordner: - + Advanced: Erweitert: - + Create a bare repository Ein Bare-Repository erstellen - + The new repository will be created at:<p style='text-indent: 12px'><b>%1</b></p> Das neue Repository wird in <b>%1</b> erstellt @@ -2171,7 +2521,7 @@ Beispiele LogView - + Copy Kopieren @@ -2179,59 +2529,59 @@ Beispiele MainWindow - + Invalid Git Repository Ungültiges GIT-Repository - + %1 does not contain a valid git repository. %1 enthält kein gültiges GIT-Repository. - - + + %1 - %2 %1 - %2 - + ahead: %1 voraus: %1 - + behind: %1 dahinter: %1 - + up-to-date aktuell - - + + %1 (%2) %1 (%2) - + MERGING MERGE - + REVERTING REVERTE - + CHERRY-PICKING CHERRY-PICKEND - + REBASING REBASE @@ -2239,575 +2589,483 @@ Beispiele MenuBar - + File Datei - + New File Neue Datei - + New Window Neues Fenster - - Ctrl+Meta+N - - - - + Clone Repository... Repository klonen... - - Ctrl+Shift+N - - - - + Initialize New Repository... Neues Repository initialisieren... - - Ctrl+Alt+N - - - - + Open Repository... Repository öffnen... - + Open Repository Repository öffnen - + Open Recent Zuletzt geöffnet - + Close Schließen - + Save Speichern - + Exit Beenden - + Edit Bearbeiten - + Undo Rückgängig - + Redo Wiederholen - + Cut Ausschneiden - + Copy Kopieren - + Paste Einfügen - + Select All Alles markieren - + Find... Suchen... - + Find Next Nächstes suchen - + Find Previous Vorheriges suchen - + Use Selection for Find Auswahl für Suche benutzen - - Ctrl+E + + Show Double Tree View - + View Anzeige - + Refresh Aktualisieren - - + + Show Log Log anzeigen - - - Show Tree View - Baumansicht benutzen - - - - Repository - Repository - - - - Configure Repository... - Repository konfigurieren... - - - - Stage All - Alles stagen - - - - Ctrl++ - - - - - Unstage All - Alles unstagen - - - - Ctrl+- - - - - - Commit - Committen - - - - Ctrl+Shift+C - - - - - Amend Commit - Commit amenden - - - - - Ctrl+Shift+A - - - - - Git LFS - GIT LFS - - - - Remove all locks - Alle Sperren entfernen - - - - Initialize - Initialisieren - - - - Remote - Remote - - - - Configure Remotes... - Remotes konfigurieren... - - - - Fetch - Fetchen - - - - Ctrl+Shift+Alt+F - - - - - Fetch All - Alle Fetchen - - - - Ctrl+Shift+Alt+A - - - - - Fetch From... - Fetchen von... - - - - Ctrl+Shift+F - - - - - Pull - Pullen - - - - Ctrl+Shift+Alt+L - - - - - Pull From... - Pullen von... - - - - Ctrl+Shift+L - - - - - Push - Pushen - - - - Ctrl+Shift+Alt+P - - - - - Push To... - Pushen nach... - - - - Ctrl+Shift+P - - - - - Branch - Branch - - - - Configure Branches... - Branches konfigurieren... - - - - New Branch... - Neuer Branch... - - - - Checkout Current - Aktuellen auschecken - - - - Ctrl+Shift+Alt+H - - - - - Checkout... - Auschecken... - - - - Ctrl+Shift+H - - - - - Merge... - Mergen... - - - - Ctrl+Shift+M - - - - - Rebase... - Rebasen... - - - - Ctrl+Shift+R + + Normal + Maximize + + + + + + Show Tree View + Baumansicht benutzen + + + + Hide Menu Bar + + + + + Repository + Repository + + + + Configure Repository... + Repository konfigurieren... + + + + Stage All + Alles stagen + + + + Unstage All + Alles unstagen + + + + Commit + Committen + + + + Amend Commit + Commit amenden + + + + Git LFS + GIT LFS + + + + Remove all locks + Alle Sperren entfernen + + + + Initialize + Initialisieren + + + + Remote + Remote + + + + Configure Remotes... + Remotes konfigurieren... + + + + Fetch + Fetchen + + + + Fetch All + Alle Fetchen + + + + Fetch From... + Fetchen von... + + + + Pull + Pullen + + + + Pull From... + Pullen von... + + + + Push + Pushen + + + + Push To... + Pushen nach... + + + + Branch + Branch + + + + Configure Branches... + Branches konfigurieren... + + + + New Branch... + Neuer Branch... + + + + Rename Branch + + + + + Checkout Current + Aktuellen auschecken + + + + Checkout... + Auschecken... + + + + Merge... + Mergen... + + + + Rebase... + Rebasen... + + + Squash... Squashen... - - Ctrl+Shift+Q - - - - + Abort Merge Merge abbrechen - + Submodule Submodul - + Configure Submodules... Submodule konfigurieren... - + Update All Alle updaten - - Ctrl+Shift+Alt+U - - - - + Update... Updaten... - - Ctrl+Shift+U - - - - + Open Öffnen - + Stash Stash - + Show Stashes Stashes anzeigen - + Stash... Stashen... - - Ctrl+Shift+T - - - - + Pop Stash Stash poppen - - Ctrl+Shift+Alt+T - - - - + History History - + Back Zurück - + Forward Vorwärts - + Window Fenster - + Show Previous Tab Zeige vorherigen Tab - + Show Next Tab Zeige nächsten Tab - + Show Repository Chooser... Zeige Repository-Auswahl... - - Ctrl+Shift+O - - - - + Tools Extras - + Options... Optionen... - + Help Hilfe - + About %1 Über %1 - + Check For Updates... Auf Updates prüfen... - + Plugin Documentation... Plugin-Dokumentation... - + + Support us via Liberapay + + + + Debug Debuggen - + Abort Abstürzen - + Log Indexer Progress Indexer-Fortschritt loggen - + Log Credential Helper Credential-Helper loggen - + Log Remote Connection Remote-Verbindung loggen - + + Log Debug Messages + + + + Load All Diffs Alle Diffs laden - + Walk Commits Commits durchgehen - + Hide Log Log verstecken - Show Diff View - Unterschiede anzeigen + Unterschiede anzeigen - + Merge Merge - + Revert Revert - + Cherry-pick Cherry-Pick - + Rebase Rebase - + Abort %1 %1 abbrechen @@ -2815,60 +3073,60 @@ Beispiele MergeDialog - - + + Merge Mergen - - + + Rebase Rebasen - - + + Squash Squashen - + Merge (No Fast-forward) Mergen (keine Fast-Forwards) - + Merge (Fast-forward Only) Mergen (nur Fast-Forwards) - + No commit Kein Commit - + Reference: Referenz: - + Action: Aktion: - + Choose a reference to merge into '%1'. Wähle eine Referenz aus, die nach %1 gemergt werden soll. - + Choose a reference to rebase '%1' on. Wähle eine Referenz aus, die auf %1 gerebased werden soll. - + Choose a reference to squash into '%1'. Wähle eine Referenz aus, die nach %1 gesquasht werden soll. @@ -2884,7 +3142,7 @@ Beispiele MergeTool - + External Merge Externer Merge @@ -2892,12 +3150,12 @@ Beispiele MiscPanel - + Path to SSH config file: Pfad zur SSH-Konfigurations-Datei: - + Path to default / fallback SSH key file: Pfad zur Standard- / Fallback-SSH-Schlüssel-Datei: @@ -2905,32 +3163,32 @@ Beispiele NewBranchDialog - + Checkout branch Branch auschecken - + Name: Name: - + Start Point: Startpunkt: - + Advanced: Erweitert: - + Upstream: Upstream: - + Create Branch Branch erstellen @@ -2938,7 +3196,7 @@ Beispiele PathspecWidget - + Filter by Path Nach Pfad filtern @@ -2946,42 +3204,42 @@ Beispiele PluginsPanel - + Name Name - + Kind Art - + Description Beschreibung - + Options Optionen - + %1 Options Optionen für %1 - + Note Notiz - + Warning Warnung - + Error Fehler @@ -2989,7 +3247,7 @@ Beispiele Popup - + Show Advanced Search Erweiterte Suche anzeigen @@ -2997,12 +3255,12 @@ Beispiele PreviewWidget - + Added Hinzugefügt - + Modified Geändert @@ -3010,7 +3268,7 @@ Beispiele PullRequestButton - + Create Pull Request Pull-Request erstellen @@ -3018,60 +3276,111 @@ Beispiele PullRequestDialog - + Create Pull Request Pull-Request erstellen - + Title Titel - + Body Text - + Maintainer can modify Maintainer darf Änderungen vornehmen - + From: Von: - + owner/repository besitzer/repository - + branch branch - + To: An: - + Create Erstellen - RebaseConflictDialog + QObject - Rebase conflict - Rebase-Konflikt + + Expand all + + + Collapse all + + + + + Staged Files + + + + + Unstaged Files + + + + + Committed Files + + + + + Workdir Files + + + + + Your global GIT configuration is invalid, Gittyup won't run properly until this is fixed + + + + + RebaseConflictDialog + + + Rebase conflict + Rebase-Konflikt + + + Abort rebase - Rebase abbrechen + Rebase abbrechen + + + + Continue + + + + + The rebase caused a merge conflict. +Would you like to fix the merge conflict and continue? + Keep rebase @@ -3090,7 +3399,7 @@ Konflikt zu beheben Reference - + HEAD detached at %1 HEAD losgelöst bei %1 @@ -3098,7 +3407,7 @@ Konflikt zu beheben ReferenceList - + Commit Commit @@ -3106,17 +3415,17 @@ Konflikt zu beheben ReferenceModel - + Branches Branches - + Remotes Remotes - + Tags Tags @@ -3124,42 +3433,42 @@ Konflikt zu beheben ReferenceView - + Branch Branch - + Remote Remote - + Tag Tag - + Checkout Auschecken - + Rename Umbenennen - + Delete Löschen - + Push Tag to %1 Pushe Tag nach %1 - + Squash... Squashen... @@ -3172,17 +3481,17 @@ Konflikt zu beheben lösche Tag - + New Local Branch Neuer lokaler Branch - + Merge... Mergen... - + Rebase... Rebasen... @@ -3190,7 +3499,7 @@ Konflikt zu beheben RefreshButton - + Refresh Aktualisieren @@ -3198,7 +3507,7 @@ Konflikt zu beheben RemoteButton - + 999+ 999+ @@ -3206,58 +3515,59 @@ Konflikt zu beheben RemoteCallbacks - + remote: %1 remote: %1 - + failed to execute pre-push hook: bash not found Ausführen des Pre-Push-Hooks fehlgeschlagen: Bash nicht gefunden - + failed to execute pre-push hook: %1 Ausführen des Pre-Push-Hooks fehlgeschlagen: %1 - + HTTPS Credentials HTTPS-Zugangsdaten - + SSH Passphrase SSH-Passphrase - + Username: Benutzername: - + Password: Passwort: - + Passphrase: Passphrase: - + + authentication canceled Authentifizierung abgebrochen - + From %1 Von %1 - - + + To %1 Nach %1 @@ -3265,47 +3575,47 @@ Konflikt zu beheben RemoteDialog - + Push all tags Alle Tags pushen - + Update existing tags Bestehende Tags aktualisieren - + Merge Mergen - + Rebase Rebasen - + Merge (No Fast-forward) Mergen (keine Fast-Forwards) - + Merge (Fast-forward Only) Mergen (nur Fast-Forwards) - + Set upstream Upstream setzen - + Force Erzwingen - + Remote Reference: Remote-Referenz: @@ -3353,12 +3663,12 @@ Konflikt zu beheben RemotePage - + Remote Repository URL URL des entfernten Repositories - + Choose protocol to authenticate with the remote. Wähle ein Protokoll zur Authentifizierung am Remote. @@ -3367,32 +3677,32 @@ Konflikt zu beheben Gib die URL des entfernten Repositories ein. - + Enter the URL of the remote repository or browse for a local directory Gib die URL des entfernten Repositories ein oder suche nach einem lokalen Ordner - + ... ... - + Choose Directory Ordner wählen - + Examples of valid URLs include:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> Beispiele valider URLs:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/pfad/zu/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:pfad/zu/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/pfad/zu/repo.git</td></tr><tr><td align='right'><b>Lokal</b></td><td>/pfad/zu/repo, C:\pfad\zu\repo</td></tr></table> - + Protocol: Protokoll: - + URL: URL: @@ -3400,12 +3710,12 @@ Konflikt zu beheben RemoteTableModel - + Name Name - + URL URL @@ -3413,61 +3723,74 @@ Konflikt zu beheben RemotesPanel - + Delete Remote? Remote löschen? - + Are you sure you want to delete '%1'? Bist Du sicher, dass Du '%1' löschen willst? - + Delete Löschen + + RenameBranchDialog + + + Name: + Name: + + + + Rename Branch + + + RepoModel - + Clone Repository Repository klonen - + Open Existing Repository Bestehendes Repository öffnen - + Initialize New Repository Neues Repository initialisieren - + Connecting Verbinde - + open geöffnet - + recent zuletzt geöffnet - + remote remote - - + + none keine @@ -3475,125 +3798,156 @@ Konflikt zu beheben RepoView - + Indexing... Indiziere... - + Search Suche - The indexer worker process crashed. If this problem persists please contact us at support@gitahead.com. - Der Indexer-Arbeitsprozess ist abgestürzt. Falls das Problem bestehen bleibt, bitte kontaktiere uns unter support@gitahead.com. + Der Indexer-Arbeitsprozess ist abgestürzt. Falls das Problem bestehen bleibt, bitte kontaktiere uns unter support@gitahead.com. - + Indexer Crashed Indexer abgestürzt - + Stage Directory? Ordner stagen? - + Are you sure you want to stage '%1'? Bist Du sicher, dass Du '%1' stagen willst? - + This will result in the addition of %1 files. Dadurch werden %1 Dateien hinzugefügt. - + more than 100 mehr als 100 - + Stage Directory Ordner stagen - + Stop prompting to stage directories Nicht mehr nachfragen - + Stage Large File? Große Datei stagen? - + Are you sure you want to stage '%1' with a size of %2? Bist Du sicher, dass Du '%1' mit einer Größe von %2 stagen willst? - + Stage Stagen - + Track with LFS Mit LFS tracken - + This repository has LFS enabled. Do you want to track the file with LFS instead? Dieses Repository hat LFS aktiviert. Möchstest Du die Datei stattdessen mit LFS tracken? - + Stop prompting to stage large files Nicht mehr nachfragen - + stage - + Git LFS was not found on the PATH. <a href='https://git-lfs.github.com'>Install Git LFS</a> to use LFS integration. Git LFS wurde nicht im PATH gefunden. <a href='https://git-lfs.github.com'>Installiere GIT LFS</a>,um LFS-Integration zu nutzen. - + untracked file ungetrackte Datei - + untracked files ungetrackte Dateien - + Remove Untracked Files Ungetrackte Dateien entfernen - + Remove %1 %2? %1 %2 löschen? - + This action cannot be undone. Die Aktion kann nicht rückgängig gemacht werden. - + Remove Entfernen + + + + Certificate Error + + + + + SSL verification disabled for this repository + + + + + [http] + sslVerify = false + +was added to %1/config + + + + + SSL verification disabled for all git repositories + + + + + [http] + sslVerify = false + +was added to %1 + + Pull Request @@ -3610,265 +3964,283 @@ Konflikt zu beheben Pull-Request erstellen - - - + + + Git LFS GIT LFS - + Initialize Initialisieren - + initialize - + Git LFS initialized. GIT LFS initialisiert. - + Deinitialize Deinitialisieren - + deinitialize - + Git LFS Deinitialized. GIT LFS deinitialisiert. - + Lock sperren - + Unlock entsperren - - + + Unable to %1 '%2' - %3 Kann nicht '%2' %1 - %3 - + Unable to %1 - %2 Kann nicht %1 - %2 - + %1 remotes %1 Remotes - + Fetch All Fetche alle - + Fetch Fetche - - - + + + <i>no remote</i> <i>kein Remote</i> - + Unable to fetch. No upstream is configured for the current branch, and there isn't a remote called 'origin'. Kann nicht fetchen. Kein Upstream ist für den aktuellen branch konfiguriert und es gibt kein Remote namens 'origin'. - - + + Fetch canceled. Fetchen abgebrochen. - + fetch from fetche von - + + You may disable ssl verification <a href='action:sslverifyrepo'>for this repository</a> or overall disable ssl verification <a href='action:sslverifygit'>for all repositories</a>. + + + + - + Everything up-to-date. Bereits aktuell. - - - + + + <i>no branch</i> <i>kein Branch</i> - + %1 from %2 %1 von %2 - + Pull Pulle - + <i>no upstream</i> <i>kein Upstream</i> - + Merge Merge - + %1 into %2 %1 in %2 - + Fast-forward Fast-Forward - + %2 to %1 %2 nach %1 - + + Rebase Rebase - + %2 on %1 %2 auf %1 - + The repository is empty. - + The current branch '%1' has no upstream branch. Der aktuelle Branch '%1' hat keinen Upstream. - - + + Already up-to-date. Bereits aktuell. - + Unable to fast-forward. Kann nicht fast-forwarden. - + fast-forward Fast-Forward - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='%1'>fast-forward</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Du kannst ggf. Deine Änderungen mit den konfliktierenden Dateien lösen, indem Du erst <a href='action:stash'>stashst</a>, dann <a href='%1'>fast-forwardest</a> und schließlich <a href='action:unstash'>unstashst</a> um Deine Änderungen wiederherzustellen. - + If you want to create a new merge commit instead of fast-forwarding, you can <a href='%1'>merge without fast-forwarding </a> instead. Wenn Du statt fast-forwarden einen neuen Merge-Commit erzeugen willst, kannst du <a href='%1'>dies tun</>. - - - - + + + + merge Merge - - + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:merge'>merge</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Du kannst ggf. rebasen, indem Du erst <a href='action:stash'>stashst</a>, dann <a href='action:merge'>mergest</a> und schließlich <a href='action:unstash'>unstashst</a> um Deine Änderungen wiederherzustellen. - - + + + Abort Abbrechen - + Some merged files have unstaged changes Einige gemergte Dateien haben ungestagte Änderungen - + abort merge merge abbrechen - - - + + + revert Revert - - - + + + cherry-pick Cherry-Pick - - - + + + rebase Rebase - + + Continue ongoing rebase + + + + + Invalid head. + + + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:rebase'>rebase</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Du kannst ggf. rebasen, indem Du erst <a href='action:stash'>stashst</a>, dann <a href='action:rebase'>rebast</a> und schließlich <a href='action:unstash'>unstashst</a> um Deine Änderungen wiederherzustellen. - + + %1/%2 %1/%2 - + %1 - %2 %1 - %2 - + Apply Anwenden @@ -3877,34 +4249,33 @@ Konflikt zu beheben Es gab einen Merge-Konflikt. Der Rebase wurde offen gelassen - There was a merge conflict. The rebase has been aborted - Es gab einen Merge-Konflikt. Der Rebase wurde abgebrochen + Es gab einen Merge-Konflikt. Der Rebase wurde abgebrochen - + %1 - %2 <i>already applied</i> %1 - %2 <i>bereits angewandt</i> - + %1 - %2 as %3 %1 - %2 als %3 - - - + + + squash Squashen - + Revert Reverte - + Revert "%1" This reverts commit %2. @@ -3913,462 +4284,532 @@ This reverts commit %2. Dies reverted den Commit %2. - + <i>detached HEAD</i> <i>losgelöster HEAD</i> - + %1 on %2 %1 auf %2 - + Cherry-pick Cherry-Picke - Force Push? - Force-Push? + Force-Push? - + Are you sure you want to force push? Bist Du sicher, dass Du force-pushen willst? - + The remote will lose any commits that are reachable only from the overwritten reference. Dropped commits may be unexpectedly reintroduced by clones that already contain those commits locally. Der Remote wird jegliche Commits verlieren, die nur durch die überschriebene Referenz erreichbar sind. Entfernte Commits können unerwartet durch Klone, die bereits diese Commits lokal haben, wieder auftauchen. - + Force Push Force-Push - + <i>no reference</i> <i>keine Referenz</i> - + Push Pushe - + Push (Force) Pushe (erzwungen) - - + + %1 to %2 %1 nach %2 - - + + You are not currently on a branch. Du bist derzeit auf keinem Branch. - + Create a commit to add the default '%1' branch. Erstelle einen Commit, um den Standard-Branch '%1' hinzuzufügen. - + You can <a href='action:checkout'>checkout</a> a branch then <a href='action:push'>push</a> again, or <a href='action:push-to'>push to an explicit branch</a>. Du kannst einen Branch <a href='action:checkout'>auschecken</a>,dann erneut <a href='action:push'>pushen</a>, oder <a href='action:push-to'>zu einem expliziten Branch pushen</a>. - + The current branch '%1' has no default remote. Der aktuelle Branch '%1' hat keinen Standard-Remote. - + You may want to <a href='action:add-remote?name=origin'>add a remote named 'origin'</a>. Then <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a> to begin tracking a remote branch called 'origin/%1'. Ggf. möchtest Du <a href='action:add-remote?name=origin'>einen Remote namens 'origin' hinzufügen</a> und dann <a href='action:push?set-upstream=true'>pushen und den Upstream des aktuellen Branches setzen</a>, um einen entfernten Branch namens 'origin/%1' zu tracken. - + You can also <a href='action:push-to'>push to an explicit URL</a> if you don't want to track a remote branch. Du kannst auch <a href='action:push-to'>zu einer expliziten URL pushen</a>, wenn Du keinen entfernten Branch tracken willst. - + To begin tracking a remote branch called '%1', <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a>. Um einen entfernten Branch namens '%1' zu tracken, <a href='action:push?set-upstream=true'>pushe und setze den Upstream des aktuellen Branches</a>. - + To push without setting up tracking information, <a href='action:push?ref=%1'>push '%2'</a> explicitly. Um zu pushen, ohne Tracking-Informationen zu konfigurieren, <a href='action:push?ref=%1'>pushe '%2'</a> explizit. - + Push canceled. Pushen abgebrochen. - + push to pushen - + The tag update may cause the remote to lose commits. Das Aktualisieren des Tags kann dazu führen, dass im Remote Commits verloren gehen. - + If you want to risk the remote losing commits, you can <a href='action:push?ref=%1&to=%2&force=true'>force push</a>. Wenn Du das Risiko, dass im Remote Commits verloren gehen, eingehen willst, kannst Du <a href='action:push?ref=%1&to=%2&force=true'>force-pushen</a>. - You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push'>push</a> again. - Ggf. möchtest Du entfernte commits integrieren, indem du <a href='action:pull'>pullst</a> und danach erneut <a href='action:push'>pushst</a>. + Ggf. möchtest Du entfernte commits integrieren, indem du <a href='action:pull'>pullst</a> und danach erneut <a href='action:push'>pushst</a>. - If you really want the remote to lose commits, you may be able to <a href='action:push?force=true'>force push</a>. - Wenn Du wirklich willst, dass der Remote Commits verliert, kannst du ggf. <a href='action:push?force=true'>force-pushen</a>. + Wenn Du wirklich willst, dass der Remote Commits verliert, kannst du ggf. <a href='action:push?force=true'>force-pushen</a>. - + Commit? Commit? - + Are you sure you want to commit on a detached HEAD? Bist Du sicher, dass Du auf einen losgelösten HEAD committen willst? - + <p>You are in a detached HEAD state. You can still commit, but the new commit will not be reachable from any branch. If you want to commit to an existing branch, checkout the branch first.</p> <p>Du bist derzeit auf einem losgelösten HEAD. Du kannst weiterhin committen, aber der neue Commit wird von keinem Branch aus erreichbar sein. Wenn Du auf einem bestehendem Branch committen willst, checke diesen erst aus.</p> - - + + Commit Committe - - + + <i>no commit</i> <i>kein Commit</i> - + commit commit - + This commit was signed with a generated user name and email. Dieser Commit wurde mit einem generierten Benutzernamen und E-Mail-Adresse signiert. - + Consider setting the user name and email in <a href='action:config?global=true'>global settings</a>. Denke darüber nach, Benutzername und E-Mail-Adresse in den<a href='action:config?global=true'>globalen Einstellungen</a> zu hinterlegen. - + If you want to limit the name and email settings to this repository, <a href='action:config'>edit repository settings</a> instead. Wenn Du Benutzername und E-Mail-Adresse auf dieses Repository einschränken willst, bearbeite stattdessen die <a href='action:config'>Repository-Einstellungen</a>. - + After settings have been updated, <a href='action:amend'> amend this commit</a> to record the new user name and email. Nachdem die Einstellungen angepasst sind, <a href='action:amend'>amende diesen Commit</a> um den neuen Benutzernamen und E-Mail-Adresse zu protokollieren. - + file Datei - + files Dateien - + %1 - %2 %3 %1 - %2 %3 - - + + Checkout Checke aus - + Checkout Detached HEAD? Losgelösten HEAD auschecken? - + Checkout Detached HEAD Losgelösten HEAD auschecken - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to reset the existing local branch '%2' to this commit instead? Den entfernten Branch '%1' auszuchecken wird in einem losgelösen HEAD resultieren. Möchtest Du stattdessen den bereits bestehenden lokalen Branch '%2' auf diesen Commit zurücksetzen? - + Reset Local Branch Lokalen Branch zurücksetzen - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to create a new local branch called '%2' to track it instead? Den entfernten Branch '%1' auszuchecken wird in einem losgelösen HEAD resultieren. Möchtest Du stattdessen einen lokalen Branch '%2' erstellen, der den entfernten Branch trackt? - + Create a local branch to start tracking remote changes and make new commits. Check out the detached HEAD to temporarily put your working directory into the state of the remote branch. Erstelle einen lokalen Branch, um Änderungen im Remote zu tracken und neue Commits zu machen. Checke den losgelösten HEAD aus, um temporär den Arbeitsordner auf den Status des entfernten Branches zu setzen. - + Create Local Branch Lokalen Branch erstellen - + checkout auschecken - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='action:checkout?%1'>checkout '%2'</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Du kannst ggf. Deine Änderungen mit den konfliktierenden Dateien lösen, indem Du erst <a href='action:stash'>stashst</a>, dann <a href='action:checkout?%1'>'%2' auscheckst</a> und schließlich <a href='action:unstash'>unstashst</a> um Deine Änderungen wiederherzustellen. - + New Branch Neuer Branch - + create new branch erstelle neuen Branch - + (no branch) (kein Branch) - + WIP on %1: %2 %3 WIP auf %1: %2 %3 - + <i>working directory</i> <i>Arbeitsordner</i> - + Stash Stashe - + stash stashen - + Apply Stash Wende Stash an - + apply stash Stash anwenden - + Drop Stash Droppe Stash - + drop stash stash droppen - + Pop Stash Poppe Stash - + pop stash Stash poppen - + %1 as %2 %1 als %2 - + Tag Tagge - + tag taggen - - - + + Amend Amende - - - + + Amending commit %1 + + + + + %1 to %2 + update ref + %1 nach %2 + + + + + + + + Reset Setze zurück - Amend? - Amenden? + Amenden? - Reset? - Zurücksetzen? + Zurücksetzen? - Are you sure you want to amend '%1'? - Bist Du sicher, dass Du '%1' amenden willst? + Bist Du sicher, dass Du '%1' amenden willst? - + Are you sure you want to reset '%1' to '%2'? Bist Du sicher, dass Du '%1' nach '%2' zurücksetzen willst? - + <p>Some commits may become unreachable from the current branch.</p> <p>Einige Commits können vom aktuellen Branch aus unerreichbar werden.</p> - + <p>Resetting will cause you to lose uncommitted changes. Untracked and ignored files will not be affected.</p> <p>Resetten kann zu verlorenen Commits führen. Ungetrackte und ignorierte Dateien werden davon nicht betroffen sein.</p> - + <p>Your branch appears to be up-to-date with its upstream branch. Resetting may cause your branch history to diverge from the remote branch history.</p> <p>Dein Branch scheint auf dem gleichen Stand wie sein Upstream-Branch zu sein. Zurücksetzen kann dazu führen, dass deine Branch-History von der des entfernten Branches divergiert.</p> - + + amend amenden - + reset zurücksetzen - + + %1 of %2 submodules %1 von %2 Submodulen - - + + Update Updaten - + + update submodule Submodule updaten - + + The indexer worker process crashed. If this problem persists please contact us at <TODO: replace.support@gitahead.com>. + + + + + Please resolve conflicts before continue + + + + + Conflict + + + + + Rebase finished + + + + + Force Push to %1? + + + + + You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push?to=%1'>push</a> again. + + + + + If you really want the remote to lose commits, you may be able to <a href='action:push?to=%1&force=true'>force push</a>. + + + + + Reset canceled. + + + + + Untouched + + + + Invalid Submodule Repository Ungültiges Submodul-Repository - + The submodule '%1' doesn't have a valid repository. You may need to init and/or update the submodule to check out a repository. Das Submodul '%1' hat kein gültiges Repository. Ggf. musst Du das Submodul initialisieren und/oder updaten um das Repository auszuchecken. - + + No terminal executable found + + + + + No terminal executable was found. Please configure a terminal in the configuration. + + + + + Open Configuration + + + + There was a merge conflict. Es gab einen Merge-Konflikt. - + Resolve conflicts, then commit to conclude the %1. See <a href='expand'>details</a>. Löse die Konflikte und committe dann, um das %1 abzuschließen. Siehe <a href='expand'>Details</a>. - + Resolve conflicts in each conflicted (!) file in one of the following ways: Löse Konflikte in jeder Datei mit Konflikten (!) auf einem der folgenden Wege: - + 1. Click the 'Ours' or 'Theirs' button to choose the correct change. Then click the 'Save' button to apply. 1. Klicke den 'Unsers'- oder 'Ihres'-Button um die korrekte Änderung auszuwählen. Klicke dann auf 'Speichern' zum Anwenden. - + 2. Edit the file in the editor to make a different change. Remember to remove conflict markers. 2. Bearbeite die Datei im Editor um eine andere Änderung zu verwernden. Vergiss nicht, die Konflikt-Marker zu entfernen. - + 3. Use an external merge tool. Right-click on the files in the list and choose 'External Merge'. 3. Benutze ein externes Merge-Tool. Rechts-Klicke auf die Datei in der Liste und wähle 'Externer Merge'. - + After all conflicts in the file are resolved, click the check box to mark it as resolved. Nachdem alle Konflikte in der Datei gelöst sind, klicke auf die Check-Box, um sie als gelöst zu markieren. - + After all conflicted files are staged, commit to conclude the %1. Nachdem alle Dateien mit Konflikten gestaged sind, commite, um das %1 abzuschließen. - + You can <a href='action:abort'>abort</a> the %1 to return the repository to its previous state. Du kannst das %1 <a href='action:abort'>abbrechen</a>, um das Repository in den vorherigen Zustand zu bringen. - + Esc @@ -4376,12 +4817,12 @@ Dies reverted den Commit %2. Repository - + Unknown error Unbekannter Fehler - + git-lfs not found git-lfs nicht gefunden @@ -4389,7 +4830,7 @@ Dies reverted den Commit %2. SearchField - + Search Suche @@ -4397,32 +4838,32 @@ Dies reverted den Commit %2. SearchPanel - + Enable indexing Indizierung aktivieren - + terms Terme - + lines Zeilen - + Limit commits to: Beschränke Commits auf: - + Diff context: Diff-Kontext: - + Remove Index Index entfernen @@ -4430,32 +4871,32 @@ Dies reverted den Commit %2. Settings - + Prompt to edit stash message before stashing Auffordern, die Stash-Nachricht zu bearbeiten, bevor gestasht wird - + Prompt to edit commit message before merging Auffordern, die Commit-Nachricht zu bearbeiten, bevor gemerged wird - + Prompt to edit commit message before reverting Auffordern, die Commit-Nachricht zu bearbeiten, bevor reverted wird - + Prompt to edit commit message before cherry-picking Auffordern, die Commit-Nachricht zu bearbeiten, bevor gecherry-picked wird - + Prompt to stage directories Auffordern, Ordner zu stagen - + Prompt to stage large files Auffordern, große Dateien zu stagen @@ -4463,66 +4904,67 @@ Dies reverted den Commit %2. SettingsDialog - + Global git settings can be overridden for each repository in the corresponding repository configuration page. Globale GIT-Einstellungen können für jedes Repository in den entsprechenden Einstellungs-Seiten überschrieben werden. - + Edit Config File... Konfigurations-Datei bearbeiten... - + General Allgemein - + Diff Diff - + Tools Tools - + Window Fenster - + Editor Editor - + Update Update - + Plugins Plugins - + Misc Sonstiges + Hotkeys - Hotkeys + Hotkeys - + Terminal Terminal - + Esc @@ -4530,22 +4972,22 @@ Dies reverted den Commit %2. ShowTool - + Finder - + Explorer - + Default File Browser - + Show in %1 Zeige in %1 @@ -4553,14 +4995,14 @@ Dies reverted den Commit %2. SideBar - + Close Schließen - - + + Remove Entfernen @@ -4585,57 +5027,57 @@ Dies reverted den Commit %2. Repository öffnen - + Initialize New Repository Neues Repository initialisieren - + Add %1 Account %1-Account hinzufügen - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>Bist Du sicher, dass Du die Zuordnung zum entfernten Repository für %1 entfernen willst?</p><p>Der lokale Klon selber wird nicht betroffen sein.</p> - + Remove Repository Association? Zuordnung zu entferntem Repository entfernen? - + Clear All Recent 'Zuletzt geöffnet' leeren - + Show Full Path Vollständigen Pfad anzeigen - + Filter Non-existent Paths Non-Existente Pfade filtern - + Refresh Remote Accounts Entfernte Accounts aktualisieren - + Show Full Name Vollständigen Namen anzeigen - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>Bist Du sicher, dass Du den %1-Account für '%2' entfernen möchtest?</p><p>Nur die Account-Zuordnung ist davon betroffen; Remote-Einstellungen und lokale Klone werden nicht betroffen sein.</p> - + Remove Account? Account entfernen? @@ -4643,108 +5085,108 @@ Dies reverted den Commit %2. StartDialog - + Choose Repository Repository auswählen - + Understand your history! Verstehe Deine History! - + Clone Repository Repository klonen - + Open Existing Repository Bestehendes Repository öffnen - + Open Repository Repository öffnen - + Initialize New Repository Neues Repository initialisieren - + Clear All Alle Leeren - + Show Full Path Vollständigen Pfad anzeigen - + Filter Non-existent Paths Non-Existente Pfade filtern - + Repositories: Repositories: - + Refresh Aktualisieren - + Show Full Name Vollständigen Namen anzeigen - + Remote: Remote: - + View Getting Started Video Hilfe-Video ansehen - + Clone Klonen - + Open Öffnen - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>Bist Du sicher, dass Du den %1-Account für '%2' entfernen möchtest?</p><p>Nur die Account-Zuordnung ist davon betroffen; Remote-Einstellungen und lokale Klone werden nicht betroffen sein.</p> - + Remove Account? Account entfernen? - - + + Remove Entfernen - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>Bist Du sicher, dass Du die Zuordnung zum entfernten Repository für %1 entfernen willst?</p><p>Der lokale Klon selber wird nicht betroffen sein.</p> - + Remove Repository Association? Zuordnung zu entferntem Repository entfernen? @@ -4752,7 +5194,7 @@ Dies reverted den Commit %2. SubmoduleTableModel - + Name Name @@ -4762,32 +5204,32 @@ Dies reverted den Commit %2. URL - + Branch Branch - + Initialized Initialisiert - + Deinitializing '%1' will remove its working directory. Are you sure you want to deinitialize? '%1' zu deinitialisieren wird dessen Arbeitsordner entfernen. Bist Du sicher, dass du deinitialisieren willst? - + Deinitialize Submodule? Submodul deinitialisieren? - + The submodule working directory contains uncommitted changes that will be lost if you continue. Der Arbeitsorder des Submoduls enthält uncommittete Änderungen, die verloren gehen, wenn Du fortfährst. - + Deinitialize Deinitialisieren @@ -4821,31 +5263,107 @@ Dies reverted den Commit %2. Kommentiert - + Name Name + + TemplateDialog + + + Name + Name + + + + Content + + + + + + Add + + + + + use %1 to declare the position of the cursor. + + + + + use ${files:x} to add all updated file names, +x (number) determines the number of maximum files shown + + + + + Remove + Entfernen + + + + Up + + + + + Down + + + + + Import + + + + + Export + + + + + Open File + + + + + + Gittyup Templates (*%1) + + + + + Save Templates + + + + + Replace + Ersetzen + + TerminalPanel - - + + Install Installieren - + Name: Name: - + Location: Ort: - + Uninstall Deinstallieren @@ -4853,32 +5371,32 @@ Dies reverted den Commit %2. TextEdit - + Replace... - + Replace All... - + Ignore Ignorieren - + Ignore All - + Add to User Dictionary - + Do not Ignore @@ -4886,119 +5404,154 @@ Dies reverted den Commit %2. ThemeDialog - Native Theme - Natives Thema + Natives Thema - + A flexible look matching system colors Ein flexibler Look, der zu den System-Farben passt - + Dark Theme Dunkles Thema - + + Pick a theme for Gittyup + + + + + Default Theme + + + + + A consistent bright theme + + + + A consistent look optimal for reducing eye strain Ein konsistentes Thema; optimiert, um die Belastung der Augen zu reduzieren + + + System Theme + + ToolBar - + Show repository sidebar Repository-Seitenleiste anzeigen - + Previous Vorheriges - + Next Nächstes - + Fetch Fetchen - + Pull Pullen - + Merge - + Rebase - + Push Pushen - + Checkout Auschecken - + Stash Stashen - + Pop Stash Stash poppen + Open Terminal - Terminal öffnen + Terminal öffnen + Open file manager - Dateimanager öffnen + Dateimanager öffnen - + Configure Settings Einstellungen + + + Repository settings + + - + Application settings + + + + + Show Log Log anzeigen - - Diff View - Unterschiede anzeigen + + Double Tree View + - + Diff View + Unterschiede anzeigen + + + Tree View Baumansicht benutzen - + Show Starred Commits Favorisierte Commits anzeigen - + Hide Log Log verstecken @@ -5006,32 +5559,42 @@ Dies reverted den Commit %2. ToolsPanel - + Keep backup of merge files (.orig) Backups von Merge-Dateien (.orig) behalten - + External editor: Externer Editor: - + External diff: Externes Diff: - + External merge: Externes Merge: - + Backup files: Backup-Dateien: - + + Terminal emulator command: + Terminal-Emulator-Befehl: + + + + File manager command: + Dateimanager-Befehl: + + + Configure Konfigurieren @@ -5039,11 +5602,68 @@ Dies reverted den Commit %2. TreeModel - + Submodule Submodul + + TreeView + + + Directory + Ordner + + + + File + Datei + + + + Remove or discard %1? + + + + + Are you sure you want to remove or discard all changes in '%1'? + + + + + This action cannot be undone. + Die Aktion kann nicht rückgängig gemacht werden. + + + + + Discard + Verwerfen + + + + discard + verwerfe + + + + TreeWidget + + + Search: + + + + + Regex + + + + + Case Sensitive + Groß- / Kleinschreibung beachten + + UntrackedDirWidget @@ -5054,12 +5674,12 @@ Dies reverted den Commit %2. UpToDateDialog - + Already Up-to-date Bereits aktuell - + %1 is already up-to-date. You have version %2. %1 ist bereits aktuell. Du hast Version %2. @@ -5067,55 +5687,76 @@ Dies reverted den Commit %2. UpdateDialog - + Update %1 Aktualisiere %1 - + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. The new version will be soon available in your package manager. Just update your system.</p><b>Release Notes:</b> + + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. Would you like to download it now?</p><b>Release Notes:</b> <h3>Eine neue Version von %1 is verfügbar!</h3><p>%1 %2 ist jetzt verfügbar - Du hast %3. Möchtest Du es jetzt herunterladen?</p><b>Release Notes:</b> - + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3.</p><p>If you downloaded the flatpak package over a package manager or from flathub.org <br/>you don't have to install manually a new version. It will be available within the next <br/>days during your system update: <code>flatpak update</code></p><b>Release Notes:</b> + + + + Automatically download and install updates Automatisch Updates herunterladen und installieren - + Install Update Installiere Update - + Remind Me Later Erinner mich später - + Skip This Version Diese Version überspringen + + + Ok + + + + + Donate + + UpdatePanel - + Check for updates automatically Automatisch auf Updates prüfen - + Automatically download and install updates Automatisch Updates herunterladen und installieren - + Check Now Jetzt prüfen - + Software Update: Software-Update: @@ -5123,17 +5764,17 @@ Dies reverted den Commit %2. UpdateSubmodulesDialog - + Recursive Rekursiv - + Init Initialisieren - + Update Aktualisieren @@ -5141,53 +5782,59 @@ Dies reverted den Commit %2. Updater - + Update Failed Update fehlgeschlagen - + Unable to check for updates Kann nicht auf Updates prüfen - + Unable to download update Kann Update nicht herunterladen - + Unable to open temporary file Kann temporäre Datei nicht öffnen - + Unable to install update Kann Update nicht installieren - - Some windows failed to close - Einige Fenster konnten nicht geschlossen werden + + Some windows failed to close. You can download the binary manually from %1 + - + Some windows failed to close + Einige Fenster konnten nicht geschlossen werden + + + Unknown install error Unbekannter Installations-Fehler - + + Installer script failed: %1 Installer-Skript schlug fehl: %1 - + + Helper application failed to start Helfer-Programm konnte nicht gestartet werden - + Installer failed to start Installer konnte nicht gestartet werden @@ -5210,94 +5857,139 @@ Dies reverted den Commit %2. WindowPanel - + Add New Theme Neues Thema hinzufügen - + Edit Current Theme Aktuelles Thema bearbeiten - + Create Theme Thema erstellen - + Theme Name Name des Themas - + Restart? Neustart? - + The application must be restarted for the theme change to take effect. Die Anwendung muss neu gestartet werden, damit die Änderungen am Thema übernommen werden. - + Do you want to restart now? Möchtest Du jetzt neu starten? - + Restart Neustart - + Later Später - + Show full repository path Zeige vollen Repository-Pfad - + Hide automatically Automatisch verstecken - + Open submodules in tabs Submodule in Tabs öffnen - + Open all repositories in tabs Alle Repositories in Tabs öffnen - + + Hide Menubar + + + + + Show Avatars + + + + Theme: Thema: - + Title: Titel: - + Log: Log: - + Tabs: Tabs: - + + View: + + + + Prompt: Aufforderungen: + + _FileWidget::Header + + + + Use Theirs: Delete + + + + + + Use Ours: Delete + + + + + both: %1 + + + + + ours: %1 + + + + + theirs: %1 + + + diff --git a/l10n/gittyup_en.ts b/l10n/gittyup_en.ts index ad615c11..02d27b99 100644 --- a/l10n/gittyup_en.ts +++ b/l10n/gittyup_en.ts @@ -4,55 +4,55 @@ AboutDialog - + About %1 - + Understand your history! - + Changelog - + Acknowledgments - + Privacy - - - Usage reporting has been disabled. Restart the application for changes to take effect. - - - - - Usage Reporting Disabled - - Account - + + Connection failed + + + + <b>Note:</b> Basic authentication is not supported if you have two-factor authentication enabled. Use a <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>personal access token</a> in the password field instead. - + + <b>Note:</b> Only Basic authentication is currently supported + + + + <b>Note:</b> Basic authentication is not supported. Use a <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>personal access token</a> in the password field instead. - + Authentication failed @@ -60,7 +60,7 @@ AccountDialog - + Add Remote Account @@ -90,32 +90,32 @@ - + Replace? - + An account of this type already exists. - + Would you like to replace the previous account? - + Replace - + Cancel - + Connection Failed @@ -123,18 +123,18 @@ AddRemoteDialog - - + + Add Remote - + Name: - + URL: @@ -142,7 +142,7 @@ AdvancedButton - + Advanced Search @@ -150,219 +150,249 @@ AdvancedSearchWidget - + Author: - + Author name - + Email: - + Author email - + Message: - + Commit message - + Date: - + Specific commit date - + After: - + Commits after date - + Before: - + Commits before date - + File: - + File name - + Path: - + File path - + Scope: - + Hunk header text - + Context: - + Diff context (white) - + Addition: - + Diff addition (green) - + Deletion: - + Diff deletion (red) - + Comment: - + Source code comment - + String: - + Source code string literal - + Identifier: - + Source code identifier - + Search - + Return + + AmendDialog + + + Author + + + + + Committer + + + + + Commit Message: + + + + + Amend + + + + + Cancel + + + Application - + SSL Errors - + Failed to set up SSL session. Do you want to ignore these errors? - Beanstalk + AuthorCommitterDate - - Connection failed + + Author/Committer: - - - Bitbucket - - Connection failed + + Author: + + + + + Committer: BlameEditor - + Untitled - + Not Tracked - + HEAD - + Working Copy - + Save File @@ -370,12 +400,12 @@ BlameMargin - + Not Committed - + Invalid Signature @@ -383,17 +413,17 @@ BranchTableModel - + Name - + Upstream - + Rebase @@ -401,17 +431,17 @@ CheckoutDialog - + Detach HEAD - + References: - + Checkout @@ -419,7 +449,7 @@ ClearButton - + Clear @@ -427,32 +457,32 @@ CloneDialog - + Initialize Repository - + Clone Repository - + Initialized empty repository into '%1' - + Cloned repository from '%1' into '%2' - + Initialize - + Clone @@ -460,33 +490,33 @@ ClonePage - + Clone Progress - + The new repository will open after the clone finishes. - + Clone - - + + clone - + Clone canceled. - + Failed to %1 into '%2' - %3 @@ -494,27 +524,27 @@ CommitDetail - + Copy - + Range: - + Id: - + initial commit - + Parents: @@ -572,120 +602,165 @@ CommitEditor - + + T + + + + <b>Commit Message:</b> - - + + Spell Check Language - + The dictionary '%1' is invalid - + Spell checking is disabled. - + The choosen dictionary '%1.dic' is not a valid hunspell dictionary. - - + + Invalid dictionary '%1.dic' - + Edit User Dictionary - + Stage All - + Unstage All - - + + Commit - - Update %1 + + Abort rebasing - - Update %1 and %2 + + Continue rebasing - - Update %1, %2, and %3 + + Abort Merge - - Update %1, %2, and %3 more files... + + %1 - + + %1 and %2 + + + + + %1, %2, and %3 + + + + + Merge + + + + + Revert + + + + + Cherry-pick + + + + + Rebase + + + + + Abort %1 + + + + + Commit Rebase + + + + Nothing staged - + %1 of %2 file staged - + %1 of %2 files staged - + %1 file partially staged - + %1 files partially staged - + %1 unresolved conflict - + %1 unresolved conflicts - + all conflicts resolved - + Commit Merge @@ -693,114 +768,123 @@ CommitList - + Remove Untracked Files - + Apply - + Pop - + Drop - + Unstar - + Star - + Add Tag... - + New Branch... - - Delete Tag %1 + + Rename Branch - - Delete Branch %1 + + Delete Branch - + + Delete Tag + + + + Merge... - + Rebase... - + Squash... - + Revert - + Cherry-pick - - - + + Checkout %1 - + + Checkout + + + + Local branch is already checked out - + This is a bare repository - + Reset - + Soft - + Mixed - + Hard @@ -808,12 +892,12 @@ CommitModel - + Uncommitted changes - + Checking for uncommitted changes @@ -821,128 +905,161 @@ CommitToolBar - + Show All Branches - + Show Selected Branch - + Sort by Date - + Sort Topologically - + Show Graph - + Show Clean Status - + Compact Mode + + + Show Author + + + + + Show Date + + + + + Show Id + + ConfigDialog - + Esc - + General - + Diff - + Remotes - + Branches - + Submodules - + Search - + Plugins - + LFS - + Edit Config File... + + DateSelectionGroupWidget + + + Datetime source + + + + + Current + + + + + Manual + + + + + Original + + + DefaultWidget - + Clone repository - + Open existing repository - + Open Repository - + Initialize new repository - + Add %1 account - - View getting started videos - - - - + Contact us for support @@ -950,47 +1067,47 @@ DeleteBranchDialog - + Are you sure you want to delete local branch '%1'? - + Delete Branch? - + Also delete the upstream branch from its remote - + Delete - + delete '%1' from '%2' - + Push - + Push canceled. - + Unable to push to %1 - %2 - + The branch is not fully merged. Deleting it may cause some commits to be lost. @@ -998,56 +1115,81 @@ DeleteTagDialog - + Are you sure you want to delete tag '%1'? - + Delete Tag? - + Also delete the upstream tag from %1 - + Delete - + delete '%1' from '%2' - + Push - + Push canceled. - + Unable to push to %1 - %2 - + Delete Tag - + delete tag + + DetailView + + + + Author: + + + + + reset + + + + + Here you can set the author used for committing +These settings will not be saved permanently + + + + + Email: + + + DiffPanel @@ -1081,17 +1223,17 @@ - + Deleted files - + Whitespace: - + Auto Collapse: @@ -1099,43 +1241,89 @@ DiffTool - + External Diff + + DiffTreeModel + + + Submodule + + + DiffView - + Add new file - + Or drag files here to copy into the repository + + DoubleTreeWidget + + + Blame + + + + + Show Blame Editor + + + + + Diff + + + + + Show Diff View + + + + + Single Tree View + + + + + List View + + + + + Hide Untracked Files + + + DownloadDialog - + Update %1 - + Downloading %1... - + Download Complete! - + Install and Restart @@ -1143,17 +1331,17 @@ EditButton - + Edit Working Copy - + Edit New Revision - + Edit Old Revision @@ -1161,7 +1349,7 @@ EditTool - + Edit in External Editor @@ -1169,47 +1357,47 @@ EditorPanel - + Tabs - + Spaces - + Show heat map - + Font: - + Font size: - + Indent using: - + Indent width: - + Tab width: - + Blame margin: @@ -1217,12 +1405,12 @@ EditorWindow - + '%1' has been modified. Do you want to save your changes? - + Save Changes? @@ -1230,22 +1418,22 @@ ExternalToolsDialog - + Configure External Tools - + Detected Tools - + User Defined Tools - + Select Executable @@ -1253,17 +1441,17 @@ ExternalToolsModel - + Name - + Command - + Arguments @@ -1271,359 +1459,352 @@ FileContextMenu - + Revision Not Found - + The selected file doesn't have a %1 revision. - + Bash Not Found - + Bash was not found on your PATH. - + Bash is required to execute external tools. - + Stage - + Unstage - - + + Discard Changes - + Discard Changes? - + Are you sure you want to discard changes in the selected files? - + This action cannot be undone. - + + (Submodule) + + + + %1 files - + Discard - + discard - + Remove Untracked Files - + Ignore - + Checkout - + Unlock - + Lock - + Copy File Name - + Filter History - + Navigate to - + Next Revision - + next - + Previous Revision - + previous - + Unset Executable - + Set Executable - + + Save Selected Version as ... + + + + + Select new file directory + + + + + Saving files + + + + + Saving files of selected version to disk + + + + + Save file + + + + + Invalid Blob + + + + + Open this version + + + + + Opening file + + + + + Open + + + + + open file + + + + + Blob is invalid. + + + + + + Unable to checkout bare repositories + + + + + Unable to open files from bare repository + + + + + The file is already in the current working directory + + + + edit - + diff - + merge - + External Tool Not Found - + Failed to execute external %1 tool. - - FileList - - - Sort By - - - - - Select - - - - - Name - - - - - Status - - - - - Ignore Whitespace (-w) - - - - - Added - - - - - Deleted - - - - - Modified - - - - - Renamed - - - - - Copied - - - - - Ignored - - - - - Untracked - - - - - Unreadable - - - - - Conflicted - - - - - Unmodified - - - - - Type Change - - - FileWidget - + LFS - - + + Unlock - - + + Lock - - + + Show Object - + Edit File - + Discard File - + Directory - + File - + Remove %1? - + Discard Changes? - + Are you sure you want to remove '%1'? - + Are you sure you want to discard all changes in '%1'? - + This action cannot be undone. - + Remove %1 - + Discard Changes - + Discard - + discard - - + + Collapse File - - + + Expand File - + Show Pointer @@ -1631,32 +1812,32 @@ FindWidget - + Search - + Done - + Esc - + Not found - + %1 match - + %1 matches @@ -1664,116 +1845,99 @@ GeneralPanel - - + + Fetch every - - + + minutes - - + + Push after each commit - - - Update submodules after pull - - - - - + + Prune when fetching - + No translation - + Store credentials in secure storage - - Allow collection of usage data + + + Update submodules after pull and clone - + <a href='view'>View privacy policy</a> - - + + User name: - - + + User email: - - + + Automatic actions: - + + Language: - + Credentials: - - Usage reporting: - - - - - GitHub - - - Connection failed + + Credential store type: - - Failed to authenticate with GitHub! + + Only allow a single running instance - - Successfully authenticated with GitHub! + + Single instance: GitLab - - Connection failed - - - - + Authentication failed @@ -1781,7 +1945,7 @@ Header - + Filter %1 @@ -1789,114 +1953,175 @@ HostModel - + Connecting + + HotkeyModel + + + Action + + + + + Keys + + + HunkWidget - + + Save - + + Undo - + + Use Ours - + + Use Theirs - + Edit Hunk - - + Discard Hunk - - Discard Hunk? + + Discard selected lines? - + + Are you sure you want to discard the changes in hunk from line %1 to %2 in '%3'? + + + + + Discard selected lines + + + + Are you sure you want to remove '%1'? - - Are you sure you want to discard the hunk starting at line %1 in '%2'? - - - - + This action cannot be undone. - - + + Collapse Hunk - - + + Expand Hunk - + Esc - + Fix - + Edit - + No newline at end of file + + IgnoreDialog + + + Ignore Pattern + + + Images - + <b>Size:</b> %1 + + InfoBox + + + Name: + + + + + Email: + + + + + Commit date: + + + + + KeybindDialog + + + The selected key is the same for the following actions: +%1 + + + + + Please press the desired hotkey + + + LfsPanel - + Initialize LFS - + Specify a glob pattern for tracking large files. Generally, large files are greater than 500kB, change frequently, @@ -1911,100 +2136,110 @@ Examples - + Pattern: - + Track - + days - + Fetch LFS objects from all references for the past - + reference days or - + commit days - + View Environment - + git-lfs env (read only) - + Deinitialize LFS - + Deinitialize LFS? - + Are you sure you want uninstall LFS from this repository? - + Deinitialize - + Server URL: - + Prune Offset: - + Fetch Recent: - + Advanced: + + + Included patterns: + + + + + Excluded patterns: + + Location - + %1 | %2 - + NC - + Not Committed @@ -2012,57 +2247,57 @@ Examples LocationPage - + Repository Location - + Choose the name and location of the new repository. A new directory will be created if it doesn't already exist. - + Initialize - + Clone - + ... - + Choose Directory - + Name: - + Directory: - + Advanced: - + Create a bare repository - + The new repository will be created at:<p style='text-indent: 12px'><b>%1</b></p> @@ -2070,7 +2305,7 @@ Examples LogView - + Copy @@ -2078,59 +2313,59 @@ Examples MainWindow - + Invalid Git Repository - + %1 does not contain a valid git repository. - - + + %1 - %2 - + ahead: %1 - + behind: %1 - + up-to-date - - + + %1 (%2) - + MERGING - + REVERTING - + CHERRY-PICKING - + REBASING @@ -2138,575 +2373,479 @@ Examples MenuBar - + File - + New File - + New Window - - Ctrl+Meta+N - - - - + Clone Repository... - - Ctrl+Shift+N - - - - + Initialize New Repository... - - Ctrl+Alt+N - - - - + Open Repository... - + Open Repository - + Open Recent - + Close - + Save - + Exit - + Edit - + Undo - + Redo - + Cut - + Copy - + Paste - + Select All - + Find... - + Find Next - + Find Previous - + Use Selection for Find - - Ctrl+E + + Show Double Tree View - + View - + Refresh - - + + Show Log - - - Show Tree View - - - - - Repository - - - - - Configure Repository... - - - - - Stage All - - - - - Ctrl++ - - - - - Unstage All - - - - - Ctrl+- - - - - - Commit - - - - - Ctrl+Shift+C - - - - - Amend Commit - - - - - - Ctrl+Shift+A - - - - - Git LFS - - - - - Remove all locks - - - - - Initialize - - - - - Remote - - - - - Configure Remotes... - - - - - Fetch - - - - - Ctrl+Shift+Alt+F - - - - - Fetch All - - - - - Ctrl+Shift+Alt+A - - - - - Fetch From... - - - - - Ctrl+Shift+F - - - - - Pull - - - - - Ctrl+Shift+Alt+L - - - - - Pull From... - - - - - Ctrl+Shift+L - - - - - Push - - - - - Ctrl+Shift+Alt+P - - - - - Push To... - - - - - Ctrl+Shift+P - - - - - Branch - - - - - Configure Branches... - - - - - New Branch... - - - - - Checkout Current - - - - - Ctrl+Shift+Alt+H - - - - - Checkout... - - - - - Ctrl+Shift+H - - - - - Merge... - - - - - Ctrl+Shift+M - - - - - Rebase... - - - - - Ctrl+Shift+R + + Normal - Squash... + Maximize - - Ctrl+Shift+Q + + + Show Tree View - - Abort Merge + + Hide Menu Bar - - Submodule + + Repository - - Configure Submodules... + + Configure Repository... - - Update All + + Stage All - - Ctrl+Shift+Alt+U - - - - - Update... - - - - - Ctrl+Shift+U + + Unstage All - Open + Commit + + + + + Amend Commit + + + + + Git LFS + + + + + Remove all locks - Stash + Initialize - - Show Stashes + + Remote - - Stash... - - - - - Ctrl+Shift+T + + Configure Remotes... - Pop Stash + Fetch - - Ctrl+Shift+Alt+T + + Fetch All - - History + + Fetch From... - - Back + + Pull - - Forward + + Pull From... - - Window - - - - - Show Previous Tab + + Push - Show Next Tab + Push To... - - Show Repository Chooser... + + Branch - - Ctrl+Shift+O + + Configure Branches... + New Branch... + + + + + Rename Branch + + + + + Checkout Current + + + + + Checkout... + + + + + Merge... + + + + + Rebase... + + + + + Squash... + + + + + Abort Merge + + + + + Submodule + + + + + Configure Submodules... + + + + + Update All + + + + + Update... + + + + + Open + + + + + Stash + + + + + Show Stashes + + + + + Stash... + + + + + Pop Stash + + + + + History + + + + + Back + + + + + Forward + + + + + Window + + + + + Show Previous Tab + + + + + Show Next Tab + + + + + Show Repository Chooser... + + + + Tools - + Options... - + Help - + About %1 - + Check For Updates... - + Plugin Documentation... - + + Support us via Liberapay + + + + Debug - + Abort - + Log Indexer Progress - + Log Credential Helper - + Log Remote Connection - + + Log Debug Messages + + + + Load All Diffs - + Walk Commits - + Hide Log - - Show Diff View - - - - + Merge - + Revert - + Cherry-pick - + Rebase - + Abort %1 @@ -2714,60 +2853,60 @@ Examples MergeDialog - - + + Merge - - + + Rebase - - + + Squash - + Merge (No Fast-forward) - + Merge (Fast-forward Only) - + No commit - + Reference: - + Action: - + Choose a reference to merge into '%1'. - + Choose a reference to rebase '%1' on. - + Choose a reference to squash into '%1'. @@ -2775,7 +2914,7 @@ Examples MergeTool - + External Merge @@ -2783,12 +2922,12 @@ Examples MiscPanel - + Path to SSH config file: - + Path to default / fallback SSH key file: @@ -2796,32 +2935,32 @@ Examples NewBranchDialog - + Checkout branch - + Name: - + Start Point: - + Advanced: - + Upstream: - + Create Branch @@ -2829,7 +2968,7 @@ Examples PathspecWidget - + Filter by Path @@ -2837,42 +2976,42 @@ Examples PluginsPanel - + Name - + Kind - + Description - + Options - + %1 Options - + Note - + Warning - + Error @@ -2880,7 +3019,7 @@ Examples Popup - + Show Advanced Search @@ -2888,12 +3027,12 @@ Examples PreviewWidget - + Added - + Modified @@ -2901,7 +3040,7 @@ Examples PullRequestButton - + Create Pull Request @@ -2909,55 +3048,117 @@ Examples PullRequestDialog - + Create Pull Request - + Title - + Body - + Maintainer can modify - + From: - + owner/repository - + branch - + To: - + Create + + QObject + + + Expand all + + + + + Collapse all + + + + + Staged Files + + + + + Unstaged Files + + + + + Committed Files + + + + + Workdir Files + + + + + Your global GIT configuration is invalid, Gittyup won't run properly until this is fixed + + + + + RebaseConflictDialog + + + Rebase conflict + + + + + Abort rebase + + + + + Continue + + + + + The rebase caused a merge conflict. +Would you like to fix the merge conflict and continue? + + + Reference - + HEAD detached at %1 @@ -2965,7 +3166,7 @@ Examples ReferenceList - + Commit @@ -2973,17 +3174,17 @@ Examples ReferenceModel - + Branches - + Remotes - + Tags @@ -2991,57 +3192,57 @@ Examples ReferenceView - + Branch - + Remote - + Tag - + Checkout - + Rename - + Delete - + Push Tag to %1 - + New Local Branch - + Merge... - + Rebase... - + Squash... @@ -3049,7 +3250,7 @@ Examples RefreshButton - + Refresh @@ -3057,7 +3258,7 @@ Examples RemoteButton - + 999+ @@ -3065,58 +3266,59 @@ Examples RemoteCallbacks - + remote: %1 - + failed to execute pre-push hook: bash not found - + failed to execute pre-push hook: %1 - + HTTPS Credentials - + SSH Passphrase - + Username: - + Password: - + Passphrase: - + + authentication canceled - + From %1 - - + + To %1 @@ -3124,47 +3326,47 @@ Examples RemoteDialog - + Push all tags - + Update existing tags - + Merge - + Rebase - + Merge (No Fast-forward) - + Merge (Fast-forward Only) - + Set upstream - + Force - + Remote Reference: @@ -3212,42 +3414,42 @@ Examples RemotePage - + Remote Repository URL - + Choose protocol to authenticate with the remote. - + Enter the URL of the remote repository or browse for a local directory - + ... - + Choose Directory - + Examples of valid URLs include:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> - + Protocol: - + URL: @@ -3255,12 +3457,12 @@ Examples RemoteTableModel - + Name - + URL @@ -3268,61 +3470,74 @@ Examples RemotesPanel - + Delete Remote? - + Are you sure you want to delete '%1'? - + Delete + + RenameBranchDialog + + + Name: + + + + + Rename Branch + + + RepoModel - + Connecting - + open - + recent - + remote - - + + none - + Clone Repository - + Open Existing Repository - + Initialize New Repository @@ -3330,130 +3545,157 @@ Examples RepoView - + Indexing... - + Search - - The indexer worker process crashed. If this problem persists please contact us at support@gitahead.com. - - - - + Indexer Crashed - + Stage Directory? - + Are you sure you want to stage '%1'? - + This will result in the addition of %1 files. - + more than 100 - + Stage Directory - + Stop prompting to stage directories - + Stage Large File? - + Are you sure you want to stage '%1' with a size of %2? - + Stage - + Track with LFS - + This repository has LFS enabled. Do you want to track the file with LFS instead? - + Stop prompting to stage large files - + Esc - + stage - + Git LFS was not found on the PATH. <a href='https://git-lfs.github.com'>Install Git LFS</a> to use LFS integration. - + untracked file - + untracked files - + Remove Untracked Files - + Remove %1 %2? - + This action cannot be undone. - + Remove + + + + Certificate Error + + + + + SSL verification disabled for this repository + + + + + [http] + sslVerify = false + +was added to %1/config + + + + + SSL verification disabled for all git repositories + + + + + [http] + sslVerify = false + +was added to %1 + + Pull Request @@ -3470,754 +3712,813 @@ Examples - - - + + + Git LFS - + Initialize - + initialize - + Git LFS initialized. - + Deinitialize - + deinitialize - + Git LFS Deinitialized. - + Lock - + Unlock - - + + Unable to %1 '%2' - %3 - + Unable to %1 - %2 - + %1 remotes - + Fetch All - + Fetch - - - + + + <i>no remote</i> - + Unable to fetch. No upstream is configured for the current branch, and there isn't a remote called 'origin'. - - + + Fetch canceled. - + fetch from - + + You may disable ssl verification <a href='action:sslverifyrepo'>for this repository</a> or overall disable ssl verification <a href='action:sslverifygit'>for all repositories</a>. + + + + - + Everything up-to-date. - - - + + + <i>no branch</i> - + %1 from %2 - + Pull - + <i>no upstream</i> - + Merge - + %1 into %2 - + Fast-forward - + %2 to %1 - + + Rebase - + %2 on %1 - + The repository is empty. - + The current branch '%1' has no upstream branch. - - + + Already up-to-date. - + Unable to fast-forward. - + fast-forward - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='%1'>fast-forward</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. - + If you want to create a new merge commit instead of fast-forwarding, you can <a href='%1'>merge without fast-forwarding </a> instead. - - - - + + + + merge - - + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:merge'>merge</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. - - + + + Abort - + Some merged files have unstaged changes - + abort merge - - - + + + revert - - - + + + cherry-pick - - - + + + rebase - + + Continue ongoing rebase + + + + + Invalid head. + + + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:rebase'>rebase</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. - + + %1/%2 - + %1 - %2 - + Apply - - There was a merge conflict. The rebase has been aborted - - - - + %1 - %2 <i>already applied</i> - + %1 - %2 as %3 - - - + + + squash - + Revert - + Revert "%1" This reverts commit %2. - + <i>detached HEAD</i> - + %1 on %2 - + Cherry-pick - - Force Push? - - - - + Are you sure you want to force push? - + The remote will lose any commits that are reachable only from the overwritten reference. Dropped commits may be unexpectedly reintroduced by clones that already contain those commits locally. - + Force Push - + <i>no reference</i> - + Push - + Push (Force) - - + + %1 to %2 - - + + You are not currently on a branch. - + Create a commit to add the default '%1' branch. - + You can <a href='action:checkout'>checkout</a> a branch then <a href='action:push'>push</a> again, or <a href='action:push-to'>push to an explicit branch</a>. - + The current branch '%1' has no default remote. - + You may want to <a href='action:add-remote?name=origin'>add a remote named 'origin'</a>. Then <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a> to begin tracking a remote branch called 'origin/%1'. - + You can also <a href='action:push-to'>push to an explicit URL</a> if you don't want to track a remote branch. - + To begin tracking a remote branch called '%1', <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a>. - + To push without setting up tracking information, <a href='action:push?ref=%1'>push '%2'</a> explicitly. - + Push canceled. - + push to - + The tag update may cause the remote to lose commits. - + If you want to risk the remote losing commits, you can <a href='action:push?ref=%1&to=%2&force=true'>force push</a>. - - You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push'>push</a> again. - - - - - If you really want the remote to lose commits, you may be able to <a href='action:push?force=true'>force push</a>. - - - - + Commit? - + Are you sure you want to commit on a detached HEAD? - + <p>You are in a detached HEAD state. You can still commit, but the new commit will not be reachable from any branch. If you want to commit to an existing branch, checkout the branch first.</p> - - + + Commit - - + + <i>no commit</i> - + commit - + This commit was signed with a generated user name and email. - + Consider setting the user name and email in <a href='action:config?global=true'>global settings</a>. - + If you want to limit the name and email settings to this repository, <a href='action:config'>edit repository settings</a> instead. - + After settings have been updated, <a href='action:amend'> amend this commit</a> to record the new user name and email. - + file - + files - + %1 - %2 %3 - - + + Checkout - + Checkout Detached HEAD? - + Checkout Detached HEAD - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to reset the existing local branch '%2' to this commit instead? - + Reset Local Branch - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to create a new local branch called '%2' to track it instead? - + Create a local branch to start tracking remote changes and make new commits. Check out the detached HEAD to temporarily put your working directory into the state of the remote branch. - + Create Local Branch - + checkout - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='action:checkout?%1'>checkout '%2'</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. - + New Branch - + create new branch - + (no branch) - + WIP on %1: %2 %3 - + <i>working directory</i> - + Stash - + stash - + Apply Stash - + apply stash - + Drop Stash - + drop stash - + Pop Stash - + pop stash - + %1 as %2 - + Tag - + tag - - - + + Amend - - - + + Amending commit %1 + + + + + %1 to %2 + update ref + + + + + + + + + Reset - - Amend? - - - - - Reset? - - - - - Are you sure you want to amend '%1'? - - - - + Are you sure you want to reset '%1' to '%2'? - + <p>Some commits may become unreachable from the current branch.</p> - + <p>Resetting will cause you to lose uncommitted changes. Untracked and ignored files will not be affected.</p> - + <p>Your branch appears to be up-to-date with its upstream branch. Resetting may cause your branch history to diverge from the remote branch history.</p> - + + amend - + reset - + + %1 of %2 submodules - - + + Update - + + update submodule - + + The indexer worker process crashed. If this problem persists please contact us at <TODO: replace.support@gitahead.com>. + + + + + Please resolve conflicts before continue + + + + + Conflict + + + + + Rebase finished + + + + + Force Push to %1? + + + + + You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push?to=%1'>push</a> again. + + + + + If you really want the remote to lose commits, you may be able to <a href='action:push?to=%1&force=true'>force push</a>. + + + + + Reset canceled. + + + + + Untouched + + + + Invalid Submodule Repository - + The submodule '%1' doesn't have a valid repository. You may need to init and/or update the submodule to check out a repository. - + + No terminal executable found + + + + + No terminal executable was found. Please configure a terminal in the configuration. + + + + + Open Configuration + + + + There was a merge conflict. - + Resolve conflicts, then commit to conclude the %1. See <a href='expand'>details</a>. - + Resolve conflicts in each conflicted (!) file in one of the following ways: - + 1. Click the 'Ours' or 'Theirs' button to choose the correct change. Then click the 'Save' button to apply. - + 2. Edit the file in the editor to make a different change. Remember to remove conflict markers. - + 3. Use an external merge tool. Right-click on the files in the list and choose 'External Merge'. - + After all conflicts in the file are resolved, click the check box to mark it as resolved. - + After all conflicted files are staged, commit to conclude the %1. - + You can <a href='action:abort'>abort</a> the %1 to return the repository to its previous state. @@ -4225,12 +4526,12 @@ This reverts commit %2. Repository - + Unknown error - + git-lfs not found @@ -4238,7 +4539,7 @@ This reverts commit %2. SearchField - + Search @@ -4246,32 +4547,32 @@ This reverts commit %2. SearchPanel - + Enable indexing - + terms - + lines - + Limit commits to: - + Diff context: - + Remove Index @@ -4279,32 +4580,32 @@ This reverts commit %2. Settings - + Prompt to edit stash message before stashing - + Prompt to edit commit message before merging - + Prompt to edit commit message before reverting - + Prompt to edit commit message before cherry-picking - + Prompt to stage directories - + Prompt to stage large files @@ -4312,62 +4613,67 @@ This reverts commit %2. SettingsDialog - + Esc - + Global git settings can be overridden for each repository in the corresponding repository configuration page. - + Edit Config File... - + General - + Diff - + Tools - + Window - + Editor - + Update - + Plugins - + Misc - + + Hotkeys + + + + Terminal @@ -4375,22 +4681,22 @@ This reverts commit %2. ShowTool - + Finder - + Explorer - + Default File Browser - + Show in %1 @@ -4398,14 +4704,14 @@ This reverts commit %2. SideBar - + Close - - + + Remove @@ -4430,57 +4736,57 @@ This reverts commit %2. - + Initialize New Repository - + Add %1 Account - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> - + Remove Repository Association? - + Clear All Recent - + Show Full Path - + Filter Non-existent Paths - + Refresh Remote Accounts - + Show Full Name - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> - + Remove Account? @@ -4488,108 +4794,108 @@ This reverts commit %2. StartDialog - + Choose Repository - + Understand your history! - + Clone Repository - + Open Existing Repository - + Open Repository - + Initialize New Repository - + Clear All - + Show Full Path - + Filter Non-existent Paths - + Repositories: - + Refresh - + Show Full Name - + Remote: - + View Getting Started Video - + Clone - + Open - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> - + Remove Account? - - + + Remove - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> - + Remove Repository Association? @@ -4597,7 +4903,7 @@ This reverts commit %2. SubmoduleTableModel - + Name @@ -4607,32 +4913,32 @@ This reverts commit %2. - + Branch - + Initialized - + Deinitializing '%1' will remove its working directory. Are you sure you want to deinitialize? - + Deinitialize Submodule? - + The submodule working directory contains uncommitted changes that will be lost if you continue. - + Deinitialize @@ -4666,31 +4972,107 @@ This reverts commit %2. - + Name + + TemplateDialog + + + Name + + + + + Content + + + + + + Add + + + + + use %1 to declare the position of the cursor. + + + + + use ${files:x} to add all updated file names, +x (number) determines the number of maximum files shown + + + + + Remove + + + + + Up + + + + + Down + + + + + Import + + + + + Export + + + + + Open File + + + + + + Gittyup Templates (*%1) + + + + + Save Templates + + + + + Replace + + + TerminalPanel - - + + Install - + Name: - + Location: - + Uninstall @@ -4698,32 +5080,32 @@ This reverts commit %2. TextEdit - + Replace... - + Replace All... - + Ignore - + Ignore All - + Add to User Dictionary - + Do not Ignore @@ -4731,111 +5113,146 @@ This reverts commit %2. ThemeDialog - - Native Theme - - - - + A flexible look matching system colors - + Dark Theme - + + Pick a theme for Gittyup + + + + + Default Theme + + + + + A consistent bright theme + + + + A consistent look optimal for reducing eye strain + + + System Theme + + ToolBar - + Show repository sidebar - + Previous - + Next - + Fetch - + Pull - + Merge - + Rebase - + Push - + Checkout - + Stash - + Pop Stash - + + Open Terminal + + + + + Open file manager + + + + Configure Settings + + + Repository settings + + - + Application settings + + + + + Show Log - - Diff View - - - - - Tree View + + Double Tree View + Tree View + + + + Show Starred Commits - + Hide Log @@ -4843,32 +5260,42 @@ This reverts commit %2. ToolsPanel - + Keep backup of merge files (.orig) - + External editor: - + External diff: - + External merge: - + Backup files: - + + Terminal emulator command: + + + + + File manager command: + + + + Configure @@ -4876,20 +5303,77 @@ This reverts commit %2. TreeModel - + Submodule + + TreeView + + + Directory + + + + + File + + + + + Remove or discard %1? + + + + + Are you sure you want to remove or discard all changes in '%1'? + + + + + This action cannot be undone. + + + + + + Discard + + + + + discard + + + + + TreeWidget + + + Search: + + + + + Regex + + + + + Case Sensitive + + + UpToDateDialog - + Already Up-to-date - + %1 is already up-to-date. You have version %2. @@ -4897,55 +5381,76 @@ This reverts commit %2. UpdateDialog - + Update %1 - + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. The new version will be soon available in your package manager. Just update your system.</p><b>Release Notes:</b> + + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. Would you like to download it now?</p><b>Release Notes:</b> - + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3.</p><p>If you downloaded the flatpak package over a package manager or from flathub.org <br/>you don't have to install manually a new version. It will be available within the next <br/>days during your system update: <code>flatpak update</code></p><b>Release Notes:</b> + + + + Automatically download and install updates - + Install Update - + Remind Me Later - + Skip This Version + + + Ok + + + + + Donate + + UpdatePanel - + Check for updates automatically - + Automatically download and install updates - + Check Now - + Software Update: @@ -4953,17 +5458,17 @@ This reverts commit %2. UpdateSubmodulesDialog - + Recursive - + Init - + Update @@ -4971,7 +5476,7 @@ This reverts commit %2. Updater - + Installer failed to start @@ -4992,47 +5497,49 @@ This reverts commit %2. - + + Helper application failed to start - + Update Failed - + Unable to check for updates - + Unable to download update - + Unable to open temporary file - + Unable to install update - - Some windows failed to close + + Some windows failed to close. You can download the binary manually from %1 - + Unknown install error - + + Installer script failed: %1 @@ -5040,94 +5547,139 @@ This reverts commit %2. WindowPanel - + Add New Theme - + Edit Current Theme - + Create Theme - + Theme Name - + Restart? - + The application must be restarted for the theme change to take effect. - + Do you want to restart now? - + Restart - + Later - + Show full repository path - + Hide automatically - + Open submodules in tabs - + Open all repositories in tabs - + + Hide Menubar + + + + + Show Avatars + + + + Theme: - + Title: - + Log: - + Tabs: - + + View: + + + + Prompt: + + _FileWidget::Header + + + + Use Theirs: Delete + + + + + + Use Ours: Delete + + + + + both: %1 + + + + + ours: %1 + + + + + theirs: %1 + + + diff --git a/l10n/gittyup_es.ts b/l10n/gittyup_es.ts index 76b453d0..723d361c 100644 --- a/l10n/gittyup_es.ts +++ b/l10n/gittyup_es.ts @@ -4,55 +4,63 @@ AboutDialog - + About %1 Acerca de %1 - + Understand your history! ¡Entiende tu historia! - + Changelog Registro de Cambios - + Acknowledgments Agradecimientos - + Privacy Privacidad - Usage reporting has been disabled. Restart the application for changes to take effect. - El reporte de uso ha sido deshabilitado. Reinicia la aplicación para que los cambios tengan efecto. + El reporte de uso ha sido deshabilitado. Reinicia la aplicación para que los cambios tengan efecto. - Usage Reporting Disabled - Reporte de Uso Deshabilitado + Reporte de Uso Deshabilitado Account - + + Connection failed + Conexión fallida + + + <b>Note:</b> Basic authentication is not supported if you have two-factor authentication enabled. Use a <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>personal access token</a> in the password field instead. <b>Nota:</b> La Autenticación Básica no es soportada si tienes autenticación de dos factores habilitada. Usa un <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>token de acceso personal</a> en el campo de contraseña. - + + <b>Note:</b> Only Basic authentication is currently supported + + + + <b>Note:</b> Basic authentication is not supported. Use a <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>personal access token</a> in the password field instead. <b>Nota:</b> La Autenticación Básica no es soportada. Use a <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>token de acceso personal</a> en el campo de contraseña. - + Authentication failed Autenticación fallida @@ -60,7 +68,7 @@ AccountDialog - + Add Remote Account Agregar Cuenta Remota @@ -90,32 +98,32 @@ - + Replace? ¿Reemplazar? - + An account of this type already exists. Ya existe una cuenta de este tipo. - + Would you like to replace the previous account? ¿Te gustaría reemplazar la cuenta anterior? - + Replace Reemplazar - + Cancel Cancelar - + Connection Failed Conexión Fallida @@ -123,18 +131,18 @@ AddRemoteDialog - - + + Add Remote Agregar Remoto - + Name: Nombre: - + URL: @@ -142,7 +150,7 @@ AdvancedButton - + Advanced Search Búsqueda Avanzada @@ -150,219 +158,263 @@ AdvancedSearchWidget - + Author: Autor: - + Author name Nombre del Autor - + Email: Correo electrónico: - + Author email Correo electrónico del autor - + Message: Mensaje: - + Commit message Mensaje de confirmación - + Date: Fecha: - + Specific commit date Fecha específica de confirmación - + After: Después de: - + Commits after date Confirmaciones después de la fecha - + Before: Antes de: - + Commits before date Confirmaciones antes de la fecha - + File: Archivo: - + File name Nombre de archivo - + Path: Ruta: - + File path Ruta del archivo - + Scope: Ámbito: - + Hunk header text Parte del encabezado de texto - + Context: Contexto: - + Diff context (white) Diferencia de contexto (blanco) - + Addition: Adición: - + Diff addition (green) Diferencia de adición (verde) - + Deletion: Borrado: - + Diff deletion (red) Diferencia de borrado (rojo) - + Comment: Comentario: - + Source code comment Comentario de código fuente - + String: Cadena de texto: - + Source code string literal Cadena de texto de código fuente - + Identifier: Identificador: - + Source code identifier Identificador de código fuente - + Search Buscar - + Return Retornar + + AmendDialog + + + Author + + + + + Committer + + + + + Commit Message: + + + + + Amend + Enmendar + + + + Cancel + Cancelar + + Application - + SSL Errors Errores SSL - + Failed to set up SSL session. Do you want to ignore these errors? Falló al establecer la sesión SSL. ¿Quieres ignorar estos errores? + + AuthorCommitterDate + + + Author/Committer: + + + + + Author: + + + + + Committer: + + + Beanstalk - Connection failed - Conexión fallida + Conexión fallida Bitbucket - Connection failed - Conexión fallida + Conexión fallida BlameEditor - + Untitled Sin título - + Not Tracked Sin seguimiento - + HEAD - + Working Copy Copia de trabajo - + Save File Guardar archivo @@ -370,12 +422,12 @@ BlameMargin - + Not Committed No confirmado - + Invalid Signature Firma inválida @@ -383,17 +435,17 @@ BranchTableModel - + Name Nombre - + Upstream Rama a seguir - + Rebase Reorganizar @@ -401,17 +453,17 @@ CheckoutDialog - + Detach HEAD Separar HEAD - + References: Referencias: - + Checkout Revisar @@ -419,7 +471,7 @@ ClearButton - + Clear Limpiar @@ -427,32 +479,32 @@ CloneDialog - + Initialize Repository Inicializar Repositorio - + Clone Repository Clonar Repositorio - + Initialized empty repository into '%1' Inicializar repositorio vacío en '%1' - + Cloned repository from '%1' into '%2' Clonar repositorio desde '%1' en '%2' - + Initialize Inicializar - + Clone Clonar @@ -460,33 +512,33 @@ ClonePage - + Clone Progress Progreso de clonación - + The new repository will open after the clone finishes. El nuevo repositorio de abrirá después que termine la clonación. - + Clone Clonar - - + + clone clonar - + Clone canceled. Clonación cancelada. - + Failed to %1 into '%2' - %3 Falló al %1 en '%2' - %3 @@ -494,29 +546,29 @@ CommitDetail - + Copy Copiar - + Range: Rango: - + Id: - + initial commit Confirmación inicial - + Parents: - + Padres: @@ -575,120 +627,181 @@ CommitEditor - + + T + + + + <b>Commit Message:</b> <b>Mensaje de Confirmación:</b> - - + + Spell Check Language - + Idioma del Corrector Ortográfico - + The dictionary '%1' is invalid - + El diccionario '%1' es inválido - + Spell checking is disabled. - + La corrección ortográfica está deshabilitada. - + The choosen dictionary '%1.dic' is not a valid hunspell dictionary. - + El diccionario elegido '%1.dic' no es un diccionario hunspell válido. - - + + Invalid dictionary '%1.dic' - + Diccionario inválido, '%1.dic' - + Edit User Dictionary - + Editar el Dicccionario de Usuario - + Stage All Preparar Todo - + Unstage All No Preparar Nada - - + + Commit Confirmar - + + Abort rebasing + + + + + Continue rebasing + + + + + Abort Merge + Abortar Fusión + + + + %1 + %1 / %2 {1?} + + + + %1 and %2 + + + + + %1, %2, and %3 + + + + + Merge + Fusionar + + + + Revert + Revertir + + + + Cherry-pick + Escoger + + + + Rebase + Reorganizar + + + + Abort %1 + Abortar %1 + + + + Commit Rebase + + + Update %1 - Actualizar %1 + Actualizar %1 - Update %1 and %2 - Actualizar %1 y %2 + Actualizar %1 y %2 - Update %1, %2, and %3 - Actualizar %1, %2 y %3 + Actualizar %1, %2 y %3 - Update %1, %2, and %3 more files... - Actualizar %1, %2 y %3 más archivos... + Actualizar %1, %2 y %3 más archivos... - + Nothing staged Nada preparado - + %1 of %2 file staged Archivo preparado: %1 de %2 - + %1 of %2 files staged Archivo preparado: %1 de %2 - + %1 file partially staged %1 archivo parcialmente preparado - + %1 files partially staged %1 archivos parcialmente preparados - + %1 unresolved conflict %1 conflicto sin resolver - + %1 unresolved conflicts %1 conflictos sin resolver - + all conflicts resolved todos los conflictos resueltos - + Commit Merge Confirmación de Fusión @@ -696,114 +809,131 @@ CommitList - + Remove Untracked Files Remover archivos sin seguimiento - + Apply Aplicar - + Pop Retirar - + Drop Soltar - + Unstar Desmarcar como favorito - + Star Marcar como favorito - + Add Tag... Agregar etiqueta... - + New Branch... Nueva rama... - Delete Tag %1 - + Borrar Etiqueta %1 - Delete Branch %1 + Borrar Rama %1 + + + + Rename Branch - + + Delete Branch + + + + + Delete Tag + Borrar Etiqueta + + + Merge... Fusionar... - + Rebase... Reorganizar... - + Squash... - + Aplastar... - + Revert Revertir - + Cherry-pick Escoger - - - + + Checkout %1 Revisar %1 - + + Checkout + Revisar + + + Local branch is already checked out La rama local ya está revisada - + This is a bare repository Este es un repositorio vacío - + Reset Reestablecer - + Soft Suave - + Mixed Mezclado - + Hard Duro @@ -811,12 +941,12 @@ CommitModel - + Uncommitted changes Cambios sin confirmar - + Checking for uncommitted changes Revisando por cambios sin confirmar @@ -824,128 +954,165 @@ CommitToolBar - + Show All Branches Mostrar todas las ramas - + Show Selected Branch Mostrar rama seleccionada - + Sort by Date Ordenar por fecha - + Sort Topologically Ordenar topológicamente - + Show Graph Mostrar Diagrama - + Show Clean Status Mostrar Estado Limpio - + Compact Mode Modo Compacto + + + Show Author + + + + + Show Date + + + + + Show Id + + ConfigDialog - + Esc - + General - + Diff Diferencia - + Remotes Remotos - + Branches Ramas - + Submodules Submódulos - + Search Búsqueda - + Plugins - + LFS - + Edit Config File... Editar archivo de configuración... + + DateSelectionGroupWidget + + + Datetime source + + + + + Current + + + + + Manual + + + + + Original + + + DefaultWidget - + Clone repository Clonar repositorio - + Open existing repository Abrir repositorio existente - + Open Repository Abrir Repositorio - + Initialize new repository Inicializar nuevo repositorio - + Add %1 account Añadir cuenta de %1 - View getting started videos - Ver videos para empezar + Ver videos para empezar - + Contact us for support Contáctanos para soporte @@ -953,47 +1120,47 @@ DeleteBranchDialog - + Are you sure you want to delete local branch '%1'? ¿Estás seguro que deseas borrar la rama local %1? - + Delete Branch? ¿Borrar Rama? - + Also delete the upstream branch from its remote Borrar tambien la rama a seguir de su remoto - + Delete Borrar - + delete '%1' from '%2' borrar '%1' de '%2' - + Push Enviar - + Push canceled. Envío cancelado. - + Unable to push to %1 - %2 No es posible enviar a %1 - %2 - + The branch is not fully merged. Deleting it may cause some commits to be lost. La rama no está totalmente fusionada. Borrarla puede causar que algunas confirmaciones se pierdan. @@ -1001,56 +1168,81 @@ DeleteTagDialog - + Are you sure you want to delete tag '%1'? ¿Estás seguro que deseas borrar la etiqueta%1? - + Delete Tag? ¿Borrar Etiqueta? - + Also delete the upstream tag from %1 Borrar también la etiqueta a seguir de %1 - + Delete Borrar - + delete '%1' from '%2' borrar '%1' de '%2' - + Push Enviar - + Push canceled. Envío cancelado. - + Unable to push to %1 - %2 No es posible enviar a %1 - %2 - + Delete Tag Borrar Etiqueta - + delete tag borrar etiqueta + + DetailView + + + + Author: + Autor: + + + + reset + reestablecer + + + + Here you can set the author used for committing +These settings will not be saved permanently + + + + + Email: + Correo electrónico: + + DiffPanel @@ -1084,17 +1276,17 @@ Archivos añadidos - + Deleted files Archivos borrados - + Whitespace: Espacio en blanco: - + Auto Collapse: Auto-ocultar: @@ -1102,43 +1294,89 @@ DiffTool - + External Diff Diff externo + + DiffTreeModel + + + Submodule + Submódulo + + DiffView - + Add new file Añadir nuevo archivo - + Or drag files here to copy into the repository O arrastra archivos aquí para copiarlos al repositorio + + DoubleTreeWidget + + + Blame + + + + + Show Blame Editor + + + + + Diff + Diferencia + + + + Show Diff View + Mostrar Vista de Diferencias + + + + Single Tree View + + + + + List View + + + + + Hide Untracked Files + + + DownloadDialog - + Update %1 Actualizar %1 - + Downloading %1... Descargando %1... - + Download Complete! ¡Descarga Completa! - + Install and Restart Instalar y Reiniciar @@ -1146,25 +1384,25 @@ EditButton - + Edit Working Copy - + Editar Copia de Trabajo - + Edit New Revision - + Editar Revisión Nueva - + Edit Old Revision - + Editar Revisión Anterior EditTool - + Edit in External Editor Editar en Editor Externo @@ -1172,47 +1410,47 @@ EditorPanel - + Tabs Pestañas - + Spaces Espacios - + Show heat map Mostrar mapa de calor - + Font: Fuente: - + Font size: Tamaño de fuente: - + Indent using: Indentar usando: - + Indent width: Ancho de indentación: - + Tab width: Ancho de la tabulación: - + Blame margin: Márgen de culpa: @@ -1220,12 +1458,12 @@ EditorWindow - + '%1' has been modified. Do you want to save your changes? '%1' ha sido modificado. ¿Quieres guardar tus cambios? - + Save Changes? ¿Guardar Cambios? @@ -1233,22 +1471,22 @@ ExternalToolsDialog - + Configure External Tools Configurar Herramientas Externas - + Detected Tools Herramientas Detectadas - + User Defined Tools Herramientas Definidas por el Usuario - + Select Executable Seleccionar Ejecutable @@ -1256,17 +1494,17 @@ ExternalToolsModel - + Name Nombre - + Command Comando - + Arguments Argumentos @@ -1274,168 +1512,244 @@ FileContextMenu - + Revision Not Found Revisión No Encontrada - + The selected file doesn't have a %1 revision. El archivo seleccionado no tiene una revisión %1. - + Bash Not Found Bash No Encontrado - + Bash was not found on your PATH. Bash no fue encontrado en su PATH. - + Bash is required to execute external tools. Bash es requerido para ejecutar herramientas externas. - + Stage Preparar - + Unstage No preparar - - + + Discard Changes Descartar Cambios - + Discard Changes? ¿Descartar Cambios? - + Are you sure you want to discard changes in the selected files? ¿Estás seguro que quieres descartar los cambios en los archivos seleccionados? - + This action cannot be undone. Esta acción no puede ser deshecha. - + + (Submodule) + + + + %1 files %1 archivos - + Discard Descartar - + discard descartar - + Remove Untracked Files Remover archivos sin seguimiento - + Ignore Ignorar - + Checkout Revisar - + Unlock Desbloquear - + Lock Bloquear - + Copy File Name Copiar Nombre de Archivo - + Filter History Filtrar Historia - + Navigate to Navegar a - + Next Revision Siguiente revisión - + next siguiente - + Previous Revision Revisión Anterior - + previous anterior - + Unset Executable Desestablecer Ejecutable - + Set Executable Establecer Ejecutable - + + Save Selected Version as ... + + + + + Select new file directory + + + + + Saving files + + + + + Saving files of selected version to disk + + + + + Save file + + + + + Invalid Blob + + + + + Open this version + + + + + Opening file + + + + + Open + + + + + open file + + + + + Blob is invalid. + + + + + + Unable to checkout bare repositories + + + + + Unable to open files from bare repository + + + + + The file is already in the current working directory + + + + edit Editar - + diff diferencia - + merge fusionar - + External Tool Not Found Herramienta Externa No Encontrada - + Failed to execute external %1 tool. Falló al ejecutar la herramienta %1 externa. @@ -1443,190 +1757,174 @@ FileList - Sort By - Ordenar Por + Ordenar Por - Select - Seleccionar + Seleccionar - Name - Nombre + Nombre - Status - Estado + Estado - Ignore Whitespace (-w) - Ignorar Espacio en Blanco (-w) + Ignorar Espacio en Blanco (-w) - Added - Añadido + Añadido - Deleted - Borrado + Borrado - Modified - Modificado + Modificado - Renamed - Renombrado + Renombrado - Copied - Copiado + Copiado - Ignored - Ignorado + Ignorado - Untracked - Sin seguimiento + Sin seguimiento - Unreadable - Ilegible + Ilegible - Conflicted - Con Conflicto + Con Conflicto - Unmodified - Sin modificar + Sin modificar - Type Change - Tipo de Cambio + Tipo de Cambio FileWidget - + LFS - - + + Unlock Desbloquear - - + + Lock Bloquear - - + + Show Object Mostrar Objeto - + Edit File Editar Archivo - + Discard File Descartar Archivo - + Directory Directorio - + File Archivo - + Remove %1? ¿Remover %1? - + Discard Changes? ¿Descartar Cambios? - + Are you sure you want to remove '%1'? ¿Estás seguro que deseas remover %1? - + Are you sure you want to discard all changes in '%1'? ¿Estás seguro que quieres descartar todos los cambios en %1? - + This action cannot be undone. Esta acción no puede ser deshecha. - + Remove %1 Remover %1 - + Discard Changes Descartar Cambios - + Discard Descartar - + discard descartar - - + + Collapse File Ocultar Archivo - - + + Expand File Expandir Archivo - + Show Pointer Mostrar Puntero @@ -1634,32 +1932,32 @@ FindWidget - + Search Buscar - + Done Hecho - + Esc - + Not found No Encontrado - + %1 match %1 coincidencia - + %1 matches %1 coincidencias @@ -1667,116 +1965,130 @@ GeneralPanel - - + + Fetch every Traer cada - - + + minutes minutos - - + + Push after each commit Enviar después de cada confirmación - - Update submodules after pull - Actualizar submódulos después de combinar + Actualizar submódulos después de combinar - - + + + Update submodules after pull and clone + + + + + Prune when fetching Podar cuando se traiga - + No translation - + No traducir - - + + User name: Nombre de usuario: - - + + User email: Correo electrónico del usuario: - - + + Automatic actions: Acciones automáticas: - + + Credential store type: + + + + + Only allow a single running instance + + + + + Single instance: + + + + Store credentials in secure storage Almacenar credenciales en almacenamiento seguro - Allow collection of usage data - Permitir la recolección de datos de uso + Permitir la recolección de datos de uso - + <a href='view'>View privacy policy</a> <a href='view'>Ver políticas de privacidad</a> - + + Language: - + Idioma: - + Credentials: Credenciales: - Usage reporting: - Reporte de uso: + Reporte de uso: GitHub - Connection failed - Conexión fallida + Conexión fallida - Failed to authenticate with GitHub! - ¡Falló al autenticar con GitHub! + ¡Falló al autenticar con GitHub! - Successfully authenticated with GitHub! - ¡Autenticado exitósamente con GitHub! + ¡Autenticado exitósamente con GitHub! GitLab - Connection failed - Conexión fallida + Conexión fallida - + Authentication failed Autenticación fallida @@ -1784,7 +2096,7 @@ Header - + Filter %1 Filtrar %1 @@ -1792,114 +2104,183 @@ HostModel - + Connecting Conectando + + HotkeyModel + + + Action + + + + + Keys + + + HunkWidget - + + Save Guardar - + + Undo Deshacer - + + Use Ours Usar nuestro - + + Use Theirs Usar el de ellos - + Edit Hunk Editar una parte - - + Discard Hunk Descartar parte - - Discard Hunk? - ¿Descartar parte? + + Discard selected lines? + - + + Are you sure you want to discard the changes in hunk from line %1 to %2 in '%3'? + + + + + Discard selected lines + + + + Discard Hunk? + ¿Descartar parte? + + + Are you sure you want to remove '%1'? ¿Estás seguro que deseas remover %1? - Are you sure you want to discard the hunk starting at line %1 in '%2'? - ¿Estás seguro que quieres descartar la parte que comienza en la línea %1 en %2? + ¿Estás seguro que quieres descartar la parte que comienza en la línea %1 en %2? - + This action cannot be undone. Esta acción no puede ser deshecha. - - + + Collapse Hunk Ocultar parte - - + + Expand Hunk Expandir parte - + Esc - + Fix Solucionar - + Edit Editar - + No newline at end of file No hay nueva línea al final del archivo + + IgnoreDialog + + + Ignore Pattern + + + Images - + <b>Size:</b> %1 <b>Tamaño:</b> %1 + + InfoBox + + + Name: + Nombre: + + + + Email: + Correo electrónico: + + + + Commit date: + + + + + KeybindDialog + + + The selected key is the same for the following actions: +%1 + + + + + Please press the desired hotkey + + + LfsPanel - + Initialize LFS Inicializar LFS - + Specify a glob pattern for tracking large files. Generally, large files are greater than 500kB, change frequently, @@ -1925,100 +2306,110 @@ Ejemplos - + Pattern: Patrón: - + Track Seguir - + days días - + Fetch LFS objects from all references for the past Traer objetos LFS desde todas las referencias del pasado - + reference days or días de referencia o - + commit days días de confirmación - + View Environment Ver Entorno - + git-lfs env (read only) git-lfs env (solo lectura) - + Deinitialize LFS Desinicializar LFS - + Deinitialize LFS? ¿Desinicializar LFS? - + Are you sure you want uninstall LFS from this repository? ¿Estás seguro que quieres desinstalar LFS de este repositorio? - + Deinitialize Desinicializar - + Server URL: URL del Servidor: - + Prune Offset: Offset para podar: - + Fetch Recent: Traer Reciente: - + Advanced: Avanzado: + + + Included patterns: + + + + + Excluded patterns: + + Location - + %1 | %2 %1 | %2 - + NC NC - + Not Committed No confirmado @@ -2026,57 +2417,57 @@ Ejemplos LocationPage - + Repository Location Ubicación del Repositorio - + Choose the name and location of the new repository. A new directory will be created if it doesn't already exist. Escoja el nombre y la ubicación del nuevo repositorio. Un nuevo directorio será creado si no existe uno. - + Initialize Inicializar - + Clone Clonar - + ... ... - + Choose Directory Escoger Directorio - + Name: Nombre: - + Directory: Directorio: - + Advanced: Avanzado: - + Create a bare repository Crear un repositorio vacío - + The new repository will be created at:<p style='text-indent: 12px'><b>%1</b></p> El nuevo repositorio será creado en:<p style='text-indent: 12px'><b>%1</b></p> @@ -2084,7 +2475,7 @@ Ejemplos LogView - + Copy Copiar @@ -2092,59 +2483,59 @@ Ejemplos MainWindow - + Invalid Git Repository Repositorio Git Inválido - + %1 does not contain a valid git repository. %1 no contiene un repositorio git válido. - - + + %1 - %2 %1 - %2 - + ahead: %1 adelante: %1 - + behind: %1 atrás: %1 - + up-to-date actualizado - - + + %1 (%2) %1 (%2) - + MERGING FUSIONANDO - + REVERTING REVIRTIENDO - + CHERRY-PICKING ESCOGIENDO - + REBASING REORGANIZANDO @@ -2152,575 +2543,583 @@ Ejemplos MenuBar - + File Archivo - + New File Nuevo Archivo - + New Window Nueva Ventana - Ctrl+Meta+N - Ctrl+Meta+N + Ctrl+Meta+N - + Clone Repository... Clonar Repositorio... - Ctrl+Shift+N - Ctrl+Shift+N + Ctrl+Shift+N - + Initialize New Repository... Inicializar Nuevo Repositorio... - Ctrl+Alt+N - Ctrl+Alt+N + Ctrl+Alt+N - + Open Repository... Abrir Repositorio... - + Open Repository Abrir Repositorio - + Open Recent Abrir Reciente - + Close Cerrar - + Save Guardar - + Exit Salir - + Edit Editar - + Undo Deshacer - + Redo Rehacer - + Cut Cortar - + Copy Copiar - + Paste Pegar - + Select All Seleccionar Todo - + Find... Encontrar... - + Find Next Encontrar Siguiente - + Find Previous Encontrar Previo - + Use Selection for Find Usar la Selección para Encontrar - - Ctrl+E - Ctrl+E + + Show Double Tree View + - + Ctrl+E + Ctrl+E + + + View Ver - + Refresh Refrescar - - + + Show Log Mostrar Histórico - - + + Normal + + + + + Maximize + + + + + Show Tree View Mostrar Vista de Árbol - + + Hide Menu Bar + + + + Repository Repositorio - + Configure Repository... Configurar Repositorio... - + Stage All Preparar Todo - Ctrl++ - Ctrl++ + Ctrl++ - + Unstage All No Preparar Nada - Ctrl+- - Ctrl+- + Ctrl+- - + Commit Confirmar - Ctrl+Shift+C - Ctrl+Shift+C + Ctrl+Shift+C - + Amend Commit Enmendar Confirmación - - Ctrl+Shift+A - Ctrl+Shift+A + Ctrl+Shift+A - + Git LFS Git LFS - + Remove all locks Remover todos los bloqueos - + Initialize Inicializar - + Remote Remoto - + Configure Remotes... Configurar Remotos... - + Fetch Traer - Ctrl+Shift+Alt+F - Ctrl+Shift+Alt+F + Ctrl+Shift+Alt+F - + Fetch All Traer Todo - Ctrl+Shift+Alt+A - Ctrl+Shift+Alt+A + Ctrl+Shift+Alt+A - + Fetch From... Traer Desde... - Ctrl+Shift+F - Ctrl+Shift+F + Ctrl+Shift+F - + Pull Combinar - Ctrl+Shift+Alt+L - Ctrl+Shift+Alt+L + Ctrl+Shift+Alt+L - + Pull From... Combinar Desde... - Ctrl+Shift+L - Ctrl+Shift+L + Ctrl+Shift+L - + Push Enviar - Ctrl+Shift+Alt+P - Ctrl+Shift+Alt+P + Ctrl+Shift+Alt+P - + Push To... Enviar a... - Ctrl+Shift+P - Ctrl+Shift+P + Ctrl+Shift+P - + Branch Rama - + Configure Branches... Configurar Ramas... - + New Branch... Nueva rama... - + + Rename Branch + + + + Checkout Current Revisar Actual - Ctrl+Shift+Alt+H - Ctrl+Shift+Alt+H + Ctrl+Shift+Alt+H - + Checkout... Revisar... - Ctrl+Shift+H - Ctrl+Shift+H + Ctrl+Shift+H - + Merge... Fusionar... - Ctrl+Shift+M - Ctrl+Shift+M + Ctrl+Shift+M - + Rebase... Reorganizar... - Ctrl+Shift+R - Ctrl+Shift+R + Ctrl+Shift+R - + Squash... - + Aplastar - Ctrl+Shift+Q - + Ctrl+Shift+Q - + Abort Merge Abortar Fusión - + Submodule Submódulo - + Configure Submodules... Configurar Submódulos... - + Update All Actualizar Todo - Ctrl+Shift+Alt+U - Ctrl+Shift+Alt+U + Ctrl+Shift+Alt+U - + Update... Actualizar... - Ctrl+Shift+U - Ctrl+Shift+U + Ctrl+Shift+U - + Open Abrir - + Stash Guardado Rápido - + Show Stashes Mostrar Guardados Rápidos - + Stash... Guardado Rápido... - Ctrl+Shift+T - Ctrl+Shift+T + Ctrl+Shift+T - + Pop Stash Sacar Guardado Rápido - Ctrl+Shift+Alt+T - Ctrl+Shift+Alt+T + Ctrl+Shift+Alt+T - + History Historia - + Back Atrás - + Forward Adelante - + Window Ventana - + Show Previous Tab Mostrar Pestaña Anterior - + Show Next Tab Mostrar Próxima Pestaña - + Show Repository Chooser... Mostrar Selector de Repositorio... - Ctrl+Shift+O - Ctrl+Shift+O + Ctrl+Shift+O - + Tools Herramientas - + Options... Opciones... - + Help Ayuda - + About %1 Acerca de %1 - + Check For Updates... Buscar Actualizaciones... - + Plugin Documentation... Documentación de Plugin... - + + Support us via Liberapay + + + + Debug Depurar - + Abort Abortar - + Log Indexer Progress Histórico del Progreso del indexador - + Log Credential Helper Histórico de la Ayuda de Credenciales - + Log Remote Connection Histórico de Conexión Remota - + + Log Debug Messages + + + + Load All Diffs Cargar Todas las Diferencias - + Walk Commits Recorrer las Confirmaciones - + Hide Log Ocultar Histórico - Show Diff View - Mostrar Vista de Diferencias + Mostrar Vista de Diferencias - + Merge Fusionar - + Revert Revertir - + Cherry-pick Escoger - + Rebase Reorganizar - + Abort %1 Abortar %1 @@ -2728,62 +3127,62 @@ Ejemplos MergeDialog - - + + Merge Fusionar - - + + Rebase Reorganizar - - + + Squash - + Aplastar - + Merge (No Fast-forward) Fusionar (Sin adelantar) - + Merge (Fast-forward Only) Fusionar (Adelantar Únicamente) - + No commit No Confirmación - + Reference: Referencia: - + Action: Acción: - + Choose a reference to merge into '%1'. - + Escoje una referencia para fusionar en '%1'. - + Choose a reference to rebase '%1' on. - + Escoje una referencia para reorganizar en '%1'. - + Choose a reference to squash into '%1'. - + Escoje una referencia para aplastas en '%1'. Choose a reference to merge into <b>%1</b>. @@ -2797,7 +3196,7 @@ Ejemplos MergeTool - + External Merge Fusión Externa @@ -2805,45 +3204,45 @@ Ejemplos MiscPanel - + Path to SSH config file: - + Ruta al fichero de configuración SSH: - + Path to default / fallback SSH key file: - + Ruta a la clave SSH por Defecto/Respaldo: NewBranchDialog - + Checkout branch Revisar Rama - + Name: Nombre: - + Start Point: Punto de Inicio: - + Advanced: Avanzado: - + Upstream: Rama a seguir: - + Create Branch Crear Rama @@ -2851,7 +3250,7 @@ Ejemplos PathspecWidget - + Filter by Path Filtrar por Ruta @@ -2859,42 +3258,42 @@ Ejemplos PluginsPanel - + Name Nombre - + Kind Tipo - + Description Descripción - + Options Opciones - + %1 Options %1 Opciones - + Note Nota - + Warning Advertencia - + Error Error @@ -2902,7 +3301,7 @@ Ejemplos Popup - + Show Advanced Search Mostrar Búsqueda Avanzada @@ -2910,12 +3309,12 @@ Ejemplos PreviewWidget - + Added Añadido - + Modified Modificado @@ -2923,7 +3322,7 @@ Ejemplos PullRequestButton - + Create Pull Request Crear Solicitud de Integración @@ -2931,55 +3330,117 @@ Ejemplos PullRequestDialog - + Create Pull Request Crear Solicitud de Integración - + Title Título - + Body Cuerpo - + Maintainer can modify El Mantenedor puede modificar - + From: De: - + owner/repository propietario/repositorio - + branch rama - + To: Para: - + Create Crear + + QObject + + + Expand all + + + + + Collapse all + + + + + Staged Files + + + + + Unstaged Files + + + + + Committed Files + + + + + Workdir Files + + + + + Your global GIT configuration is invalid, Gittyup won't run properly until this is fixed + + + + + RebaseConflictDialog + + + Rebase conflict + + + + + Abort rebase + + + + + Continue + + + + + The rebase caused a merge conflict. +Would you like to fix the merge conflict and continue? + + + Reference - + HEAD detached at %1 HEAD separado en %1 @@ -2987,7 +3448,7 @@ Ejemplos ReferenceList - + Commit Confirmación @@ -2995,17 +3456,17 @@ Ejemplos ReferenceModel - + Branches Ramas - + Remotes Remotos - + Tags Etiquetas @@ -3013,65 +3474,65 @@ Ejemplos ReferenceView - + Branch Rama - + Remote Remoto - + Tag Etiqueta - + Checkout Revisar - + Rename Renombrar - + Delete Borrar - + Push Tag to %1 Enviar etiqueta a %1 - + New Local Branch Nueva Rama Local - + Merge... Fusionar... - + Rebase... Reorganizar... - + Squash... - + Aplastar... RefreshButton - + Refresh Refrescar @@ -3079,7 +3540,7 @@ Ejemplos RemoteButton - + 999+ 999+ @@ -3087,58 +3548,59 @@ Ejemplos RemoteCallbacks - + remote: %1 remote: %1 - + failed to execute pre-push hook: bash not found Falló al ejecutar hook pre-envío: bash no encontrado - + failed to execute pre-push hook: %1 Falló al ejecutar hook pre-envío: %1 - + HTTPS Credentials Credenciales HTTPS - + SSH Passphrase Frase de contraseña SSH - + Username: Nombre de Usuario: - + Password: Contraseña: - + Passphrase: Frase de Contraseña: - + + authentication canceled Autenticación cancelada - + From %1 De %1 - - + + To %1 Para %1 @@ -3146,47 +3608,47 @@ Ejemplos RemoteDialog - + Push all tags Enviar todas las etiquetas - + Update existing tags Actualizar etiquetas existentes - + Merge Fusionar - + Rebase Reorganizar - + Merge (No Fast-forward) Fusionar (Sin adelantar) - + Merge (Fast-forward Only) Fusionar (Adelantar Únicamente) - + Set upstream Configurar rama a seguir - + Force Forzar - + Remote Reference: Referencia Remota: @@ -3234,12 +3696,12 @@ Ejemplos RemotePage - + Remote Repository URL URL del Repositorio Remoto - + Choose protocol to authenticate with the remote. Escoge el protocolo para autenticarse con el remoto. @@ -3248,32 +3710,32 @@ Ejemplos Ingrese la URL del repositorio remoto. - + Enter the URL of the remote repository or browse for a local directory - + Ingrese la URL del repositorio remoto o explorea un directorio local + + + + ... + ... - ... - ... - - - Choose Directory - Escoger Directorio + Escoger Directorio - + Examples of valid URLs include:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> Ejemplos de URLs válidas incluyen:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> - + Protocol: Protocolo: - + URL: @@ -3281,12 +3743,12 @@ Ejemplos RemoteTableModel - + Name Nombre - + URL @@ -3294,61 +3756,74 @@ Ejemplos RemotesPanel - + Delete Remote? ¿Borrar Remoto? - + Are you sure you want to delete '%1'? ¿Estás seguro que deseas borrar %1? - + Delete Borrar + + RenameBranchDialog + + + Name: + Nombre: + + + + Rename Branch + + + RepoModel - + Clone Repository Clonar Repositorio - + Open Existing Repository Abrir repositorio existente - + Initialize New Repository Inicializar Nuevo Repositorio - + Connecting Conectando - + open abrir - + recent reciente - + remote remoto - - + + none ninguno @@ -3356,130 +3831,161 @@ Ejemplos RepoView - + Indexing... Indexando... - + Search Buscar - The indexer worker process crashed. If this problem persists please contact us at support@gitahead.com. - El proceso de indexado estalló. Si este problema persiste por favor contáctanos en support@gitahead.com. + El proceso de indexado estalló. Si este problema persiste por favor contáctanos en support@gitahead.com. - + Indexer Crashed El indexador estalló - + Stage Directory? ¿Preparar Directorio? - + Are you sure you want to stage '%1'? ¿Estás seguro que deseas preparar %1? - + This will result in the addition of %1 files. Esto resultará en la adición de %1 archivos. - + more than 100 más de 100 - + Stage Directory Preparar Directorio - + Stop prompting to stage directories Dejar de preguntar para preparar directorios - + Stage Large File? ¿Preparar Archivo Grande? - + Are you sure you want to stage '%1' with a size of %2? ¿Estás seguro que quieres preparar '%1' con un tamaño de %2? - + Stage Preparar - + Track with LFS Seguir con LFS - + This repository has LFS enabled. Do you want to track the file with LFS instead? Este repositorio tiene LFS habilitado. ¿Prefieres seguir el archivo con LFS? - + Stop prompting to stage large files Dejar de preguntar para preparar archivos grandes - + Esc - + stage - + preparar - + Git LFS was not found on the PATH. <a href='https://git-lfs.github.com'>Install Git LFS</a> to use LFS integration. Git LFS no fue encontrado en el PATH. <a href='https://git-lfs.github.com'>Instala Git LFS</a> para usar la integración LFS. - + untracked file archivo sin seguimiento - + untracked files archivos sin seguimiento - + Remove Untracked Files Remover archivos sin seguimiento - + Remove %1 %2? ¿Remover %1 %2? - + This action cannot be undone. Esta acción no puede ser deshecha. - + Remove Remover + + + + Certificate Error + + + + + SSL verification disabled for this repository + + + + + [http] + sslVerify = false + +was added to %1/config + + + + + SSL verification disabled for all git repositories + + + + + [http] + sslVerify = false + +was added to %1 + + Pull Request @@ -3496,297 +4002,314 @@ Ejemplos Crear solicitud de integración - - - + + + Git LFS Git LFS - + Initialize Inicializar - + initialize - + inicializar - + Git LFS initialized. Git LFS inicializado. - + Deinitialize Desinicializar - + deinitialize - + desinicializar - + Git LFS Deinitialized. Git LFS desinicializado. - + Lock Bloquear - + Unlock Desbloquear - - + + Unable to %1 '%2' - %3 No es posible %1 %2 - %3 - + Unable to %1 - %2 No es posible %1 - %2 - + %1 remotes %1 remotos - + Fetch All Traer Todo - + Fetch Traer - - - + + + <i>no remote</i> <i>sin remoto</i> - + Unable to fetch. No upstream is configured for the current branch, and there isn't a remote called 'origin'. No se puede traet. No hay rama a seguir configurada para la rama actual, y no hay un remoto llamado 'origin'. - - + + Fetch canceled. Traer cancelado. - + fetch from Traer desde - + + You may disable ssl verification <a href='action:sslverifyrepo'>for this repository</a> or overall disable ssl verification <a href='action:sslverifygit'>for all repositories</a>. + + + + - + Everything up-to-date. Todo está actualizado. - - - + + + <i>no branch</i> <i>sin rama</i> - + %1 from %2 %1 desde %2 - + Pull Combinar - + <i>no upstream</i> <i>sin rama a seguir</i> - + Merge Fusionar - + %1 into %2 %1 en %2 - + Fast-forward Adelantar - + %2 to %1 %2 para %1 - + + Rebase Reorganizar - + %2 on %1 %2 sobre %1 - + The repository is empty. - + El repositorio está vacío. - + The current branch '%1' has no upstream branch. la rama actual %1 no tiene rama a seguir. - - + + Already up-to-date. Ya está actualizado. - + Unable to fast-forward. No se puede adelantar. - + fast-forward adelantar - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='%1'>fast-forward</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Puedes reconciliar tus cambios con los archivos en conflicto <a href='action:stash'>haciendo un guardado rápido</a> antes de <a href='%1'>adelantar</a>. Después, <a href='action:unstash'>recupera el guardado</a> para reestablecer tus cambios. - + If you want to create a new merge commit instead of fast-forwarding, you can <a href='%1'>merge without fast-forwarding </a> instead. Si quieres crear una nueva confirmación de fusión en lugar de adelantar, puedes <a href='%1'>fusionar sin adelantar</a> en su lugar. - - - - + + + + merge fusionar - - + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:merge'>merge</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Puedes reorganizar <a href='action:stash'>haciendo un guardado rápido</a> antes de <a href='action:merge'>fusionar</a>. Después, <a href='action:unstash'>recupera el guardado</a> para reestablecer tus cambios. - - + + + Abort Abortar - + Some merged files have unstaged changes Algunos archivos fusionados tienen cambios sin preparar - + abort merge abortar fusión - - - + + + revert revertir - - - + + + cherry-pick escoger - - - + + + rebase reorganizar - + + Continue ongoing rebase + + + + + Invalid head. + + + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:rebase'>rebase</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Puedes reorganizar <a href='action:stash'>haciendo un guardado rápido</a> antes de <a href='action:rebase'>reorganizar</a>. Después, <a href='action:unstash'>recupera el guardado</a> para reestablecer tus cambios. - + + %1/%2 %1 / %2 - + %1 - %2 %1 - %2 - + Apply Aplicar - There was a merge conflict. The rebase has been aborted - Hubo un conflicto de fusión. La reorganización ha sido abortada + Hubo un conflicto de fusión. La reorganización ha sido abortada - + %1 - %2 <i>already applied</i> %1 - %2 <i>ya se ha aplicado</i> - + %1 - %2 as %3 %1 - %2 como %3 - - - + + + squash - + aplastar - + Revert Revertir - + Revert "%1" This reverts commit %2. @@ -3795,457 +4318,527 @@ This reverts commit %2. Esto revierte la confirmación %2. - + <i>detached HEAD</i> <i>HEAD separado</i> - + %1 on %2 %1 sobre %2 - + Cherry-pick Escoger - Force Push? - ¿Forzar Envío? + ¿Forzar Envío? - + Are you sure you want to force push? ¿Estás seguro que deseas forzar el envío? - + The remote will lose any commits that are reachable only from the overwritten reference. Dropped commits may be unexpectedly reintroduced by clones that already contain those commits locally. El remoto perderá cualquier confirmación que solo es alcanzable desde la referencia sobreescrita. Las confirmaciones descartadas podrían ser reintroducidas inesperadamente por clones que ya tengan esas confirmaciones localmente. - + Force Push Forzar Envío - + <i>no reference</i> <i>sin referencia</i> - + Push Enviar - + Push (Force) Envío (Forzar) - - + + %1 to %2 %1 para %2 - - + + You are not currently on a branch. No estás actualmente en una rama. - + Create a commit to add the default '%1' branch. Crea una confirmación para añadir la rama %1 por defecto. - + You can <a href='action:checkout'>checkout</a> a branch then <a href='action:push'>push</a> again, or <a href='action:push-to'>push to an explicit branch</a>. Tu puedes <a href='action:checkout'>revisar</a> una rama y depués <a href='action:push'>enviar</a> de nuevo, o <a href='action:push-to'>enviar a una rama explícita</a>. - + The current branch '%1' has no default remote. la rama actual %1 no tiene remoto por defecto. - + You may want to <a href='action:add-remote?name=origin'>add a remote named 'origin'</a>. Then <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a> to begin tracking a remote branch called 'origin/%1'. Tu podrías querer <a href='action:add-remote?name=origin'>añadir un remoto llamado 'origin'</a>. Después <a href='action:push?set-upstream=true'>envía y configura la rama a seguir</a> para empezar a seguir una rama remota llamada 'origin/%1'. - + You can also <a href='action:push-to'>push to an explicit URL</a> if you don't want to track a remote branch. Tu también puedes <a href='action:push-to'>enviar a una URL explícita</a> si no quieres seguir una rama remota. - + To begin tracking a remote branch called '%1', <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a>. Para empezar a seguir una rama remota llamada '%1', <a href='action:push?set-upstream=true'>envía y configura la rama a seguir</a>. - + To push without setting up tracking information, <a href='action:push?ref=%1'>push '%2'</a> explicitly. Para enviar sin configurar información de seguimiento, <a href='action:push?ref=%1'>envía '%2'</a> explícitamente. - + Push canceled. Envío cancelado. - + push to enviar a - + The tag update may cause the remote to lose commits. La actualización de la etiqueta puede causar que el remoto pierda confirmaciones. - + If you want to risk the remote losing commits, you can <a href='action:push?ref=%1&to=%2&force=true'>force push</a>. Si quieres arriesgar que el remoto pierda confirmaciones, tu puedes <a href='action:push?ref=%1&to=%2&force=true'>forzar el envío</a>. - You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push'>push</a> again. - Tu podrías querer <a href='action:pull'>integrar</a> primero las confirmaciones remotas. Después <a href='action:push'>envía</a> de nuevo. + Tu podrías querer <a href='action:pull'>integrar</a> primero las confirmaciones remotas. Después <a href='action:push'>envía</a> de nuevo. - If you really want the remote to lose commits, you may be able to <a href='action:push?force=true'>force push</a>. - Si realmente que el remoto pierda confirmaciones. tu podrías <a href='action:push?force=true'>forzar el envío</a>. + Si realmente que el remoto pierda confirmaciones. tu podrías <a href='action:push?force=true'>forzar el envío</a>. - + Commit? ¿Confirmar? - + Are you sure you want to commit on a detached HEAD? ¿Estás seguro que quieres confirmar en un HEAD separado? - + <p>You are in a detached HEAD state. You can still commit, but the new commit will not be reachable from any branch. If you want to commit to an existing branch, checkout the branch first.</p> <p>Estás en un estado separado de HEAD. Aun así, puedes confirmar, pero la nueva confirmación no será alcanzable desde ninguna rama. Si quieres confirmar a una rama existente, revisa primero la rama.</p> - - + + Commit Confirmar - - + + <i>no commit</i> <i>sin confirmación</i> - + commit confirmar - + This commit was signed with a generated user name and email. Esta confirmación fue firmada con un nombre de usuario y correo electrónico generado. - + Consider setting the user name and email in <a href='action:config?global=true'>global settings</a>. Considera configurar el nombre de usuario y correo electrónico en <a href='action:config?global=true'>configuración global</a>. - + If you want to limit the name and email settings to this repository, <a href='action:config'>edit repository settings</a> instead. Si quieres limitar la configuración de nombre y correo electrónico a este repositorio, <a href='action:config'>edita la configuración de repositorio</a>. - + After settings have been updated, <a href='action:amend'> amend this commit</a> to record the new user name and email. Después que la configuración haya sido actualizada, <a href='action:amend'>enmienda esta confirmación</a> para registrar el nuevo nombre de usuario y correo electrónico. - + file archivo - + files archivos - + %1 - %2 %3 %1 - %2 %3 - - + + Checkout Revisar - + Checkout Detached HEAD? ¿Revisar HEAD separado? - + Checkout Detached HEAD Revisar HEAD separado - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to reset the existing local branch '%2' to this commit instead? Revisar la rama remota '%1' resultará en un estado de HEAD separado . ¿Quieres restaurar la rama local existente '%2' a esta confirmación en su lugar? - + Reset Local Branch Restaurar Rama Local - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to create a new local branch called '%2' to track it instead? Revisar la rama remota '%1' resultará en un estado de HEAD separado . ¿Quieres crear una nueva rama local llamada '%2' para seguirla en su lugar? - + Create a local branch to start tracking remote changes and make new commits. Check out the detached HEAD to temporarily put your working directory into the state of the remote branch. Crea una rama local para empezar a seguir los cambios remotos y hacer nuevas confirmaciones. Revisa el HEAD separado para poner tu directorio de trabajo en el estado de la rama remota temporalmente. - + Create Local Branch Crear Rama Local - + checkout revisar - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='action:checkout?%1'>checkout '%2'</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Puedes reconciliar tus cambios con los archivos en conflicto <a href='action:stash'>haciendo un guardado rápido</a> antes de <a href='action:checkout?%1'>revisar '%2'</a>. Después, <a href='action:unstash'>recupera el guardado</a> para reestablecer tus cambios. - + New Branch Nueva rama - + create new branch crear nueva rama - + (no branch) (sin rama) - + WIP on %1: %2 %3 WIP en %1: %2 %3 - + <i>working directory</i> <i>directorio de trabajo</i> - + Stash Guardado rápido - + stash guardado rápido - + Apply Stash Aplicar guardado rápido - + apply stash aplicar guardado rápido - + Drop Stash Descartar guardado rápido - + drop stash descartar guardado rápido - + Pop Stash Sacar Guardado Rápido - + pop stash sacar Guardado Rápido - + %1 as %2 %1 como %2 - + Tag Etiqueta - + tag etiqueta - - - + + Amend Enmendar - - - + + Amending commit %1 + + + + + %1 to %2 + update ref + %1 para %2 + + + + + + + + Reset Reestablecer - Amend? - ¿Enmendar? + ¿Enmendar? - Reset? - ¿Reestablecer? + ¿Reestablecer? - Are you sure you want to amend '%1'? - ¿Estás seguro que deseas enmendar %1? + ¿Estás seguro que deseas enmendar %1? - + Are you sure you want to reset '%1' to '%2'? ¿Estás seguro que deseas reestablecer '%1' a '%2'? - + <p>Some commits may become unreachable from the current branch.</p> <p>Algunas confirmaciones pueden quedar inalcanzables desde la rama actual.</p> - + <p>Resetting will cause you to lose uncommitted changes. Untracked and ignored files will not be affected.</p> <p>Reestablecer causará que pierdas todos los cambios que no se han confirmado. Los archivos sin seguimiento e ignorados no serán afectados</p> - + <p>Your branch appears to be up-to-date with its upstream branch. Resetting may cause your branch history to diverge from the remote branch history.</p> <p>Tu rama parece estar actualizada con la rama que sigue. Reestablecer puede causar que tu historial de rama difiera del historial de la rama remota.</p> - + + amend enmendar - + reset reestablecer - + + %1 of %2 submodules %1 de %2 submódulos - - + + Update Actualizar - + + update submodule Actualizar submódulo - + + The indexer worker process crashed. If this problem persists please contact us at <TODO: replace.support@gitahead.com>. + + + + + Please resolve conflicts before continue + + + + + Conflict + + + + + Rebase finished + + + + + Force Push to %1? + + + + + You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push?to=%1'>push</a> again. + + + + + If you really want the remote to lose commits, you may be able to <a href='action:push?to=%1&force=true'>force push</a>. + + + + + Reset canceled. + + + + + Untouched + + + + Invalid Submodule Repository Repositorio de Submódulo inválido - + The submodule '%1' doesn't have a valid repository. You may need to init and/or update the submodule to check out a repository. El submódulo '%1' no tiene un repositorio válido. Podrías necesitar inicializar y/o actualizar el submódulo para que revise un repositorio. - + + No terminal executable found + + + + + No terminal executable was found. Please configure a terminal in the configuration. + + + + + Open Configuration + + + + There was a merge conflict. Hubo un conflicto de fusión. - + Resolve conflicts, then commit to conclude the %1. See <a href='expand'>details</a>. Resuelve los conflictos, después confirma para concluir la %1. Ver <a href='expand'>detalles</a>. - + Resolve conflicts in each conflicted (!) file in one of the following ways: Resuelve los conflictos en cada archivo con conflicto (!) de una de las siguientes maneras: - + 1. Click the 'Ours' or 'Theirs' button to choose the correct change. Then click the 'Save' button to apply. 1. Presiona el botón 'Nuestro' o 'De Ellos' para escoger el cambio correcto. Después presiona el botón 'Guardar' para aplicar. - + 2. Edit the file in the editor to make a different change. Remember to remove conflict markers. 2. Edita el archivo en el editor para hacer un cambio diferente. Recuerda remover las marcas de conflicto. - + 3. Use an external merge tool. Right-click on the files in the list and choose 'External Merge'. 3. Usa una herramienta externa de fusión. Click derecho sobre los archivos de la liste y escoge 'Fusión externa'. - + After all conflicts in the file are resolved, click the check box to mark it as resolved. Después de resolver todos los conflictos en el archivo, márcalo como resuelto. - + After all conflicted files are staged, commit to conclude the %1. Después de preparar todos los archivos en conflicto, realiza una confirmación para concluir la %1. - + You can <a href='action:abort'>abort</a> the %1 to return the repository to its previous state. Tu puedes <a href='action:abort'>abortar</a>la %1 para retornar el repositorio a su estado previo. @@ -4253,12 +4846,12 @@ Esto revierte la confirmación %2. Repository - + Unknown error Error desconocido - + git-lfs not found git LFS no encontrado @@ -4266,7 +4859,7 @@ Esto revierte la confirmación %2. SearchField - + Search Buscar @@ -4274,32 +4867,32 @@ Esto revierte la confirmación %2. SearchPanel - + Enable indexing Habilitar indexado - + terms términos - + lines líneas - + Limit commits to: Limitar confirmaciones a: - + Diff context: Diferencia de contexto: - + Remove Index Remover índice @@ -4307,95 +4900,100 @@ Esto revierte la confirmación %2. Settings - + Prompt to edit stash message before stashing Preguntar para editar el mensaje de guardado rápido antes de hacerlo - + Prompt to edit commit message before merging Preguntar para editar el mensaje de confirmación antes de fusionar - + Prompt to edit commit message before reverting Preguntar para editar el mensaje de guardado rápido antes de revertir - + Prompt to edit commit message before cherry-picking Preguntar para editar el mensaje de confirmación antes de escoger - + Prompt to stage directories - + Preguntar al preparar directorios - + Prompt to stage large files - + Preguntar al preparar ficheros pesados SettingsDialog - + Esc - + Global git settings can be overridden for each repository in the corresponding repository configuration page. La configuración global de git puede ser anulada por cada repositorio en la página de configuración de repositorio correspondiente. - + Edit Config File... Editar Archivo de Configuración... - + General General - + Diff Diferencia - + Tools Herramientas - + Window Ventana - + Editor Editor - + Update Actualizar - + Plugins - + Misc + Varios + + + + Hotkeys - + Terminal @@ -4403,22 +5001,22 @@ Esto revierte la confirmación %2. ShowTool - + Finder - + Buscador - + Explorer - + Explorador - + Default File Browser - + Explorador por defecto - + Show in %1 Mostrar en %1 @@ -4426,14 +5024,14 @@ Esto revierte la confirmación %2. SideBar - + Close Cerrar - - + + Remove Remover @@ -4458,57 +5056,57 @@ Esto revierte la confirmación %2. Abrir Repositorio - + Initialize New Repository Inicializar Nuevo Repositorio - + Add %1 Account Añadir cuenta de %1 - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>¿Estás seguro que deseas remover la asociación al repositorio remoto de %1?</p><p>El repositorio local no será afectado.</p> - + Remove Repository Association? ¿Remover Asociación de Repositorio? - + Clear All Recent Limpiar Todos los Recientes - + Show Full Path Mostrar Ruta Completa - + Filter Non-existent Paths Filtrar Rutas no Existentes - + Refresh Remote Accounts Refrescar Cuentas Remotas - + Show Full Name Mostrar Nombre Completo - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>¿Estás seguro que deseas remover la cuenta de %1 para '%2'?</p><p>Solo la asociación de la cuenta será removida. La configuraciones remotas y repositorios locales no serán afectados.</p> - + Remove Account? ¿Remover Cuenta? @@ -4516,108 +5114,108 @@ Esto revierte la confirmación %2. StartDialog - + Choose Repository Escoger Repositorio - + Understand your history! ¡Entiende tu historia! - + Clone Repository Clonar Repositorio - + Open Existing Repository Abrir Repositorio Existente - + Open Repository Abrir Repositorio - + Initialize New Repository Inicializar Nuevo Repositorio - + Clear All Limpiar Todo - + Show Full Path Mostrar Ruta Completa - + Filter Non-existent Paths Filtrar Rutas no Existentes - + Repositories: Repositorios: - + Refresh Refrescar - + Show Full Name Mostrar Nombre Completo - + Remote: Remoto: - + View Getting Started Video Ver Video Para Empezar - + Clone Clonar - + Open Abrir - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>¿Estás seguro que deseas remover la cuenta de %1 para '%2'?</p><p>Solo la asociación de la cuenta será removida. La configuraciones remotas y repositorios locales no serán afectados.</p> - + Remove Account? ¿Remover Cuenta? - - + + Remove Remover - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>¿Estás seguro que deseas remover la asociación al repositorio remoto de %1?</p><p>El repositorio local no será afectado.</p> - + Remove Repository Association? ¿Remover Asociación de Repositorio? @@ -4625,7 +5223,7 @@ Esto revierte la confirmación %2. SubmoduleTableModel - + Name Nombre @@ -4635,32 +5233,32 @@ Esto revierte la confirmación %2. - + Branch Rama - + Initialized Inicializado - + Deinitializing '%1' will remove its working directory. Are you sure you want to deinitialize? Desinicializar '%1' removerá su directorio de trabajo. ¿Estás seguro que quieres desinicializar? - + Deinitialize Submodule? ¿Desinicializar Submódulo? - + The submodule working directory contains uncommitted changes that will be lost if you continue. El directorio de trabajo del submódulo contiene cambios sin confirmar que se perderán si continuas. - + Deinitialize Desinicializar @@ -4694,31 +5292,107 @@ Esto revierte la confirmación %2. Anotado - + Name Nombre + + TemplateDialog + + + Name + Nombre + + + + Content + + + + + + Add + + + + + use %1 to declare the position of the cursor. + + + + + use ${files:x} to add all updated file names, +x (number) determines the number of maximum files shown + + + + + Remove + Remover + + + + Up + + + + + Down + + + + + Import + + + + + Export + + + + + Open File + + + + + + Gittyup Templates (*%1) + + + + + Save Templates + + + + + Replace + Reemplazar + + TerminalPanel - - + + Install Instalar - + Name: Nombre: - + Location: Ubicación: - + Uninstall Desinstalar @@ -4726,144 +5400,187 @@ Esto revierte la confirmación %2. TextEdit - + Replace... - + Reemplazar... - + Replace All... - + Reemplazar Todo... - + Ignore - Ignorar + Ignorar - + Ignore All - + Ignorar Todo - + Add to User Dictionary - + Añador al Diccionario de Usuario - + Do not Ignore - + No Ignorar ThemeDialog - Native Theme - Tema Nativo + Tema Nativo - + A flexible look matching system colors Un look flexible acorde con los colores del sistema - + Dark Theme Tema oscuro - + + Pick a theme for Gittyup + + + + + Default Theme + + + + + A consistent bright theme + + + + A consistent look optimal for reducing eye strain Un look consistente optimo para reducir el agotamiento visual + + + System Theme + + ToolBar - + Show repository sidebar Mostrar barra lateral del repositorio - + Previous Anterior - + Next Siguiente - + Fetch Traer - + Pull Combinar - + Merge - Fusionar + Fusionar - + Rebase - Reorganizar + Reorganizar - + Push Enviar - + Checkout Revisar - + Stash Guardado Rápido - + Pop Stash Sacar Guardado Rápido - + + Open Terminal + + + + + Open file manager + + + + Configure Settings Configuración + + + Repository settings + + - + Application settings + + + + + Show Log Mostrar Histórico - - Diff View - Vista de Diferencias + + Double Tree View + - + Diff View + Vista de Diferencias + + + Tree View Vista de Árbol - + Show Starred Commits Mostrar confirmaciones favoritas - + Hide Log Ocultar Histórico @@ -4871,32 +5588,42 @@ Esto revierte la confirmación %2. ToolsPanel - + Keep backup of merge files (.orig) Mantener respaldo de archivos de fusión (.orig) - + External editor: Editor externo: - + External diff: Diff externo: - + External merge: Fusión Externa: - + Backup files: Archivos de respaldo: - + + Terminal emulator command: + + + + + File manager command: + + + + Configure Configurar @@ -4904,20 +5631,77 @@ Esto revierte la confirmación %2. TreeModel - + Submodule Submódulo + + TreeView + + + Directory + Directorio + + + + File + Archivo + + + + Remove or discard %1? + + + + + Are you sure you want to remove or discard all changes in '%1'? + + + + + This action cannot be undone. + Esta acción no puede ser deshecha. + + + + + Discard + Descartar + + + + discard + descartar + + + + TreeWidget + + + Search: + + + + + Regex + + + + + Case Sensitive + + + UpToDateDialog - + Already Up-to-date Ya está actualizado - + %1 is already up-to-date. You have version %2. %1 ya está actualizado. Tienes la versión %2. @@ -4925,55 +5709,76 @@ Esto revierte la confirmación %2. UpdateDialog - + Update %1 Actualizar %1 - + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. The new version will be soon available in your package manager. Just update your system.</p><b>Release Notes:</b> + + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. Would you like to download it now?</p><b>Release Notes:</b> <h3>¡Una nueva versión de %1 está disponible!</h3><p>%1 %2 está disponible - tienes %3. ¿Te gustaría descargarla ahora?</p><b>Notas de Versión:</b> - + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3.</p><p>If you downloaded the flatpak package over a package manager or from flathub.org <br/>you don't have to install manually a new version. It will be available within the next <br/>days during your system update: <code>flatpak update</code></p><b>Release Notes:</b> + + + + Automatically download and install updates Descargar e instalar actualizaciones automáticamente - + Install Update Instalar actualización - + Remind Me Later Recuérdame más Tarde - + Skip This Version Saltar Esta Versión + + + Ok + + + + + Donate + + UpdatePanel - + Check for updates automatically Revisar por actualizaciones automáticamente - + Automatically download and install updates Descargar e instalar actualizaciones automáticamente - + Check Now Revisar Ahora - + Software Update: Actualización de Software: @@ -4981,17 +5786,17 @@ Esto revierte la confirmación %2. UpdateSubmodulesDialog - + Recursive Recursivo - + Init Inicializar - + Update Actualizar @@ -4999,42 +5804,47 @@ Esto revierte la confirmación %2. Updater - + Update Failed Actualización Fallida - + Unable to check for updates No es posible revisar por actualizaciones - + Unable to download update No es posible descargar actualizaciones - + Unable to open temporary file No es posible abrir archivo temporal - + Unable to install update No es posible instalar actualización - - Some windows failed to close - Algunas ventanas fallaron al cerrar + + Some windows failed to close. You can download the binary manually from %1 + - + Some windows failed to close + Algunas ventanas fallaron al cerrar + + + Unknown install error Error de instalación desconocido - + + Installer script failed: %1 Script de instalación falló: %1 @@ -5055,12 +5865,13 @@ Esto revierte la confirmación %2. - + + Helper application failed to start La aplicación de ayuda falló al iniciar - + Installer failed to start El instalador falló al iniciar @@ -5068,94 +5879,139 @@ Esto revierte la confirmación %2. WindowPanel - + Add New Theme Añadir Nuevo Tema - + Edit Current Theme Editar el Tema Actual - + Create Theme Crear Tema - + Theme Name Nombre del Tema - + Restart? ¿Reiniciar? - + The application must be restarted for the theme change to take effect. La aplicación debe reiniciarse para que el cambio de tema tenga efecto. - + Do you want to restart now? ¿Quieres reiniciar ahora? - + Restart Reiniciar - + Later Después - + Show full repository path Mostrar ruta completa del repositorio - + Hide automatically Ocultar automáticamente - + Open submodules in tabs Abrir submódulos en pestañas - + Open all repositories in tabs Abrir todos los repositorios en pestañas - + + Hide Menubar + + + + + Show Avatars + + + + Theme: Tema: - + Title: Título: - + Log: Histórico: - + Tabs: Pestañas: - + + View: + + + + Prompt: Pregunta: + + _FileWidget::Header + + + + Use Theirs: Delete + + + + + + Use Ours: Delete + + + + + both: %1 + + + + + ours: %1 + + + + + theirs: %1 + + + diff --git a/l10n/gittyup_ja.ts b/l10n/gittyup_ja.ts index 61f000d9..a08a443c 100644 --- a/l10n/gittyup_ja.ts +++ b/l10n/gittyup_ja.ts @@ -4,55 +4,63 @@ AboutDialog - + About %1 %1 について - + Understand your history! Git の履歴を見やすく管理 - + Changelog 変更履歴 - + Acknowledgments 謝辞 - + Privacy プライバシー - Usage reporting has been disabled. Restart the application for changes to take effect. - 使用状況の調査を無効にしました。アプリケーションを再起動してください。 + 使用状況の調査を無効にしました。アプリケーションを再起動してください。 - Usage Reporting Disabled - 使用状況の調査の無効化 + 使用状況の調査の無効化 Account - + + Connection failed + 接続失敗 + + + <b>Note:</b> Basic authentication is not supported if you have two-factor authentication enabled. Use a <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>personal access token</a> in the password field instead. <b>注:</b> 2 段階認証が有効な場合、Basic 認証は使用できません。パスワードのフィールドには代わりに<a href='https://help.github.com/ja/articles/creating-a-personal-access-token-for-the-command-line/'>個人アクセストークン</a>を指定してください。 - + + <b>Note:</b> Only Basic authentication is currently supported + + + + <b>Note:</b> Basic authentication is not supported. Use a <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>personal access token</a> in the password field instead. <b>注:</b> Basic 認証は使用できません。パスワードのフィールドには代わりに<a href='https://gitlab-docs.creationline.com/ee/user/profile/personal_access_tokens.html'>個人アクセストークン</a>を指定してください。 - + Authentication failed 認証失敗 @@ -60,7 +68,7 @@ AccountDialog - + Add Remote Account リモートアカウントを追加 @@ -90,32 +98,32 @@ URL: - + Replace? 置き換えますか? - + An account of this type already exists. この種類のアカウントは既に存在します。 - + Would you like to replace the previous account? 以前のアカウントと置き換えますか? - + Replace 置換 - + Cancel キャンセル - + Connection Failed 接続失敗 @@ -123,18 +131,18 @@ AddRemoteDialog - - + + Add Remote リモートを追加 - + Name: 名前: - + URL: URL: @@ -142,7 +150,7 @@ AdvancedButton - + Advanced Search 高度な検索 @@ -150,219 +158,263 @@ AdvancedSearchWidget - + Author: 作者: - + Author name 作者の名前 - + Email: E メール: - + Author email 作者の E メール - + Message: メッセージ: - + Commit message コミットに添えられた説明 - + Date: 日付: - + Specific commit date 特定のコミット日からのみ検索 - + After: 日付 - 開始: - + Commits after date 特定のコミット日以降からのみ検索 - + Before: 日付 - 終了: - + Commits before date 特定のコミット日以前からのみ検索 - + File: ファイル: - + File name ファイル名 - + Path: パス: - + File path ファイルの場所 - + Scope: 範囲: - + Hunk header text 差分場所を示すヘッダーのテキスト - + Context: 差分周辺: - + Diff context (white) 変更した箇所の周辺 (白) - + Addition: 追加部分: - + Diff addition (green) 追加した箇所の差分 (緑) - + Deletion: 削除部分: - + Diff deletion (red) 削除した箇所の差分 (赤) - + Comment: コメント: - + Source code comment ソースコードのコメント - + String: 文字列: - + Source code string literal ソースコードの文字列リテラル - + Identifier: 識別子: - + Source code identifier ソースコードの識別子 - + Search 検索 - + Return Return + + AmendDialog + + + Author + + + + + Committer + + + + + Commit Message: + + + + + Amend + 修正 + + + + Cancel + キャンセル + + Application - + SSL Errors SSL エラー - + Failed to set up SSL session. Do you want to ignore these errors? SSL セッションのセットアップに失敗しました。これらのエラーを無視しますか? + + AuthorCommitterDate + + + Author/Committer: + + + + + Author: + + + + + Committer: + + + Beanstalk - Connection failed - 接続失敗 + 接続失敗 Bitbucket - Connection failed - 接続失敗 + 接続失敗 BlameEditor - + Untitled 無題 - + Not Tracked 未追跡 - + HEAD リビジョン情報なし - + Working Copy 作業コピー - + Save File ファイルを保存 @@ -370,12 +422,12 @@ BlameMargin - + Not Committed 未コミット - + Invalid Signature 無効な署名 @@ -383,17 +435,17 @@ BranchTableModel - + Name 名前 - + Upstream 上流 - + Rebase リベース @@ -401,17 +453,17 @@ CheckoutDialog - + Detach HEAD このリビジョンで作業し続ける - + References: 参照先: - + Checkout チェックアウト @@ -419,7 +471,7 @@ ClearButton - + Clear 消去 @@ -427,32 +479,32 @@ CloneDialog - + Initialize Repository リポジトリを作成 - + Clone Repository リポジトリをクローン - + Initialized empty repository into '%1' 空のリポジトリを '%1' に作成しました - + Cloned repository from '%1' into '%2' リポジトリ '%1' を '%2' にクローンしました - + Initialize 作成 - + Clone クローン @@ -460,33 +512,33 @@ ClonePage - + Clone Progress クローンの進行状況 - + The new repository will open after the clone finishes. クローンの完了後に、新しいリポジトリが開かれます。 - + Clone クローン - - + + clone クローン - + Clone canceled. クローンをキャンセルしました。 - + Failed to %1 into '%2' - %3 '%2' への%1に失敗しました - %3 @@ -494,27 +546,27 @@ CommitDetail - + Copy コピー - + Range: 範囲: - + Id: ID: - + initial commit 初回コミット - + Parents: @@ -572,120 +624,181 @@ CommitEditor - + + T + + + + <b>Commit Message:</b> <b>コミットの説明:</b> - - + + Spell Check Language スペルチェックの言語 - + The dictionary '%1' is invalid 辞書 '%1' が無効です - + Spell checking is disabled. スペルチェックは無効化されました。 - + The choosen dictionary '%1.dic' is not a valid hunspell dictionary. 指定された辞書 '%1.dic' は有効な hunspell 辞書ではありません。 - - + + Invalid dictionary '%1.dic' 無効な辞書 '%1.dic' - + Edit User Dictionary ユーザー辞書を編集 - + Stage All 全てステージに上げる - + Unstage All 全てステージから降ろす - - + + Commit コミット - + + Abort rebasing + + + + + Continue rebasing + + + + + Abort Merge + マージを中断 + + + + %1 + %1 + + + + %1 and %2 + + + + + %1, %2, and %3 + + + + + Merge + マージ + + + + Revert + + + + + Cherry-pick + + + + + Rebase + リベース + + + + Abort %1 + %1を中断 + + + + Commit Rebase + + + Update %1 - %1 の更新 + %1 の更新 - Update %1 and %2 - %1 と %2 の更新 + %1 と %2 の更新 - Update %1, %2, and %3 - %1, %2, %3 の更新 + %1, %2, %3 の更新 - Update %1, %2, and %3 more files... - %1, %2, 他 %3 個のファイルの更新... + %1, %2, 他 %3 個のファイルの更新... - + Nothing staged ステージ上に項目なし - + %1 of %2 file staged %1 / %2 個のファイルをステージに上げました - + %1 of %2 files staged %1 / %2 個のファイルをステージに上げました - + %1 file partially staged %1 個のファイル一部分をステージに上げました - + %1 files partially staged %1 個のファイル一部分をステージに上げました - + %1 unresolved conflict %1 件の衝突が未解決です - + %1 unresolved conflicts %1 件の衝突が未解決です - + all conflicts resolved 全ての衝突を解決しました - + Commit Merge マージをコミット @@ -693,114 +806,131 @@ CommitList - + Remove Untracked Files 未追跡のファイルを削除 - + Apply 適用 - + Pop 引き出す - + Drop 削除 - + Unstar スターを外す - + Star スターを付ける - + Add Tag... タグを追加... - + New Branch... 新しいブランチ... - Delete Tag %1 - タグ %1 を削除 + タグ %1 を削除 - Delete Branch %1 - ブランチ %1 を削除 + ブランチ %1 を削除 - + + Rename Branch + + + + + Delete Branch + + + + + Delete Tag + タグを削除 + + + Merge... マージ... - + Rebase... リベース... - + Squash... スカッシュ... - + Revert 取り消す - + Cherry-pick 取り込む - - - + + Checkout %1 %1 をチェックアウト - + + Checkout + チェックアウト + + + Local branch is already checked out ローカルブランチは既にチェックアウトされています - + This is a bare repository これはベアリポジトリです - + Reset リセット - + Soft 作業対象のリビジョンのみ - + Mixed 作業対象のリビジョンとステージ上の項目 - + Hard 作業ツリーを含む全て @@ -808,12 +938,12 @@ CommitModel - + Uncommitted changes コミットされていない変更 - + Checking for uncommitted changes コミットされていない変更を確認しています @@ -821,128 +951,165 @@ CommitToolBar - + Show All Branches 全てのブランチを表示 - + Show Selected Branch 選択したブランチのみを表示 - + Sort by Date 日時順に並べる - + Sort Topologically 関連順に並べる - + Show Graph グラフを表示 - + Show Clean Status 空の状態を表示 - + Compact Mode コンパクトモード + + + Show Author + + + + + Show Date + + + + + Show Id + + ConfigDialog - + Esc Esc - + General 一般 - + Diff 差分 - + Remotes リモート - + Branches ブランチ - + Submodules サブモジュール - + Search 検索 - + Plugins プラグイン - + LFS LFS - + Edit Config File... 設定ファイルを編集... + + DateSelectionGroupWidget + + + Datetime source + + + + + Current + + + + + Manual + + + + + Original + + + DefaultWidget - + Clone repository リポジトリをクローン - + Open existing repository 既存のリポジトリを開く - + Open Repository リポジトリを開く - + Initialize new repository 新しいリポジトリを作成 - + Add %1 account %1 アカウントを追加 - View getting started videos - 解説動画を観る + 解説動画を観る - + Contact us for support サポートに関するお問い合わせ @@ -950,47 +1117,47 @@ DeleteBranchDialog - + Are you sure you want to delete local branch '%1'? ローカルブランチ '%1' を削除しますか? - + Delete Branch? ブランチを削除しますか? - + Also delete the upstream branch from its remote リモートの上流ブランチも削除 - + Delete 削除 - + delete '%1' from '%2' '%2' から '%1' を削除 - + Push プッシュ - + Push canceled. プッシュをキャンセルしました。 - + Unable to push to %1 - %2 %1 にプッシュできませんでした - %2 - + The branch is not fully merged. Deleting it may cause some commits to be lost. ブランチが完全にマージされていません。このまま削除すると、一部のコミットが失われる可能性があります。 @@ -998,56 +1165,81 @@ DeleteTagDialog - + Are you sure you want to delete tag '%1'? タグ '%1' を削除しますか? - + Delete Tag? タグを削除しますか? - + Also delete the upstream tag from %1 %1 の上流タグも削除 - + Delete 削除 - + delete '%1' from '%2' '%2' から '%1' を削除 - + Push プッシュ - + Push canceled. プッシュをキャンセルしました。 - + Unable to push to %1 - %2 %1 にプッシュできませんでした - %2 - + Delete Tag タグを削除 - + delete tag タグを削除 + + DetailView + + + + Author: + 作者: + + + + reset + リセット + + + + Here you can set the author used for committing +These settings will not be saved permanently + + + + + Email: + E メール: + + DiffPanel @@ -1081,17 +1273,17 @@ 追加されたファイル - + Deleted files 削除されたファイル - + Whitespace: 空白: - + Auto Collapse: 自動折り畳み: @@ -1099,43 +1291,89 @@ DiffTool - + External Diff 外部差分ツール + + DiffTreeModel + + + Submodule + サブモジュール + + DiffView - + Add new file 新しいファイルを追加 - + Or drag files here to copy into the repository または、ここにファイルをドラッグして、リポジトリへコピーします + + DoubleTreeWidget + + + Blame + + + + + Show Blame Editor + + + + + Diff + 差分 + + + + Show Diff View + 差分ビューを表示 + + + + Single Tree View + + + + + List View + + + + + Hide Untracked Files + + + DownloadDialog - + Update %1 %1 を更新 - + Downloading %1... %1 をダウンロードしています... - + Download Complete! ダウンロードが完了しました! - + Install and Restart インストールと再起動を行う @@ -1143,17 +1381,17 @@ EditButton - + Edit Working Copy - + Edit New Revision - + Edit Old Revision @@ -1161,7 +1399,7 @@ EditTool - + Edit in External Editor 外部エディターで編集 @@ -1169,47 +1407,47 @@ EditorPanel - + Tabs タブ - + Spaces スペース - + Show heat map ヒートマップを表示 - + Font: フォント: - + Font size: フォントの大きさ: - + Indent using: インデント文字: - + Indent width: インデントの幅: - + Tab width: タブの幅: - + Blame margin: 執筆者の履歴: @@ -1217,12 +1455,12 @@ EditorWindow - + '%1' has been modified. Do you want to save your changes? '%1' は変更されています。保存しますか? - + Save Changes? 変更を保存しますか? @@ -1230,22 +1468,22 @@ ExternalToolsDialog - + Configure External Tools 外部ツールの構成 - + Detected Tools 自動検出されたツール - + User Defined Tools ユーザーが定義したツール - + Select Executable 実行ファイルを選択 @@ -1253,17 +1491,17 @@ ExternalToolsModel - + Name 名前 - + Command コマンド - + Arguments 引数 @@ -1271,168 +1509,244 @@ FileContextMenu - + Revision Not Found リビジョンが見つかりませんでした - + The selected file doesn't have a %1 revision. 選択したファイルには%1のリビジョンがありません。 - + Bash Not Found Bash が見つかりませんでした - + Bash was not found on your PATH. Bash がどの PATH にも見つかりませんでした。 - + Bash is required to execute external tools. 外部ツールを起動するには Bash が必要です。 - + Stage ステージに上げる - + Unstage ステージから降ろす - - + + Discard Changes 変更を破棄 - + Discard Changes? 変更を破棄しますか? - + Are you sure you want to discard changes in the selected files? 選択したファイルへの変更を破棄しますか? - + This action cannot be undone. この操作は元に戻せません。 - + + (Submodule) + + + + %1 files %1 個のファイル - + Discard 破棄 - + discard 破棄 - + Remove Untracked Files 未追跡のファイルを削除 - + Ignore 無視 - + Checkout チェックアウト - + Unlock ロック解除 - + Lock ロック - + Copy File Name ファイル名をコピー - + Filter History 履歴を絞り込む - + Navigate to ジャンプ - + Next Revision 次のリビジョン - + next - + Previous Revision 前のリビジョン - + previous - + Unset Executable 実行可能を解除 - + Set Executable 実行可能に設定 - + + Save Selected Version as ... + + + + + Select new file directory + + + + + Saving files + + + + + Saving files of selected version to disk + + + + + Save file + + + + + Invalid Blob + + + + + Open this version + + + + + Opening file + + + + + Open + + + + + open file + + + + + Blob is invalid. + + + + + + Unable to checkout bare repositories + + + + + Unable to open files from bare repository + + + + + The file is already in the current working directory + + + + edit 編集 - + diff 差分 - + merge マージ - + External Tool Not Found 外部ツールが見つかりませんでした - + Failed to execute external %1 tool. 外部%1ツールの起動に失敗しました。 @@ -1440,190 +1754,174 @@ FileList - Sort By - 並べ替え順 + 並べ替え順 - Select - 選択 + 選択 - Name - 名前 + 名前 - Status - 状態 + 状態 - Ignore Whitespace (-w) - 空白を無視 (-w) + 空白を無視 (-w) - Added - 追加された部分 + 追加された部分 - Deleted - 削除された部分 + 削除された部分 - Modified - 変更された部分 + 変更された部分 - Renamed - リネームされた部分 + リネームされた部分 - Copied - コピーされた部分 + コピーされた部分 - Ignored - 無視された部分 + 無視された部分 - Untracked - 未追跡の部分 + 未追跡の部分 - Unreadable - 読み取りできない部分 + 読み取りできない部分 - Conflicted - 衝突している部分 + 衝突している部分 - Unmodified - 未変更の部分 + 未変更の部分 - Type Change - 種類が変更された部分 + 種類が変更された部分 FileWidget - + LFS LFS - - + + Unlock ロック解除 - - + + Lock ロック - - + + Show Object オブジェクトを表示 - + Edit File ファイルを編集 - + Discard File ファイルを破棄 - + Directory ディレクトリ - + File ファイル - + Remove %1? %1を削除しますか? - + Discard Changes? 変更を破棄しますか? - + Are you sure you want to remove '%1'? '%1' を削除しますか? - + Are you sure you want to discard all changes in '%1'? '%1' への全ての変更を破棄しますか? - + This action cannot be undone. この操作は元に戻せません。 - + Remove %1 %1を削除 - + Discard Changes 変更を破棄 - + Discard 破棄 - + discard 破棄 - - + + Collapse File ファイルを折り畳む - - + + Expand File ファイルを広げる - + Show Pointer ポインターを表示 @@ -1631,32 +1929,32 @@ FindWidget - + Search 検索 - + Done 完了 - + Esc Esc - + Not found 見つかりませんでした - + %1 match %1 件の一致 - + %1 matches %1 件の一致 @@ -1664,116 +1962,130 @@ GeneralPanel - - + + Fetch every 毎回 - - + + minutes 分おきにフェッチ - - + + Push after each commit 各コミット直後にプッシュを実行 - - Update submodules after pull - プル後にサブモジュールを更新 + プル後にサブモジュールを更新 - - + + Prune when fetching フェッチ時、既に存在しないブランチへの参照を解除 - + No translation 翻訳を無効化 - + Store credentials in secure storage 資格情報を安全なストレージに保管 - Allow collection of usage data - 使用状況の収集を許可 + 使用状況の収集を許可 - + + + Update submodules after pull and clone + + + + <a href='view'>View privacy policy</a> <a href='view'>プライバシーポリシーについて</a> - - + + User name: ユーザー名: - - + + User email: ユーザーの E メール: - - + + Automatic actions: 自動アクション: - + + Language: 言語: - + Credentials: 資格情報: - + + Credential store type: + + + + + Only allow a single running instance + + + + + Single instance: + + + Usage reporting: - 使用状況の送信: + 使用状況の送信: GitHub - Connection failed - 接続失敗 + 接続失敗 - Failed to authenticate with GitHub! - GitHub への認証に失敗しました! + GitHub への認証に失敗しました! - Successfully authenticated with GitHub! - GitHub への認証に成功しました! + GitHub への認証に成功しました! GitLab - Connection failed - 接続失敗 + 接続失敗 - + Authentication failed 認証失敗 @@ -1781,7 +2093,7 @@ Header - + Filter %1 %1を絞り込む @@ -1789,114 +2101,183 @@ HostModel - + Connecting 接続しています + + HotkeyModel + + + Action + + + + + Keys + + + HunkWidget - + + Save 保存 - + + Undo 元に戻す - + + Use Ours 手元のものを使う - + + Use Theirs 向こうのものを使う - + Edit Hunk 差分を編集 - - + Discard Hunk 差分を破棄 - - Discard Hunk? - 差分を破棄しますか? + + Discard selected lines? + - + + Are you sure you want to discard the changes in hunk from line %1 to %2 in '%3'? + + + + + Discard selected lines + + + + Discard Hunk? + 差分を破棄しますか? + + + Are you sure you want to remove '%1'? '%1' を削除しますか? - Are you sure you want to discard the hunk starting at line %1 in '%2'? - '%2' の差分内容 (開始行 %1) を破棄しますか? + '%2' の差分内容 (開始行 %1) を破棄しますか? - + This action cannot be undone. この操作は元に戻せません。 - - + + Collapse Hunk 差分内容を折り畳む - - + + Expand Hunk 差分内容を広げる - + Esc Esc - + Fix 修正 - + Edit 編集 - + No newline at end of file ファイル終端に改行なし + + IgnoreDialog + + + Ignore Pattern + + + Images - + <b>Size:</b> %1 <b>容量:</b> %1 + + InfoBox + + + Name: + 名前: + + + + Email: + E メール: + + + + Commit date: + + + + + KeybindDialog + + + The selected key is the same for the following actions: +%1 + + + + + Please press the desired hotkey + + + LfsPanel - + Initialize LFS LFS を初期化 - + Specify a glob pattern for tracking large files. Generally, large files are greater than 500kB, change frequently, @@ -1922,100 +2303,110 @@ Examples - + Pattern: パターン: - + Track 追跡 - + days - + Fetch LFS objects from all references for the past 特定の期間内に参照された LFS オブジェクトを全てフェッチ - + reference days or 日以内に参照されたブランチ、或いは - + commit days 日以内に行われたコミット全て - + View Environment 環境を表示 - + git-lfs env (read only) git-lfs env (読み取り専用) - + Deinitialize LFS LFS を解除 - + Deinitialize LFS? LFS を解除しますか? - + Are you sure you want uninstall LFS from this repository? リポジトリから LFS を解除しますか? - + Deinitialize 解除 - + Server URL: サーバーの URL: - + Prune Offset: 保管日数: - + Fetch Recent: フェッチの日数設定: - + Advanced: 詳細設定: + + + Included patterns: + + + + + Excluded patterns: + + Location - + %1 | %2 %1 | %2 - + NC 未コミット - + Not Committed コミットされていません @@ -2023,57 +2414,57 @@ Examples LocationPage - + Repository Location リポジトリの場所 - + Choose the name and location of the new repository. A new directory will be created if it doesn't already exist. 新しいリポジトリの名前と場所を選択してください。ディレクトリが存在しない場合は、新しく作成されます。 - + Initialize 作成 - + Clone クローン - + ... ... - + Choose Directory ディレクトリを選択 - + Name: 名前: - + Directory: ディレクトリ: - + Advanced: 詳細設定: - + Create a bare repository ベアリポジトリを作成 - + The new repository will be created at:<p style='text-indent: 12px'><b>%1</b></p> 新しいリポジトリは <p style='text-indent: 12px'><b>%1</b></p> に作成されます @@ -2081,7 +2472,7 @@ Examples LogView - + Copy コピー @@ -2089,59 +2480,59 @@ Examples MainWindow - + Invalid Git Repository 無効な Git リポジトリ - + %1 does not contain a valid git repository. %1 には有効な Git リポジトリが含まれていません。 - - + + %1 - %2 %1 - %2 - + ahead: %1 手元のブランチに %1 コミット済み - + behind: %1 向こうのブランチに新しく %1 コミットあり - + up-to-date 最新 - - + + %1 (%2) %1 (%2) - + MERGING マージ作業中 - + REVERTING コミットの取り消し作業中 - + CHERRY-PICKING コミットの取り込み作業中 - + REBASING リベース作業中 @@ -2149,575 +2540,583 @@ Examples MenuBar - + File ファイル - + New File 新しいファイル - + New Window 新しいウィンドウ - Ctrl+Meta+N - Ctrl+Meta+N + Ctrl+Meta+N - + Clone Repository... リポジトリをクローン... - Ctrl+Shift+N - Ctrl+Shift+N + Ctrl+Shift+N - + Initialize New Repository... 新しいリポジトリを作成... - Ctrl+Alt+N - Ctrl+Alt+N + Ctrl+Alt+N - + Open Repository... リポジトリを開く... - + Open Repository リポジトリを開く - + Open Recent 最近使ったリポジトリを開く - + Close 閉じる - + Save 保存 - + Exit 終了 - + Edit 編集 - + Undo 元に戻す - + Redo やり直す - + Cut 切り取り - + Copy コピー - + Paste 貼り付け - + Select All 全て選択 - + Find... 検索... - + Find Next 次を検索 - + Find Previous 前を検索 - + Use Selection for Find 選択したテキストで検索 - - Ctrl+E - Ctrl+E + + Show Double Tree View + - + Ctrl+E + Ctrl+E + + + View 表示 - + Refresh 再読み込み - - + + Show Log ログを表示 - - + + Normal + + + + + Maximize + + + + + Show Tree View ツリービューを表示 - + + Hide Menu Bar + + + + Repository リポジトリ - + Configure Repository... リポジトリの設定... - + Stage All 全てステージに上げる - Ctrl++ - Ctrl++ + Ctrl++ - + Unstage All 全てステージから降ろす - Ctrl+- - Ctrl+- + Ctrl+- - + Commit コミット - Ctrl+Shift+C - Ctrl+Shift+C + Ctrl+Shift+C - + Amend Commit 最後のコミットを修正 - - Ctrl+Shift+A - Ctrl+Shift+A + Ctrl+Shift+A - + Git LFS Git LFS - + Remove all locks 全てのロックを解除 - + Initialize 初期化 - + Remote リモート - + Configure Remotes... リモートの設定... - + Fetch フェッチ - Ctrl+Shift+Alt+F - Ctrl+Shift+Alt+F + Ctrl+Shift+Alt+F - + Fetch All 全てフェッチ - Ctrl+Shift+Alt+A - Ctrl+Shift+Alt+A + Ctrl+Shift+Alt+A - + Fetch From... 指定先からフェッチ... - Ctrl+Shift+F - Ctrl+Shift+F + Ctrl+Shift+F - + Pull プル - Ctrl+Shift+Alt+L - Ctrl+Shift+Alt+L + Ctrl+Shift+Alt+L - + Pull From... 指定先からプル... - Ctrl+Shift+L - Ctrl+Shift+L + Ctrl+Shift+L - + Push プッシュ - Ctrl+Shift+Alt+P - Ctrl+Shift+Alt+P + Ctrl+Shift+Alt+P - + Push To... 指定先へプッシュ... - Ctrl+Shift+P - Ctrl+Shift+P + Ctrl+Shift+P - + Branch ブランチ - + Configure Branches... ブランチの設定... - + New Branch... 新しいブランチ... - + + Rename Branch + + + + Checkout Current 選択中のブランチをチェックアウト - Ctrl+Shift+Alt+H - Ctrl+Shift+Alt+H + Ctrl+Shift+Alt+H - + Checkout... チェックアウト... - Ctrl+Shift+H - Ctrl+Shift+H + Ctrl+Shift+H - + Merge... マージ... - Ctrl+Shift+M - Ctrl+Shift+M + Ctrl+Shift+M - + Rebase... リベース... - Ctrl+Shift+R - Ctrl+Shift+R + Ctrl+Shift+R - + Squash... スカッシュ... - Ctrl+Shift+Q - Ctrl+Shift+Q + Ctrl+Shift+Q - + Abort Merge マージを中断 - + Submodule サブモジュール - + Configure Submodules... サブモジュールの設定... - + Update All 全て更新 - Ctrl+Shift+Alt+U - Ctrl+Shift+Alt+U + Ctrl+Shift+Alt+U - + Update... 更新... - Ctrl+Shift+U - Ctrl+Shift+U + Ctrl+Shift+U - + Open 開く - + Stash スタッシュ - + Show Stashes スタッシュを表示 - + Stash... スタッシュへ預ける... - Ctrl+Shift+T - Ctrl+Shift+T + Ctrl+Shift+T - + Pop Stash スタッシュから引き出す - Ctrl+Shift+Alt+T - Ctrl+Shift+Alt+T + Ctrl+Shift+Alt+T - + History 履歴 - + Back 戻る - + Forward 進む - + Window ウィンドウ - + Show Previous Tab 前のタブを表示 - + Show Next Tab 次のタブを表示 - + Show Repository Chooser... リポジトリ選択画面を表示... - Ctrl+Shift+O - Ctrl+Shift+O + Ctrl+Shift+O - + Tools ツール - + Options... オプション... - + Help ヘルプ - + About %1 %1 について - + Check For Updates... 新しいバージョンを確認... - + Plugin Documentation... プラグインについてのドキュメント... - + + Support us via Liberapay + + + + Debug デバッグ - + Abort 中断 - + Log Indexer Progress インデックス構築状況のログを取る - + Log Credential Helper 資格情報ヘルパーのログを取る - + Log Remote Connection リモート接続のログを取る - + + Log Debug Messages + + + + Load All Diffs 全ての差分を読み込む - + Walk Commits コミットを走査 - + Hide Log ログを隠す - Show Diff View - 差分ビューを表示 + 差分ビューを表示 - + Merge マージ - + Revert 取り消し - + Cherry-pick 取り込み - + Rebase リベース - + Abort %1 %1を中断 @@ -2725,60 +3124,60 @@ Examples MergeDialog - - + + Merge マージ - - + + Rebase リベース - - + + Squash スカッシュ - + Merge (No Fast-forward) マージ (高速転送しない) - + Merge (Fast-forward Only) マージ (高速転送のみ) - + No commit コミットしない - + Reference: 参照先: - + Action: アクション: - + Choose a reference to merge into '%1'. '%1' へマージする参照先を指定してください。 - + Choose a reference to rebase '%1' on. '%1' をリベースする参照先を指定してください。 - + Choose a reference to squash into '%1'. '%1' へスカッシュする参照先を指定してください。 @@ -2786,7 +3185,7 @@ Examples MergeTool - + External Merge 外部マージツール @@ -2794,12 +3193,12 @@ Examples MiscPanel - + Path to SSH config file: SSH 構成ファイルへのパス: - + Path to default / fallback SSH key file: 既定 / フォールバックの SSH 鍵ファイルへのパス: @@ -2807,32 +3206,32 @@ Examples NewBranchDialog - + Checkout branch ブランチをチェックアウト - + Name: 名前: - + Start Point: 開始地点: - + Advanced: 詳細設定: - + Upstream: 上流: - + Create Branch ブランチを作成 @@ -2840,7 +3239,7 @@ Examples PathspecWidget - + Filter by Path パスで絞り込む @@ -2848,42 +3247,42 @@ Examples PluginsPanel - + Name 名前 - + Kind 部類 - + Description 説明 - + Options オプション - + %1 Options %1 のオプション - + Note 注意 - + Warning 警告 - + Error エラー @@ -2891,7 +3290,7 @@ Examples Popup - + Show Advanced Search 高度な検索を表示 @@ -2899,12 +3298,12 @@ Examples PreviewWidget - + Added 追加されたリビジョン - + Modified 変更されたリビジョン @@ -2912,7 +3311,7 @@ Examples PullRequestButton - + Create Pull Request プルリクエストを作成 @@ -2920,55 +3319,117 @@ Examples PullRequestDialog - + Create Pull Request プルリクエストを作成 - + Title タイトル - + Body 本文 - + Maintainer can modify メンテナーによる編集を許可 - + From: 要求元: - + owner/repository オーナー / リポジトリ - + branch ブランチ - + To: 統合先: - + Create 作成 + + QObject + + + Expand all + + + + + Collapse all + + + + + Staged Files + + + + + Unstaged Files + + + + + Committed Files + + + + + Workdir Files + + + + + Your global GIT configuration is invalid, Gittyup won't run properly until this is fixed + + + + + RebaseConflictDialog + + + Rebase conflict + + + + + Abort rebase + + + + + Continue + + + + + The rebase caused a merge conflict. +Would you like to fix the merge conflict and continue? + + + Reference - + HEAD detached at %1 リビジョン %1 で作業中 @@ -2976,7 +3437,7 @@ Examples ReferenceList - + Commit コミット @@ -2984,17 +3445,17 @@ Examples ReferenceModel - + Branches ブランチ - + Remotes リモート - + Tags タグ @@ -3002,57 +3463,57 @@ Examples ReferenceView - + Branch ブランチ - + Remote リモート - + Tag タグ - + Checkout チェックアウト - + Rename 名前を変更 - + Delete 削除 - + Push Tag to %1 タグを %1 へプッシュ - + New Local Branch 新しいローカルブランチ - + Merge... マージ... - + Rebase... リベース... - + Squash... スカッシュ... @@ -3060,7 +3521,7 @@ Examples RefreshButton - + Refresh 再読み込み @@ -3068,7 +3529,7 @@ Examples RemoteButton - + 999+ 999+ @@ -3076,58 +3537,59 @@ Examples RemoteCallbacks - + remote: %1 リモート: %1 - + failed to execute pre-push hook: bash not found プッシュ前フックの実行に失敗しました: Bash が見つかりません - + failed to execute pre-push hook: %1 プッシュ前フックの実行に失敗しました: %1 - + HTTPS Credentials HTTPS の資格情報 - + SSH Passphrase SSH のパスフレーズ - + Username: ユーザー名: - + Password: パスワード: - + Passphrase: パスフレーズ: - + + authentication canceled 認証をキャンセルしました - + From %1 %1 から - - + + To %1 %1 へ @@ -3135,47 +3597,47 @@ Examples RemoteDialog - + Push all tags 全てのタグをプッシュ - + Update existing tags 既存のタグを更新 - + Merge マージ - + Rebase リベース - + Merge (No Fast-forward) マージ (高速転送しない) - + Merge (Fast-forward Only) マージ (高速転送のみ) - + Set upstream 上流を設定 - + Force 強制 - + Remote Reference: リモートの参照先: @@ -3223,42 +3685,42 @@ Examples RemotePage - + Remote Repository URL リモートリポジトリの URL - + Choose protocol to authenticate with the remote. リモートへの認証に使うプロトコルを指定します。 - + Enter the URL of the remote repository or browse for a local directory リモートリポジトリの URL を入力するか、ローカルディレクトリを参照します - + ... ... - + Choose Directory ディレクトリを選択 - + Examples of valid URLs include:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> 有効な URL の例:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>ローカル</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> - + Protocol: プロトコル: - + URL: URL: @@ -3266,12 +3728,12 @@ Examples RemoteTableModel - + Name 名前 - + URL URL @@ -3279,61 +3741,74 @@ Examples RemotesPanel - + Delete Remote? リモートを削除しますか? - + Are you sure you want to delete '%1'? '%1' を削除しますか? - + Delete 削除 + + RenameBranchDialog + + + Name: + 名前: + + + + Rename Branch + + + RepoModel - + Connecting 接続しています - + open 開く - + recent 最近使ったリポジトリ - + remote リモート - - + + none なし - + Clone Repository リポジトリをクローン - + Open Existing Repository 既存のリポジトリを開く - + Initialize New Repository 新しいリポジトリを作成 @@ -3341,130 +3816,161 @@ Examples RepoView - + Indexing... インデックスを構築しています... - + Search 検索 - The indexer worker process crashed. If this problem persists please contact us at support@gitahead.com. - インデックスを構築する作業プロセスがクラッシュしました。問題が立て続けに起こる場合は、support@gitahead.com へ報告をお願いします。 + インデックスを構築する作業プロセスがクラッシュしました。問題が立て続けに起こる場合は、support@gitahead.com へ報告をお願いします。 - + Indexer Crashed インデクサーがクラッシュしました - + Stage Directory? ディレクトリをステージに上げますか? - + Are you sure you want to stage '%1'? '%1' をステージに上げますか? - + This will result in the addition of %1 files. %1 個のファイルが追加されます。 - + more than 100 100+ - + Stage Directory ディレクトリをステージに上げる - + Stop prompting to stage directories ディレクトリのステージについて質問しない - + Stage Large File? 大きなファイルをステージに上げますか? - + Are you sure you want to stage '%1' with a size of %2? '%1' (容量 %2) をステージに上げますか? - + Stage ステージに上げる - + Track with LFS LFS で追跡 - + This repository has LFS enabled. Do you want to track the file with LFS instead? このリポジトリは LFS を使用しています。ファイルを代わりに LFS で追跡させますか? - + Stop prompting to stage large files 大きなファイルのステージについて質問しない - + Esc Esc - + stage - + Git LFS was not found on the PATH. <a href='https://git-lfs.github.com'>Install Git LFS</a> to use LFS integration. Git LFS がどの PATH にも見つかりませんでした。LFS 統合機能を使うには、<a href='https://git-lfs.github.com'>Git LFS をインストール</a>してください。 - + untracked file 未追跡のファイル - + untracked files 未追跡のファイル - + Remove Untracked Files 未追跡のファイルを削除 - + Remove %1 %2? %2 %1 個を削除しますか? - + This action cannot be undone. この操作は元に戻せません。 - + Remove 削除 + + + + Certificate Error + + + + + SSL verification disabled for this repository + + + + + [http] + sslVerify = false + +was added to %1/config + + + + + SSL verification disabled for all git repositories + + + + + [http] + sslVerify = false + +was added to %1 + + Pull Request @@ -3481,297 +3987,314 @@ Examples プルリクエストを作成 - - - + + + Git LFS Git LFS - + Initialize 初期化 - + initialize - + Git LFS initialized. Git LFS を初期化しました。 - + Deinitialize 解除 - + deinitialize - + Git LFS Deinitialized. Git LFS を解除しました。 - + Lock ロック - + Unlock ロック解除 - - + + Unable to %1 '%2' - %3 %1できませんでした: '%2' - %3 - + Unable to %1 - %2 %1できませんでした - %2 - + %1 remotes %1 個のリモート - + Fetch All 全てフェッチ - + Fetch フェッチ - - - + + + <i>no remote</i> <i>リモートなし</i> - + Unable to fetch. No upstream is configured for the current branch, and there isn't a remote called 'origin'. フェッチできませんでした。現在のブランチに上流が設定されておらず、'origin' というリモートもありません。 - - + + Fetch canceled. フェッチをキャンセルしました。 - + fetch from リモートからフェッチ - + + You may disable ssl verification <a href='action:sslverifyrepo'>for this repository</a> or overall disable ssl verification <a href='action:sslverifygit'>for all repositories</a>. + + + + - + Everything up-to-date. 全て最新です。 - - - + + + <i>no branch</i> <i>ブランチなし</i> - + %1 from %2 %2 から %1 へ - + Pull プル - + <i>no upstream</i> <i>上流なし</i> - + Merge マージ - + %1 into %2 %1 を %2 へ - + Fast-forward 高速転送 - + %2 to %1 %2 を %1 へ - + + Rebase リベース - + %2 on %1 %2 を %1 で - + The repository is empty. リポジトリが空です。 - + The current branch '%1' has no upstream branch. 現在のブランチ '%1' には上流のブランチがありません。 - - + + Already up-to-date. 既に最新です。 - + Unable to fast-forward. 高速転送できませんでした。 - + fast-forward 高速転送 - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='%1'>fast-forward</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. <a href='%1'>高速転送</a>する前に<a href='action:stash'>スタッシュへ預ける</a>ことで、衝突したファイルへの変更を調整できるかもしれません。今までに行った変更は、後で<a href='action:unstash'>スタッシュから引き出して</a>復元できます。 - + If you want to create a new merge commit instead of fast-forwarding, you can <a href='%1'>merge without fast-forwarding </a> instead. 新しいマージコミットを、高速転送せずに作成したい場合は、代わりに<a href='%1'>マージ (高速転送しない)</a>を使用できます。 - - - - + + + + merge マージ - - + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:merge'>merge</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. <a href='action:merge'>マージ</a>する前に<a href='action:stash'>スタッシュへ預ける</a>ことで、リベースできるかもしれません。今までに行った変更は、後で<a href='action:unstash'>スタッシュから引き出して</a>復元できます。 - - + + + Abort 中断 - + Some merged files have unstaged changes マージしたファイルのいくつかの変更が、まだステージに上がっていません - + abort merge マージを中断 - - - + + + revert 取り消し - - - + + + cherry-pick 取り込み - - - + + + rebase リベース - + + Continue ongoing rebase + + + + + Invalid head. + + + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:rebase'>rebase</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. <a href='action:rebase'>リベース</a>する前に<a href='action:stash'>スタッシュへ預ける</a>ことで、リベースできるかもしれません。今までに行った変更は、後で<a href='action:unstash'>スタッシュから引き出して</a>復元できます。 - + + %1/%2 %1/%2 - + %1 - %2 %1 - %2 - + Apply 適用 - There was a merge conflict. The rebase has been aborted - マージに衝突があります。リベースを中断しました + マージに衝突があります。リベースを中断しました - + %1 - %2 <i>already applied</i> %1 - %2 <i>既に適用されています</i> - + %1 - %2 as %3 %1 - %2 を %3 として - - - + + + squash スカッシュ - + Revert 取り消し - + Revert "%1" This reverts commit %2. @@ -3780,457 +4303,527 @@ This reverts commit %2. コミット %2 を取り消しました。 - + <i>detached HEAD</i> <i>作業中のリビジョン</i> - + %1 on %2 %2 に %1 を - + Cherry-pick 取り込み - Force Push? - 強制プッシュしますか? + 強制プッシュしますか? - + Are you sure you want to force push? 強制的にプッシュしますか? - + The remote will lose any commits that are reachable only from the overwritten reference. Dropped commits may be unexpectedly reintroduced by clones that already contain those commits locally. 上書きされた参照からでしか辿ることのできないコミットは、リモート上で一切利用できなくなります。また、ここでコミットを削除したとしても、クローンされた他のリポジトリにはコミットが残っているかもしれないため、不意に再度混入することもあり得ます。 - + Force Push 強制プッシュ - + <i>no reference</i> <i>参照なし</i> - + Push プッシュ - + Push (Force) プッシュ (強制) - - + + %1 to %2 %1 を %2 へ - - + + You are not currently on a branch. 現在どのブランチも選択されていません。 - + Create a commit to add the default '%1' branch. 既定のブランチ '%1' を追加するには、コミットを作成します。 - + You can <a href='action:checkout'>checkout</a> a branch then <a href='action:push'>push</a> again, or <a href='action:push-to'>push to an explicit branch</a>. ブランチを<a href='action:checkout'>チェックアウト</a>した後に、再度<a href='action:push'>プッシュ</a>できます。また、<a href='action:push-to'>明示的なブランチへプッシュ</a>することもできます。 - + The current branch '%1' has no default remote. 現在のブランチ '%1' には既定のリモートがありません。 - + You may want to <a href='action:add-remote?name=origin'>add a remote named 'origin'</a>. Then <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a> to begin tracking a remote branch called 'origin/%1'. <a href='action:add-remote?name=origin'>'origin' という名前のリモートを追加</a>して、<a href='action:push?set-upstream=true'>現在のブランチをプッシュ、上流を設定</a>することにより、リモートブランチ 'origin/%1' の追跡を開始できます。 - + You can also <a href='action:push-to'>push to an explicit URL</a> if you don't want to track a remote branch. また、<a href='action:push-to'>明示的な URL へプッシュ</a>して、リモートブランチを追跡しないようにもできます。 - + To begin tracking a remote branch called '%1', <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a>. '%1' というリモートブランチの追跡を開始するには、<a href='action:push?set-upstream=true'>現在のブランチをプッシュ、上流を設定</a>します。 - + To push without setting up tracking information, <a href='action:push?ref=%1'>push '%2'</a> explicitly. 追跡情報を設定せずにプッシュするには、明示的に <a href='action:push?ref=%1'>'%2' をプッシュ</a>します。 - + Push canceled. プッシュをキャンセルしました。 - + push to リモートへプッシュ - + The tag update may cause the remote to lose commits. タグを更新すると、リモート上のコミットが失われるかもしれません。 - + If you want to risk the remote losing commits, you can <a href='action:push?ref=%1&to=%2&force=true'>force push</a>. リモート上のコミット損失を覚悟しているなら、<a href='action:push?ref=%1&to=%2&force=true'>強制プッシュ</a>できます。 - You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push'>push</a> again. - リモートのコミットをまず<a href='action:pull'>プル</a>で統合してから、再度<a href='action:push'>プッシュ</a>してください。 + リモートのコミットをまず<a href='action:pull'>プル</a>で統合してから、再度<a href='action:push'>プッシュ</a>してください。 - If you really want the remote to lose commits, you may be able to <a href='action:push?force=true'>force push</a>. - リモート上のコミットが損失しても問題ないなら、<a href='action:push?force=true'>強制プッシュ</a>できます。 + リモート上のコミットが損失しても問題ないなら、<a href='action:push?force=true'>強制プッシュ</a>できます。 - + Commit? コミットしますか? - + Are you sure you want to commit on a detached HEAD? 作業中のリビジョンへコミットしますか? - + <p>You are in a detached HEAD state. You can still commit, but the new commit will not be reachable from any branch. If you want to commit to an existing branch, checkout the branch first.</p> <p>現在、どのブランチにも所属していない状態です。如何なるブランチを辿っても、ここで行ったコミットには到達できません。既存のブランチにコミットしたい場合は、まずそのブランチをチェックアウトしてください。</p> - - + + Commit コミット - - + + <i>no commit</i> <i>コミットなし</i> - + commit コミット - + This commit was signed with a generated user name and email. このコミットは、自動生成されたユーザー名と E メールで署名されました。 - + Consider setting the user name and email in <a href='action:config?global=true'>global settings</a>. <a href='action:config?global=true'>グローバル設定</a>で、ユーザー名と E メールを設定することをおすすめします。 - + If you want to limit the name and email settings to this repository, <a href='action:config'>edit repository settings</a> instead. このリポジトリ固有のユーザー名と E メールを設定したい場合は、代わりに<a href='action:config'>リポジトリの設定を編集</a>します。 - + After settings have been updated, <a href='action:amend'> amend this commit</a> to record the new user name and email. 設定を更新したら、<a href='action:amend'>最後のコミットを修正</a>して、新しいユーザー名と E メールで記録し直します。 - + file ファイル - + files ファイル - + %1 - %2 %3 %1 - %2 個の%3 - - + + Checkout チェックアウト - + Checkout Detached HEAD? 独立したリビジョンとしてチェックアウトしますか? - + Checkout Detached HEAD 独立したリビジョンとしてチェックアウト - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to reset the existing local branch '%2' to this commit instead? リモートブランチ '%1' をチェックアウトすると、どのブランチにも所属しない状態となります。代わりに既存のローカルブランチ '%2' を、このコミットに合わせてリセットしますか? - + Reset Local Branch ローカルブランチをリセット - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to create a new local branch called '%2' to track it instead? リモートブランチ '%1' をチェックアウトすると、どのブランチにも所属しない状態となります。代わりに新しい '%2' というローカルブランチを作成・追跡しますか? - + Create a local branch to start tracking remote changes and make new commits. Check out the detached HEAD to temporarily put your working directory into the state of the remote branch. 新しいローカルブランチを作成すると、リモートの変更の追跡や、コミットなどの作業を開始できます。独立したリビジョンとしてチェックアウトすると、リモートブランチの状態を、一時的に作業ディレクトリへ展開します。 - + Create Local Branch ローカルブランチを作成 - + checkout チェックアウト - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='action:checkout?%1'>checkout '%2'</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. <a href='action:checkout?%1'>'%2' をチェックアウト</a>する前に<a href='action:stash'>スタッシュへ預ける</a>ことで、衝突したファイルへの変更を調整できるかもしれません。今までに行った変更は、後で<a href='action:unstash'>スタッシュから引き出して</a>復元できます。 - + New Branch 新しいブランチ - + create new branch 新しいブランチを作成 - + (no branch) (ブランチなし) - + WIP on %1: %2 %3 作業途中の %1: %2 %3 - + <i>working directory</i> <i>作業ディレクトリ</i> - + Stash スタッシュへ預ける - + stash スタッシュへ収納 - + Apply Stash スタッシュを適用 - + apply stash スタッシュを適用 - + Drop Stash スタッシュから削除 - + drop stash スタッシュから削除 - + Pop Stash スタッシュから引き出す - + pop stash スタッシュから引き出し - + %1 as %2 %1 を %2 として - + Tag タグ付け - + tag タグを追加 - - - + + Amend 修正 - - - + + Amending commit %1 + + + + + %1 to %2 + update ref + %1 を %2 へ + + + + + + + + Reset リセット - Amend? - 修正しますか? + 修正しますか? - Reset? - リセットしますか? + リセットしますか? - Are you sure you want to amend '%1'? - '%1' を修正しますか? + '%1' を修正しますか? - + Are you sure you want to reset '%1' to '%2'? '%1' を '%2' にリセットしますか? - + <p>Some commits may become unreachable from the current branch.</p> <p>現在のブランチからは、一部のコミットに辿り着けなくなるかもしれません。</p> - + <p>Resetting will cause you to lose uncommitted changes. Untracked and ignored files will not be affected.</p> <p>リセットすると、コミットされていない変更が失われます。未追跡のファイルや、無視されているファイルには影響しません。</p> - + <p>Your branch appears to be up-to-date with its upstream branch. Resetting may cause your branch history to diverge from the remote branch history.</p> <p>手元のブランチは既に、上流のブランチの最新版のようです。リセットすると、手元のブランチとリモートブランチとの履歴が分立するかもしれません。</p> - + + amend 修正 - + reset リセット - + + %1 of %2 submodules %1 / %2 個のサブモジュール - - + + Update 更新 - + + update submodule サブモジュールを更新 - + + The indexer worker process crashed. If this problem persists please contact us at <TODO: replace.support@gitahead.com>. + + + + + Please resolve conflicts before continue + + + + + Conflict + + + + + Rebase finished + + + + + Force Push to %1? + + + + + You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push?to=%1'>push</a> again. + + + + + If you really want the remote to lose commits, you may be able to <a href='action:push?to=%1&force=true'>force push</a>. + + + + + Reset canceled. + + + + + Untouched + + + + Invalid Submodule Repository 無効なサブモジュールのリポジトリ - + The submodule '%1' doesn't have a valid repository. You may need to init and/or update the submodule to check out a repository. サブモジュール '%1' には有効なリポジトリがありません。リポジトリをチェックアウトする前に、サブモジュールの初期化や更新が必要かもしれません。 - + + No terminal executable found + + + + + No terminal executable was found. Please configure a terminal in the configuration. + + + + + Open Configuration + + + + There was a merge conflict. マージする際に衝突がありました。 - + Resolve conflicts, then commit to conclude the %1. See <a href='expand'>details</a>. 衝突している部分を解決した後に、改めてコミットを行い、%1を確定させてください。詳細は<a href='expand'>こちら</a>。 - + Resolve conflicts in each conflicted (!) file in one of the following ways: これらの方法を使用して、衝突しているファイル (!) それぞれを解決できます: - + 1. Click the 'Ours' or 'Theirs' button to choose the correct change. Then click the 'Save' button to apply. 1. '手元のものを使う' か '向こうのものを使う' ボタンをクリックして、正しい変更を選びます。'保存' ボタンをクリックすると、選択を反映します。 - + 2. Edit the file in the editor to make a different change. Remember to remove conflict markers. 2. ファイルをエディターで開き、必要な修正を行います。衝突部分に付けられている印も、忘れずに取り除いてください。 - + 3. Use an external merge tool. Right-click on the files in the list and choose 'External Merge'. 3. 外部マージツールを使います。ファイル一覧の項目を右クリックし、'外部マージツール' を選びます。 - + After all conflicts in the file are resolved, click the check box to mark it as resolved. ファイルの衝突が全て解決できたら、チェックボックスをクリックし、解決済みとしてマークします。 - + After all conflicted files are staged, commit to conclude the %1. 衝突している全てのファイルをステージに上げたら、コミットを実行して%1を確定させます。 - + You can <a href='action:abort'>abort</a> the %1 to return the repository to its previous state. %1を<a href='action:abort'>中断</a>して、リポジトリを元の状態に戻すこともできます。 @@ -4238,12 +4831,12 @@ This reverts commit %2. Repository - + Unknown error 不明なエラー - + git-lfs not found git-lfs が見つかりませんでした @@ -4251,7 +4844,7 @@ This reverts commit %2. SearchField - + Search 検索 @@ -4259,32 +4852,32 @@ This reverts commit %2. SearchPanel - + Enable indexing インデックスを構築 - + terms - + lines - + Limit commits to: コミットの語句上限数: - + Diff context: 差分周辺の行数: - + Remove Index インデックスを削除 @@ -4292,32 +4885,32 @@ This reverts commit %2. Settings - + Prompt to edit stash message before stashing スタッシュへ預ける前に、スタッシュ内容の説明を編集するか尋ねる - + Prompt to edit commit message before merging マージする前に、コミットの説明を編集するか尋ねる - + Prompt to edit commit message before reverting コミットを取り消す前に、コミットの説明を編集するか尋ねる - + Prompt to edit commit message before cherry-picking コミットを取り込む前に、コミットの説明を編集するか尋ねる - + Prompt to stage directories ディレクトリをステージに上げる前に尋ねる - + Prompt to stage large files 大きなファイルをステージに上げる前に尋ねる @@ -4325,62 +4918,67 @@ This reverts commit %2. SettingsDialog - + Esc Esc - + Global git settings can be overridden for each repository in the corresponding repository configuration page. Git のグローバル設定は、各リポジトリの設定から上書きできます。 - + Edit Config File... 設定ファイルを編集... - + General 一般 - + Diff 差分 - + Tools ツール - + Window ウィンドウ - + Editor エディター - + Update 更新 - + Plugins プラグイン - + Misc その他 - + + Hotkeys + + + + Terminal 端末 @@ -4388,22 +4986,22 @@ This reverts commit %2. ShowTool - + Finder - + Explorer - + Default File Browser - + Show in %1 %1 に表示 @@ -4411,14 +5009,14 @@ This reverts commit %2. SideBar - + Close 閉じる - - + + Remove 削除 @@ -4443,57 +5041,57 @@ This reverts commit %2. リポジトリを開く - + Initialize New Repository 新しいリポジトリを作成 - + Add %1 Account %1 アカウントを追加 - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>リモートリポジトリ %1 への関連付けを解除しますか?</p><p>ローカルのクローンには影響しません。</p> - + Remove Repository Association? リポジトリへの関連付けを解除しますか? - + Clear All Recent 最近使ったリポジトリを消去 - + Show Full Path 完全なパスを表示 - + Filter Non-existent Paths 存在しないパスを除去 - + Refresh Remote Accounts リモートアカウントを再読み込み - + Show Full Name 完全な名前を表示 - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>%1 アカウント '%2' を削除しますか?</p><p>アカウントへの関連付けのみが解除されます。リモートの設定と、ローカルのクローンには影響しません。</p> - + Remove Account? アカウントを削除しますか? @@ -4501,108 +5099,108 @@ This reverts commit %2. StartDialog - + Choose Repository リポジトリを選択 - + Understand your history! Git の履歴を見やすく管理 - + Clone Repository リポジトリをクローン - + Open Existing Repository 既存のリポジトリを開く - + Open Repository リポジトリを開く - + Initialize New Repository 新しいリポジトリを作成 - + Clear All 全て消去 - + Show Full Path 完全なパスを表示 - + Filter Non-existent Paths 存在しないパスを除去 - + Repositories: リポジトリ: - + Refresh 再読み込み - + Show Full Name 完全な名前を表示 - + Remote: リモート: - + View Getting Started Video 解説動画を観る - + Clone クローン - + Open 開く - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>%1 アカウント '%2' を削除しますか?</p><p>アカウントへの関連付けのみが解除されます。リモートの設定と、ローカルのクローンには影響しません。</p> - + Remove Account? アカウントを削除しますか? - - + + Remove 削除 - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>リモートリポジトリ %1 への関連付けを解除しますか?</p><p>ローカルのクローンには影響しません。</p> - + Remove Repository Association? リポジトリへの関連付けを解除しますか? @@ -4610,7 +5208,7 @@ This reverts commit %2. SubmoduleTableModel - + Name 名前 @@ -4620,32 +5218,32 @@ This reverts commit %2. URL - + Branch ブランチ - + Initialized 初期化済み - + Deinitializing '%1' will remove its working directory. Are you sure you want to deinitialize? '%1' を解除すると、対応する作業ディレクトリが削除されます。よろしいですか? - + Deinitialize Submodule? サブモジュールを解除しますか? - + The submodule working directory contains uncommitted changes that will be lost if you continue. サブモジュールの作業ディレクトリに、コミットされていない変更があります。このまま続行すると、変更が全て失われます。 - + Deinitialize 解除 @@ -4679,31 +5277,107 @@ This reverts commit %2. 注釈を付ける - + Name 名前 + + TemplateDialog + + + Name + 名前 + + + + Content + + + + + + Add + + + + + use %1 to declare the position of the cursor. + + + + + use ${files:x} to add all updated file names, +x (number) determines the number of maximum files shown + + + + + Remove + 削除 + + + + Up + + + + + Down + + + + + Import + + + + + Export + + + + + Open File + + + + + + Gittyup Templates (*%1) + + + + + Save Templates + + + + + Replace + 置換 + + TerminalPanel - - + + Install インストール - + Name: 名前: - + Location: 場所: - + Uninstall アンインストール @@ -4711,32 +5385,32 @@ This reverts commit %2. TextEdit - + Replace... 置換... - + Replace All... 全て置換... - + Ignore 無視 - + Ignore All 全て無視 - + Add to User Dictionary ユーザー辞書に追加 - + Do not Ignore 無視しない @@ -4744,111 +5418,154 @@ This reverts commit %2. ThemeDialog - Native Theme - 通常のテーマ + 通常のテーマ - + A flexible look matching system colors システムの配色に合った、見やすいテーマ - + Dark Theme 暗いテーマ - + + Pick a theme for Gittyup + + + + + Default Theme + + + + + A consistent bright theme + + + + A consistent look optimal for reducing eye strain 目の疲れを軽減する、一貫性のあるテーマ + + + System Theme + + ToolBar - + Show repository sidebar リポジトリのサイドバーを表示 - + Previous - + Next - + Fetch フェッチ - + Pull プル - + Merge マージ - + Rebase リベース - + Push プッシュ - + Checkout チェックアウト - + Stash スタッシュへ預ける - + Pop Stash スタッシュから引き出す - + + Open Terminal + + + + + Open file manager + + + + Configure Settings 設定を変更 + + + Repository settings + + - + Application settings + + + + + Show Log ログを表示 - - Diff View - 差分ビュー + + Double Tree View + - + Diff View + 差分ビュー + + + Tree View ツリービュー - + Show Starred Commits スターを付けたコミットを表示 - + Hide Log ログを隠す @@ -4856,32 +5573,42 @@ This reverts commit %2. ToolsPanel - + Keep backup of merge files (.orig) マージファイルのバックアップを取る (.orig) - + External editor: 外部エディター: - + External diff: 外部差分ツール: - + External merge: 外部マージツール: - + Backup files: ファイルのバックアップ: - + + Terminal emulator command: + + + + + File manager command: + + + + Configure 設定 @@ -4889,20 +5616,77 @@ This reverts commit %2. TreeModel - + Submodule サブモジュール + + TreeView + + + Directory + ディレクトリ + + + + File + ファイル + + + + Remove or discard %1? + + + + + Are you sure you want to remove or discard all changes in '%1'? + + + + + This action cannot be undone. + この操作は元に戻せません。 + + + + + Discard + 破棄 + + + + discard + 破棄 + + + + TreeWidget + + + Search: + + + + + Regex + + + + + Case Sensitive + + + UpToDateDialog - + Already Up-to-date 既に最新です - + %1 is already up-to-date. You have version %2. 既に最新版 (バージョン %2) の %1 をお使いです。 @@ -4910,55 +5694,76 @@ This reverts commit %2. UpdateDialog - + Update %1 %1 を更新 - + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. The new version will be soon available in your package manager. Just update your system.</p><b>Release Notes:</b> + + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. Would you like to download it now?</p><b>Release Notes:</b> <h3>新しい %1 のバージョンが利用できます。</h3><p>%1 %2 を利用できます (現在 %3 をお使いです)。すぐにダウンロードしますか?</p><b>新機能と変更点:</b> - + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3.</p><p>If you downloaded the flatpak package over a package manager or from flathub.org <br/>you don't have to install manually a new version. It will be available within the next <br/>days during your system update: <code>flatpak update</code></p><b>Release Notes:</b> + + + + Automatically download and install updates 自動的に更新のダウンロードとインストールを行う - + Install Update 更新をインストール - + Remind Me Later 後で通知 - + Skip This Version このバージョンは無視 + + + Ok + + + + + Donate + + UpdatePanel - + Check for updates automatically 自動的に更新を確認 - + Automatically download and install updates 自動的に更新のダウンロードとインストールを行う - + Check Now 今すぐ確認 - + Software Update: ソフトウェアの更新: @@ -4966,17 +5771,17 @@ This reverts commit %2. UpdateSubmodulesDialog - + Recursive 再帰的 - + Init 初期化 - + Update 更新 @@ -4984,7 +5789,7 @@ This reverts commit %2. Updater - + Installer failed to start インストーラーの開始に失敗しました @@ -5005,47 +5810,53 @@ This reverts commit %2. - + + Helper application failed to start 補助アプリケーションの開始に失敗しました - + Update Failed 更新に失敗しました - + Unable to check for updates 更新を確認できませんでした - + Unable to download update 更新をダウンロードできませんでした - + Unable to open temporary file 一時ファイルを開けませんでした - + Unable to install update 更新をインストールできませんでした - - Some windows failed to close - 一部のウィンドウを閉じられませんでした + + Some windows failed to close. You can download the binary manually from %1 + - + Some windows failed to close + 一部のウィンドウを閉じられませんでした + + + Unknown install error 不明なインストールエラー - + + Installer script failed: %1 インストーラーのスクリプトが失敗しました: %1 @@ -5053,94 +5864,139 @@ This reverts commit %2. WindowPanel - + Add New Theme 新しいテーマを追加 - + Edit Current Theme 現在のテーマを編集 - + Create Theme テーマを作成 - + Theme Name テーマ名 - + Restart? 再起動しますか? - + The application must be restarted for the theme change to take effect. テーマの変更を適用するには、アプリケーションを再起動する必要があります。 - + Do you want to restart now? 今すぐ再起動しますか? - + Restart 再起動 - + Later 後で - + Show full repository path リポジトリの完全なパスを表示 - + Hide automatically 自動的に隠す - + Open submodules in tabs サブモジュールをタブに開く - + Open all repositories in tabs 全てのリポジトリをタブに開く - + + Hide Menubar + + + + + Show Avatars + + + + Theme: テーマ: - + Title: タイトル: - + Log: ログ: - + Tabs: タブ: - + + View: + + + + Prompt: 質問: + + _FileWidget::Header + + + + Use Theirs: Delete + + + + + + Use Ours: Delete + + + + + both: %1 + + + + + ours: %1 + + + + + theirs: %1 + + + diff --git a/l10n/gittyup_pt.ts b/l10n/gittyup_pt.ts index 388d8cee..24d80f0b 100644 --- a/l10n/gittyup_pt.ts +++ b/l10n/gittyup_pt.ts @@ -4,55 +4,63 @@ AboutDialog - + About %1 Acerca do %1 - + Understand your history! Compreender o seu histórico! - + Changelog Diário de alterações - + Acknowledgments Agradecimentos - + Privacy Privacidade - Usage reporting has been disabled. Restart the application for changes to take effect. - Relatório de utilização desactivado. Reinicie a aplicação para aplicar as alterações. + Relatório de utilização desactivado. Reinicie a aplicação para aplicar as alterações. - Usage Reporting Disabled - Relatório de utilização desactivado + Relatório de utilização desactivado Account - + + Connection failed + + + + <b>Note:</b> Basic authentication is not supported if you have two-factor authentication enabled. Use a <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>personal access token</a> in the password field instead. <b>Nota:</b> A autenticação básica não é suportada se tiver activada a autenticação em dois passos. Use antes um <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>símbolo de autenticaçao pessoal</a> no campo da senha. - + + <b>Note:</b> Only Basic authentication is currently supported + + + + <b>Note:</b> Basic authentication is not supported. Use a <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>personal access token</a> in the password field instead. <b>Nota:</b> A autenticação básica não é suportada. Use antes um <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>símbolo de autenticaçao pessoal</a> no campo da senha. - + Authentication failed Falha ao autenticar @@ -60,7 +68,7 @@ AccountDialog - + Add Remote Account Adicionar conta remota @@ -90,32 +98,32 @@ URL: - + Replace? Substituir? - + An account of this type already exists. Já existe uma conta deste tipo. - + Would you like to replace the previous account? Deseja substituir a conta anterior? - + Replace Substituir - + Cancel Cancelar - + Connection Failed A ligação falhou @@ -123,18 +131,18 @@ AddRemoteDialog - - + + Add Remote Adicionar remoto - + Name: Nome: - + URL: URL: @@ -142,7 +150,7 @@ AdvancedButton - + Advanced Search Procura avançada @@ -150,219 +158,263 @@ AdvancedSearchWidget - + Author: Autor: - + Author name Nome do autor - + Email: Email: - + Author email Email do autor - + Message: Mensagem: - + Commit message Mensagem de submissão - + Date: Data: - + Specific commit date Data específica da submissão - + After: Após: - + Commits after date Submissão após a data - + Before: Antes: - + Commits before date Submissão antes da data - + File: Ficheiro: - + File name Nome do ficheiro - + Path: Caminho: - + File path Caminho do ficheiro - + Scope: Âmbito: - + Hunk header text Texto da parte do cabeçalho - + Context: Contexto: - + Diff context (white) Contexto comparado (branco) - + Addition: Adição: - + Diff addition (green) Adição comparada (verde) - + Deletion: Eliminação: - + Diff deletion (red) Eliminação comparada (vermelho) - + Comment: Comentário: - + Source code comment Comentário do código-fonte - + String: Cadeia: - + Source code string literal Cadeia literal do código-fonte - + Identifier: Identificador: - + Source code identifier Identificador do código-fonte - + Search Procurar - + Return Retornar + + AmendDialog + + + Author + + + + + Committer + + + + + Commit Message: + + + + + Amend + Emendar + + + + Cancel + Cancelar + + Application - + SSL Errors Erros SSL - + Failed to set up SSL session. Do you want to ignore these errors? Falha ao configurar sessão SSL. Deseja ignorar estes erros? + + AuthorCommitterDate + + + Author/Committer: + + + + + Author: + + + + + Committer: + + + Beanstalk - Connection failed - A ligação falhou + A ligação falhou Bitbucket - Connection failed - A ligação falhou + A ligação falhou BlameEditor - + Untitled Sem título - + Not Tracked Não rastreado - + HEAD HEAD - + Working Copy Cópia de trabalho - + Save File Gravar ficheiro @@ -370,12 +422,12 @@ BlameMargin - + Not Committed Não submetido - + Invalid Signature Assinatura inválida @@ -383,17 +435,17 @@ BranchTableModel - + Name Nome - + Upstream Montante - + Rebase Rebasear @@ -401,17 +453,17 @@ CheckoutDialog - + Detach HEAD Desanexar HEAD - + References: Referências: - + Checkout Mudar @@ -419,7 +471,7 @@ ClearButton - + Clear Limpar @@ -427,32 +479,32 @@ CloneDialog - + Initialize Repository Inicializar repositório - + Clone Repository Clonar repositório - + Initialized empty repository into '%1' Repositório vazio inicializado em "%1" - + Cloned repository from '%1' into '%2' Repositório clonado de "%1" para "%2" - + Initialize Inicializar - + Clone Clonar @@ -460,33 +512,33 @@ ClonePage - + Clone Progress Progresso da clonagem - + The new repository will open after the clone finishes. O novo repositório será aberto após terminar a clonagem. - + Clone Clonar - - + + clone clonar - + Clone canceled. Clonagem cancelada. - + Failed to %1 into '%2' - %3 Falha ao %1 para "%2" - %3 @@ -494,27 +546,27 @@ CommitDetail - + Copy Copiar - + Range: Intervalo: - + Id: Id: - + initial commit submissão inicial - + Parents: @@ -572,120 +624,181 @@ CommitEditor - + + T + + + + <b>Commit Message:</b> <b>Mensagem de submissão:</b> - - + + Spell Check Language - + The dictionary '%1' is invalid - + Spell checking is disabled. - + The choosen dictionary '%1.dic' is not a valid hunspell dictionary. - - + + Invalid dictionary '%1.dic' - + Edit User Dictionary - + Stage All Adicionar tudo - + Unstage All Remover adições - - + + Commit Submeter - + + Abort rebasing + + + + + Continue rebasing + + + + + Abort Merge + Abortar união + + + + %1 + %1 + + + + %1 and %2 + + + + + %1, %2, and %3 + + + + + Merge + Unir + + + + Revert + Reverter + + + + Cherry-pick + + + + + Rebase + Rebasear + + + + Abort %1 + Abortar %1 + + + + Commit Rebase + + + Update %1 - Actualizar %1 + Actualizar %1 - Update %1 and %2 - Actualizar %1 e %2 + Actualizar %1 e %2 - Update %1, %2, and %3 - Actualizar %1, %2 e %3 + Actualizar %1, %2 e %3 - Update %1, %2, and %3 more files... - Actualizar %1, %2 e mais %3 ficheiros... + Actualizar %1, %2 e mais %3 ficheiros... - + Nothing staged Nada adicionado - + %1 of %2 file staged %1 de %2 ficheiro adicionado - + %1 of %2 files staged %1 de %2 ficheiros adicionados - + %1 file partially staged %1 ficheiro parcialmente adicionado - + %1 files partially staged %1 ficheiros parcialmente adicionados - + %1 unresolved conflict %1 conflito por resolver - + %1 unresolved conflicts %1 conflitos por resolver - + all conflicts resolved todos os conflitos resolvidos - + Commit Merge Submeter união @@ -693,114 +806,131 @@ CommitList - + Remove Untracked Files Remover ficheiros não rastreados - + Apply Aplicar - + Pop Aplicar e apagar - + Drop Largar - + Unstar Sem estrela - + Star Com estrela - + Add Tag... Adicionar etiqueta... - + New Branch... Novo ramo... - Delete Tag %1 - Eliminar etiqueta %1 + Eliminar etiqueta %1 - Delete Branch %1 - Eliminar ramo %1 + Eliminar ramo %1 - + + Rename Branch + + + + + Delete Branch + + + + + Delete Tag + Eliminar etiqueta + + + Merge... Unir... - + Rebase... Rebasear... - + Squash... Comprimir... - + Revert Reverter - + Cherry-pick Escolher este - - - + + Checkout %1 Mudar para %1 - + + Checkout + Mudar + + + Local branch is already checked out O ramo local já foi mudado - + This is a bare repository Este é um repositório em bruto - + Reset Repor - + Soft Suave - + Mixed Misto - + Hard Forçado @@ -808,12 +938,12 @@ CommitModel - + Uncommitted changes Alterações não submetidas - + Checking for uncommitted changes A procurar alterações não submetidas @@ -821,128 +951,165 @@ CommitToolBar - + Show All Branches Mostrar todos os ramos - + Show Selected Branch Mostrar o ramo seleccionado - + Sort by Date Ordenar por data - + Sort Topologically Ordenar topologicamente - + Show Graph Mostrar gráfico - + Show Clean Status Mostrar estado limpo - + Compact Mode Modo compacto + + + Show Author + + + + + Show Date + + + + + Show Id + + ConfigDialog - + Esc Esc - + General Geral - + Diff Comparação - + Remotes Remotos - + Branches Ramos - + Submodules Sub-módulos - + Search Procurar - + Plugins Extensões - + LFS LFS - + Edit Config File... Editar ficheiro de configuração... + + DateSelectionGroupWidget + + + Datetime source + + + + + Current + + + + + Manual + + + + + Original + + + DefaultWidget - + Clone repository Clonar repositório - + Open existing repository Abrir repositório existente - + Open Repository Abrir repositório - + Initialize new repository Inicializar novo repositório - + Add %1 account Adicionar conta %1 - View getting started videos - Ver vídeos de aprendizagem + Ver vídeos de aprendizagem - + Contact us for support Contacte-nos para ajuda @@ -950,47 +1117,47 @@ DeleteBranchDialog - + Are you sure you want to delete local branch '%1'? Tem a certeza de que deseja eliminar o ramo "%1"? - + Delete Branch? Eliminar ramo? - + Also delete the upstream branch from its remote Eliminar também o ramo a montante do seu remoto - + Delete Eliminar - + delete '%1' from '%2' eliminar "%1" de "%2" - + Push Enviar - + Push canceled. Envio cancelado. - + Unable to push to %1 - %2 Impossível enviar para %1 - %2 - + The branch is not fully merged. Deleting it may cause some commits to be lost. O ramo não está totalmente unido. Eliminá-lo pode causar a perda de algumas submissões. @@ -998,56 +1165,81 @@ DeleteTagDialog - + Are you sure you want to delete tag '%1'? Tem a certeza de que deseja eliminar a etiqueta "%1"? - + Delete Tag? Eliminar etiqueta? - + Also delete the upstream tag from %1 Eliminar também a etiqueta a montante de %1 - + Delete Eliminar - + delete '%1' from '%2' eliminar "%1" de "%2" - + Push Enviar - + Push canceled. Envio cancelado. - + Unable to push to %1 - %2 Impossível enviar para %1 - %2 - + Delete Tag Eliminar etiqueta - + delete tag eliminar etiqueta + + DetailView + + + + Author: + Autor: + + + + reset + repor + + + + Here you can set the author used for committing +These settings will not be saved permanently + + + + + Email: + Email: + + DiffPanel @@ -1081,17 +1273,17 @@ Ficheiros adicionados - + Deleted files Ficheiros eliminados - + Whitespace: Espaço: - + Auto Collapse: Colapso automático: @@ -1099,43 +1291,89 @@ DiffTool - + External Diff Comparação externa + + DiffTreeModel + + + Submodule + Sub-módulo + + DiffView - + Add new file Adicionar novo ficheiro - + Or drag files here to copy into the repository Ou arrastar ficheiros para aqui e copiar para o repositório + + DoubleTreeWidget + + + Blame + + + + + Show Blame Editor + + + + + Diff + Comparação + + + + Show Diff View + Mostrar vista de comparação + + + + Single Tree View + + + + + List View + + + + + Hide Untracked Files + + + DownloadDialog - + Update %1 Actualizar %1 - + Downloading %1... A transferir %1... - + Download Complete! Transferência concluída! - + Install and Restart Instalar e reiniciar @@ -1143,17 +1381,17 @@ EditButton - + Edit Working Copy - + Edit New Revision - + Edit Old Revision @@ -1161,7 +1399,7 @@ EditTool - + Edit in External Editor Editar em editor externo @@ -1169,47 +1407,47 @@ EditorPanel - + Tabs Tabulações - + Spaces Espaços - + Show heat map Mostrar mapa de calor - + Font: Letra: - + Font size: Tamanho da letra: - + Indent using: Avançar com: - + Indent width: Largura do avanço: - + Tab width: Largura de tabulação: - + Blame margin: Margem de culpa: @@ -1217,12 +1455,12 @@ EditorWindow - + '%1' has been modified. Do you want to save your changes? "%1" foi alterado. Deseja gravar as suas alterações? - + Save Changes? Gravar alterações? @@ -1230,22 +1468,22 @@ ExternalToolsDialog - + Configure External Tools Configurar ferramentas externas - + Detected Tools Ferramentas detectadas - + User Defined Tools Ferramentas do utilizador - + Select Executable Seleccionar executável @@ -1253,17 +1491,17 @@ ExternalToolsModel - + Name Nome - + Command Comando - + Arguments Argumentos @@ -1271,168 +1509,244 @@ FileContextMenu - + Revision Not Found Revisão não encontrada - + The selected file doesn't have a %1 revision. O ficheiro seleccionado não tem uma revisão %1. - + Bash Not Found Bash não encontrado - + Bash was not found on your PATH. Bash não encontrado no PATH. - + Bash is required to execute external tools. O Bash é necessário para executar ferramentas externas. - + Stage Adicionar - + Unstage Remover adição - - + + Discard Changes Descartar alterações - + Discard Changes? Descartar alterações? - + Are you sure you want to discard changes in the selected files? Tem a certeza de que deseja descartar as alterações nos ficheiros seleccionados? - + This action cannot be undone. Esta acção não pode ser desfeita. - + + (Submodule) + + + + %1 files %1 ficheiros - + Discard Descartar - + discard descartar - + Remove Untracked Files Remover ficheiros não rastreados - + Ignore Ignorar - + Checkout Mudar - + Unlock Desbloquear - + Lock Bloquear - + Copy File Name Copiar nome do ficheiro - + Filter History Filtrar histórico - + Navigate to Navegar para - + Next Revision Revisão seguinte - + next seguinte - + Previous Revision Revisão anterior - + previous anterior - + Unset Executable Desactivar executável - + Set Executable Activar executável - + + Save Selected Version as ... + + + + + Select new file directory + + + + + Saving files + + + + + Saving files of selected version to disk + + + + + Save file + + + + + Invalid Blob + + + + + Open this version + + + + + Opening file + + + + + Open + + + + + open file + + + + + Blob is invalid. + + + + + + Unable to checkout bare repositories + + + + + Unable to open files from bare repository + + + + + The file is already in the current working directory + + + + edit editar - + diff comparar - + merge unir - + External Tool Not Found Ferramenta externa não encontrada - + Failed to execute external %1 tool. Falha ao executar a ferramenta %1. @@ -1440,190 +1754,174 @@ FileList - Sort By - Ordenar por + Ordenar por - Select - Seleccionar + Seleccionar - Name - Nome + Nome - Status - Estado + Estado - Ignore Whitespace (-w) - Ignorar espaços (-w) + Ignorar espaços (-w) - Added - Adicionado + Adicionado - Deleted - Eliminado + Eliminado - Modified - Modificado + Modificado - Renamed - Renomeado + Renomeado - Copied - Copiado + Copiado - Ignored - Ignorado + Ignorado - Untracked - Não rastreado + Não rastreado - Unreadable - Ilegível + Ilegível - Conflicted - Em conflito + Em conflito - Unmodified - Inalterado + Inalterado - Type Change - Alteração de tipo + Alteração de tipo FileWidget - + LFS LFS - - + + Unlock Desbloquear - - + + Lock Bloquear - - + + Show Object Mostrar objecto - + Edit File Editar ficheiro - + Discard File Descartar ficheiro - + Directory Pasta - + File Ficheiro - + Remove %1? Remover %1? - + Discard Changes? Descartar alterações? - + Are you sure you want to remove '%1'? Tem a certeza de que deseja remover "%1"? - + Are you sure you want to discard all changes in '%1'? Tem a certeza de que deseja descartar as alterações em "%1"? - + This action cannot be undone. Esta acção não pode ser desfeita. - + Remove %1 Remover %1 - + Discard Changes Descartar alterações - + Discard Descartar - + discard descartar - - + + Collapse File Colapsar ficheiro - - + + Expand File Expandir ficheiro - + Show Pointer Mostrar ponteiro @@ -1631,32 +1929,32 @@ FindWidget - + Search Procurar - + Done Concluído - + Esc Esc - + Not found Não encontrado - + %1 match %1 resultado - + %1 matches %1 resultados @@ -1664,117 +1962,131 @@ GeneralPanel - - + + Fetch every Obter cada - - + + minutes minutos - - + + Push after each commit Enviar após cada commit - - Update submodules after pull - Actualizar sub-módulos após puxar + Actualizar sub-módulos após puxar - - + + Prune when fetching Aparar ao obter - + No translation Sem tradução - + Store credentials in secure storage Armazenar credenciais com segurança - Allow collection of usage data - Permitir recolha de dados de utilização + Permitir recolha de dados de utilização - + + + Update submodules after pull and clone + + + + <a href='view'>View privacy policy</a> <a href='view'>Ler política de privacidade</a> - - + + User name: Utilizador: - - + + User email: Email: - - + + Automatic actions: Acções automáticas: - + + Language: Idioma: - + Credentials: Credenciais: - + + Credential store type: + + + + + Only allow a single running instance + + + + + Single instance: + + + Usage reporting: - Relatório de utilização: + Relatório de utilização: GitHub - Connection failed - + A ligação falhou - Failed to authenticate with GitHub! - Falha ao autenticar no GitHub! + Falha ao autenticar no GitHub! - Successfully authenticated with GitHub! - Autenticado com sucesso no GitHub! + Autenticado com sucesso no GitHub! GitLab - Connection failed - A ligação falhou + A ligação falhou - + Authentication failed Falha ao autenticar @@ -1782,7 +2094,7 @@ A ligação falhou Header - + Filter %1 Pode ser "Filtro %1" Filtrar %1 @@ -1791,114 +2103,183 @@ A ligação falhou HostModel - + Connecting A ligar + + HotkeyModel + + + Action + + + + + Keys + + + HunkWidget - + + Save Gravar - + + Undo Desfazer - + + Use Ours Usar o nosso - + + Use Theirs Usar o deles - + Edit Hunk Editar pedaço - - + Discard Hunk Descartar pedaço - - Discard Hunk? - Descartar pedaço? + + Discard selected lines? + - + + Are you sure you want to discard the changes in hunk from line %1 to %2 in '%3'? + + + + + Discard selected lines + + + + Discard Hunk? + Descartar pedaço? + + + Are you sure you want to remove '%1'? Tem a certeza de que deseja remover "%1"? - Are you sure you want to discard the hunk starting at line %1 in '%2'? - Tem a certeza de que deseja descartar o pedaço que comaçe na linha %1 em "%2"? + Tem a certeza de que deseja descartar o pedaço que comaçe na linha %1 em "%2"? - + This action cannot be undone. Esta acção não pode ser desfeita. - - + + Collapse Hunk Colapsar pedaço - - + + Expand Hunk Expandir pedaço - + Esc Esc - + Fix Reparar - + Edit Editar - + No newline at end of file Sem nova linha no fim do ficheiro + + IgnoreDialog + + + Ignore Pattern + + + Images - + <b>Size:</b> %1 <b>Tamanho:</b> %1 + + InfoBox + + + Name: + Nome: + + + + Email: + Email: + + + + Commit date: + + + + + KeybindDialog + + + The selected key is the same for the following actions: +%1 + + + + + Please press the desired hotkey + + + LfsPanel - + Initialize LFS Inicializar LFS - + Specify a glob pattern for tracking large files. Generally, large files are greater than 500kB, change frequently, @@ -1923,100 +2304,110 @@ Exemplos - + Pattern: Padrão: - + Track Rastrear - + days dias - + Fetch LFS objects from all references for the past Obter objectos LFS de todas as referências passadas - + reference days or dias de referência ou - + commit days dias de submissão - + View Environment Ver ambiente - + git-lfs env (read only) git-lfs env (só de leitura) - + Deinitialize LFS Desinicializar LFS - + Deinitialize LFS? Desinicializar LFS? - + Are you sure you want uninstall LFS from this repository? Tem a certeza de que deseja desinstalar LFS deste repositório? - + Deinitialize Desinicializar - + Server URL: URL do servidor: - + Prune Offset: Desvio para aparar: - + Fetch Recent: Obter recentes: - + Advanced: Avançado: + + + Included patterns: + + + + + Excluded patterns: + + Location - + %1 | %2 %1 | %2 - + NC NS - + Not Committed Não submetido @@ -2024,57 +2415,57 @@ Exemplos LocationPage - + Repository Location Localização do repositório - + Choose the name and location of the new repository. A new directory will be created if it doesn't already exist. Escolha o nome e a localização do novo repositório. Será criada uma nova pasta, se ainda não existir. - + Initialize Inicializar - + Clone Clonar - + ... ... - + Choose Directory Escloher pasta - + Name: Nome: - + Directory: Pasta: - + Advanced: Avançado: - + Create a bare repository Criar um repositório em bruto - + The new repository will be created at:<p style='text-indent: 12px'><b>%1</b></p> O novo repositório será criado em :<p style='text-indent: 12px'><b>%1</b></p> @@ -2082,7 +2473,7 @@ Exemplos LogView - + Copy Copiar @@ -2090,59 +2481,59 @@ Exemplos MainWindow - + Invalid Git Repository Repositório git invaĺido - + %1 does not contain a valid git repository. %1 não contém um repositório git válido. - - + + %1 - %2 %1 - %2 - + ahead: %1 à frente: %1 - + behind: %1 atrás: %1 - + up-to-date actualizado - - + + %1 (%2) %1 (%2) - + MERGING A UNIR - + REVERTING A REVERTER - + CHERRY-PICKING A ESCOLHER PRECISAMENTE - + REBASING A REBASEAR @@ -2150,575 +2541,583 @@ Exemplos MenuBar - + File Ficheiro - + New File Novo ficheiro - + New Window Nova janela - Ctrl+Meta+N - Ctrl+Meta+N + Ctrl+Meta+N - + Clone Repository... Clonar repositório... - Ctrl+Shift+N - Ctrl+Shift+N + Ctrl+Shift+N - + Initialize New Repository... Inicializar novo repositório... - Ctrl+Alt+N - Ctrl+Alt+N + Ctrl+Alt+N - + Open Repository... Abrir repositório... - + Open Repository Abrir repositório - + Open Recent Abrir recente - + Close Fechar - + Save Gravar - + Exit Sair - + Edit Editar - + Undo Desfazer - + Redo Refazer - + Cut Cortar - + Copy Copiar - + Paste Colar - + Select All Seleccionar tudo - + Find... Localizar... - + Find Next Localizar seguinte - + Find Previous Localizar anterior - + Use Selection for Find Usar selecção para localizar - - Ctrl+E - Ctrl+E + + Show Double Tree View + - + Ctrl+E + Ctrl+E + + + View Ver - + Refresh Actualizar - - + + Show Log Mostrar diário - - + + Normal + + + + + Maximize + + + + + Show Tree View Mostrar árvore - + + Hide Menu Bar + + + + Repository Repositório - + Configure Repository... Configurar repositório... - + Stage All Adicioanr tudo - Ctrl++ - Ctrl++ + Ctrl++ - + Unstage All Remover todas as adições - Ctrl+- - Ctrl+- + Ctrl+- - + Commit Submeter - Ctrl+Shift+C - Ctrl+Shift+C + Ctrl+Shift+C - + Amend Commit Emendar submissão - - Ctrl+Shift+A - Ctrl+Shift+A + Ctrl+Shift+A - + Git LFS Git LFS - + Remove all locks Remover todos os bloqueios - + Initialize Inicializar - + Remote Remoto - + Configure Remotes... Configurar remotos... - + Fetch Obter - Ctrl+Shift+Alt+F - Ctrl+Shift+Alt+F + Ctrl+Shift+Alt+F - + Fetch All Obter tudo - Ctrl+Shift+Alt+A - Ctrl+Shift+Alt+A + Ctrl+Shift+Alt+A - + Fetch From... Obter de... - Ctrl+Shift+F - Ctrl+Shift+F + Ctrl+Shift+F - + Pull Puxar - Ctrl+Shift+Alt+L - Ctrl+Shift+Alt+L + Ctrl+Shift+Alt+L - + Pull From... Puxar de... - Ctrl+Shift+L - Ctrl+Shift+L + Ctrl+Shift+L - + Push Enviar - Ctrl+Shift+Alt+P - Ctrl+Shift+Alt+P + Ctrl+Shift+Alt+P - + Push To... Enviar para... - Ctrl+Shift+P - Ctrl+Shift+P + Ctrl+Shift+P - + Branch Ramo - + Configure Branches... Configurar ramos... - + New Branch... Novo ramo... - + + Rename Branch + + + + Checkout Current Mudar actual - Ctrl+Shift+Alt+H - Ctrl+Shift+Alt+H + Ctrl+Shift+Alt+H - + Checkout... Mudar... - Ctrl+Shift+H - Ctrl+Shift+H + Ctrl+Shift+H - + Merge... Unir... - Ctrl+Shift+M - Ctrl+Shift+M + Ctrl+Shift+M - + Rebase... Rebasear... - Ctrl+Shift+R - Ctrl+Shift+R + Ctrl+Shift+R - + Squash... Comprimir... - Ctrl+Shift+Q - Ctrl+Shift+Q + Ctrl+Shift+Q - + Abort Merge Abortar união - + Submodule Sub-módulo - + Configure Submodules... Configurar sub-módulos... - + Update All Actualizar tudo - Ctrl+Shift+Alt+U - Ctrl+Shift+Alt+U + Ctrl+Shift+Alt+U - + Update... Actualizar... - Ctrl+Shift+U - Ctrl+Shift+U + Ctrl+Shift+U - + Open Abrir - + Stash Ocultar - + Show Stashes Mostrar ocultos - + Stash... Ocultar... - Ctrl+Shift+T - Ctrl+Shift+T + Ctrl+Shift+T - + Pop Stash Aplicar e limpar - Ctrl+Shift+Alt+T - Ctrl+Shift+Alt+T + Ctrl+Shift+Alt+T - + History Histórico - + Back Recuar - + Forward Avançar - + Window Janela - + Show Previous Tab Mostrar separador anterior - + Show Next Tab Mostrar separador seguinte - + Show Repository Chooser... Mostrar selector de repositórios... - Ctrl+Shift+O - Ctrl+Shift+O + Ctrl+Shift+O - + Tools Ferramentas - + Options... Opções... - + Help Ajuda - + About %1 Acerca do %1 - + Check For Updates... Procurar actualizações... - + Plugin Documentation... Documentação de extensões... - + + Support us via Liberapay + + + + Debug Depurar - + Abort Abortar - + Log Indexer Progress Registar progresso do indexador - + Log Credential Helper Registar ajudante de credenciais - + Log Remote Connection Registar ligação remota - + + Log Debug Messages + + + + Load All Diffs Carregar todas as comparações - + Walk Commits Passear submissões - + Hide Log Ocultar diário - Show Diff View - Mostrar vista de comparação + Mostrar vista de comparação - + Merge Unir - + Revert Reverter - + Cherry-pick Escolher precisamente - + Rebase Rebasear - + Abort %1 Abortar %1 @@ -2726,60 +3125,60 @@ Exemplos MergeDialog - - + + Merge Unir - - + + Rebase Rebasear - - + + Squash Comprimir - + Merge (No Fast-forward) Unir (sem avanço rápido) - + Merge (Fast-forward Only) Unir (só avanço rápido) - + No commit Sem submissão - + Reference: Referência: - + Action: Acção: - + Choose a reference to merge into '%1'. Escolha uma referência a unir com "%1". - + Choose a reference to rebase '%1' on. Escolha uma referência em que rebasear "%1". - + Choose a reference to squash into '%1'. Escolha uma referência para comprimir em "%1". @@ -2787,7 +3186,7 @@ Exemplos MergeTool - + External Merge União externa @@ -2795,12 +3194,12 @@ Exemplos MiscPanel - + Path to SSH config file: Caminho para ficheiro de configuração SSH: - + Path to default / fallback SSH key file: Caminho predefinido/omissão de ficheiro-chave SSH: @@ -2808,32 +3207,32 @@ Exemplos NewBranchDialog - + Checkout branch Mudar ramo - + Name: Nome: - + Start Point: Pnto inicial: - + Advanced: Avançado: - + Upstream: Montante: - + Create Branch Criar ramo @@ -2841,7 +3240,7 @@ Exemplos PathspecWidget - + Filter by Path Filtrar por caminho @@ -2849,42 +3248,42 @@ Exemplos PluginsPanel - + Name Nome - + Kind Espécie - + Description Descrição - + Options Opções - + %1 Options Opções de %1 - + Note Nota - + Warning Aviso - + Error Erro @@ -2892,7 +3291,7 @@ Exemplos Popup - + Show Advanced Search Mostrar procura avançada @@ -2900,12 +3299,12 @@ Exemplos PreviewWidget - + Added Adicionado - + Modified Modificado @@ -2913,7 +3312,7 @@ Exemplos PullRequestButton - + Create Pull Request Criar Pull Request @@ -2921,55 +3320,117 @@ Exemplos PullRequestDialog - + Create Pull Request Criar Pull Request - + Title Título - + Body Corpo - + Maintainer can modify Responsável pode modificar - + From: De: - + owner/repository dono/repositório - + branch ramo - + To: Para: - + Create Criar + + QObject + + + Expand all + + + + + Collapse all + + + + + Staged Files + + + + + Unstaged Files + + + + + Committed Files + + + + + Workdir Files + + + + + Your global GIT configuration is invalid, Gittyup won't run properly until this is fixed + + + + + RebaseConflictDialog + + + Rebase conflict + + + + + Abort rebase + + + + + Continue + + + + + The rebase caused a merge conflict. +Would you like to fix the merge conflict and continue? + + + Reference - + HEAD detached at %1 HEAD desanexado em %1 @@ -2977,7 +3438,7 @@ Exemplos ReferenceList - + Commit Submeter @@ -2985,17 +3446,17 @@ Exemplos ReferenceModel - + Branches Ramos - + Remotes Remotos - + Tags Etiquetas @@ -3003,57 +3464,57 @@ Exemplos ReferenceView - + Branch Ramo - + Remote Remoto - + Tag Etiqueta - + Checkout Mudar - + Rename Renomear - + Delete Eliminar - + Push Tag to %1 Enviar etiqueta para %1 - + New Local Branch Novo ramo local - + Merge... Unir... - + Rebase... Rebasear... - + Squash... Comprimir... @@ -3061,7 +3522,7 @@ Exemplos RefreshButton - + Refresh Actualizar @@ -3069,7 +3530,7 @@ Exemplos RemoteButton - + 999+ 999+ @@ -3077,58 +3538,59 @@ Exemplos RemoteCallbacks - + remote: %1 remoto: %1 - + failed to execute pre-push hook: bash not found falha ao executar gancho de pré-envio: bash não encontrado - + failed to execute pre-push hook: %1 falha ao executar gancho de pré-envio: %1 - + HTTPS Credentials Credenciais HTTPS - + SSH Passphrase Frase-passe SSH - + Username: Utilizador: - + Password: Senha: - + Passphrase: Frase-passe: - + + authentication canceled autenticação cancelada - + From %1 De %1 - - + + To %1 Para %1 @@ -3136,47 +3598,47 @@ Exemplos RemoteDialog - + Push all tags Enviar todas as etiquetas - + Update existing tags Actualizar etiquetas existentes - + Merge Unir - + Rebase Rebasear - + Merge (No Fast-forward) Unir (sem avanço rápido) - + Merge (Fast-forward Only) Unir (só avanço rápido) - + Set upstream Definir montante - + Force Forçar - + Remote Reference: Referência remota: @@ -3224,42 +3686,42 @@ Exemplos RemotePage - + Remote Repository URL URL do repositório remoto - + Choose protocol to authenticate with the remote. Escolha o protocolo para autenticação com o remoto. - + Enter the URL of the remote repository or browse for a local directory Insira o URL do repositório remoto ou navegue até uma pasta local - + ... ... - + Choose Directory Escolha a pasta - + Examples of valid URLs include:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> Exemplos de URLs válidos incluem:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> - + Protocol: Protocolo: - + URL: URL: @@ -3267,12 +3729,12 @@ Exemplos RemoteTableModel - + Name Nome - + URL URL @@ -3280,61 +3742,74 @@ Exemplos RemotesPanel - + Delete Remote? Eliminar remoto? - + Are you sure you want to delete '%1'? Tem a certeza de que deseja eliminar "%1"? - + Delete Eliminar + + RenameBranchDialog + + + Name: + Nome: + + + + Rename Branch + + + RepoModel - + Connecting A ligar - + open abrir - + recent recente - + remote remoto - - + + none nenhum - + Clone Repository Clonar repositório - + Open Existing Repository Abrir repositório existente - + Initialize New Repository Inicializar novo repositório @@ -3342,130 +3817,161 @@ Exemplos RepoView - + Indexing... A indexar... - + Search Procurar - The indexer worker process crashed. If this problem persists please contact us at support@gitahead.com. - O processo do indexador rebentou. Se este problema persistir, por favor contacte-nos em support@gitahead.com. + O processo do indexador rebentou. Se este problema persistir, por favor contacte-nos em support@gitahead.com. - + Indexer Crashed O indexador rebentou - + Stage Directory? Adicionar pasta? - + Are you sure you want to stage '%1'? Tem a certeza de que deseja adicionar "%1"? - + This will result in the addition of %1 files. Isto resultará na adição de %1 ficheiros. - + more than 100 mais de 100 - + Stage Directory Adicionar pasta - + Stop prompting to stage directories Parar de pedir para adicionar pastas - + Stage Large File? Adicionar ficheiro grande? - + Are you sure you want to stage '%1' with a size of %2? Tem a certeza de que deseja adicionar "%1" com um tamanho de %2? - + Stage Adicionar - + Track with LFS Rastrear com LFS - + This repository has LFS enabled. Do you want to track the file with LFS instead? Este repositório tem LFS activo. Deseja antes rastrear o ficheiro com LFS? - + Stop prompting to stage large files Parar de pedir para adicionar ficheiros grandes - + Esc Esc - + stage - + Git LFS was not found on the PATH. <a href='https://git-lfs.github.com'>Install Git LFS</a> to use LFS integration. O Git LFS não foi encontrado no PATH. <a href='https://git-lfs.github.com'>Instale o Git LFS</a> para usar integração LFS. - + untracked file ficheiro não rastreado - + untracked files ficheiros não rastreados - + Remove Untracked Files Remover ficheiros não rastreados - + Remove %1 %2? Remover %1 %2? - + This action cannot be undone. Esta acção não pode ser desfeita. - + Remove Remover + + + + Certificate Error + + + + + SSL verification disabled for this repository + + + + + [http] + sslVerify = false + +was added to %1/config + + + + + SSL verification disabled for all git repositories + + + + + [http] + sslVerify = false + +was added to %1 + + Pull Request @@ -3482,297 +3988,314 @@ Exemplos criar Pull Request - - - + + + Git LFS Git LFS - + Initialize Inicializar - + initialize - + Git LFS initialized. Git LFS inicializado. - + Deinitialize Desinicializar - + deinitialize - + Git LFS Deinitialized. Git LFS desinicializado. - + Lock Bloquear - + Unlock Desbloquear - - + + Unable to %1 '%2' - %3 Impossível %1 '%2' - %3 - + Unable to %1 - %2 Impossível %1 - %2 - + %1 remotes %1 remotos - + Fetch All Obter tudo - + Fetch Obter - - - + + + <i>no remote</i> <i>sem remoto</i> - + Unable to fetch. No upstream is configured for the current branch, and there isn't a remote called 'origin'. Impossível obter. Não há montante configurado para o ramo actual e não há um remoto chamado "origin". - - + + Fetch canceled. Obter cancelado. - + fetch from obter de - + + You may disable ssl verification <a href='action:sslverifyrepo'>for this repository</a> or overall disable ssl verification <a href='action:sslverifygit'>for all repositories</a>. + + + + - + Everything up-to-date. Tudo actualizado. - - - + + + <i>no branch</i> <i>sem ramo</i> - + %1 from %2 %1 de %2 - + Pull Puxar - + <i>no upstream</i> <i>sem montante</i> - + Merge Unir - + %1 into %2 %1 em %2 - + Fast-forward Avanço rápido - + %2 to %1 %2 para %1 - + + Rebase Rebasear - + %2 on %1 %2 em %1 - + The repository is empty. - + The current branch '%1' has no upstream branch. O ramo %1 actual não tem um ramo a montante. - - + + Already up-to-date. Já está actualizado. - + Unable to fast-forward. Impossível avançar rapidamente. - + fast-forward avançar rapidamente - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='%1'>fast-forward</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Poderá conseguir reconciliar as suas alterações com os ficheiros em conflito se <a href='action:stash'>ocultar</a> antes de <a href='%1'>avançar rapidamente</a>. Em seguida, <a href='action:unstash'>aplique</a> para restaurar as alterações. - + If you want to create a new merge commit instead of fast-forwarding, you can <a href='%1'>merge without fast-forwarding </a> instead. Se deseja criar uma nova submissão de união em vez de avançar rapidamente, pode antes <a href='%1'>unir sem avançar rapidamente</a>. - - - - + + + + merge unir - - + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:merge'>merge</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Poderá conseguir rebasear se <a href='action:stash'>ocultar</a> antes de tentar <a href='action:merge'>unir</a>. Em seguida, <a href='action:unstash'>aplique</a> para restaurar as alterações. - - + + + Abort Abortar - + Some merged files have unstaged changes Alguns ficheiros unidos têm alterações não adicionadas. - + abort merge abortar união - - - + + + revert reverter - - - + + + cherry-pick escolher precisamente - - - + + + rebase rebasear - + + Continue ongoing rebase + + + + + Invalid head. + + + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:rebase'>rebase</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Poderá conseguir rebasear se <a href='action:stash'>ocultar</a> antes de tentar <a href='action:rebase'>rebasear</a>. Em seguida, <a href='action:unstash'>aplique</a> para restaurar as alterações. - + + %1/%2 %1/%2 - + %1 - %2 %1 - %2 - + Apply Aplicar - There was a merge conflict. The rebase has been aborted - Houve um conflito na união. Rebasear abortado. + Houve um conflito na união. Rebasear abortado. - + %1 - %2 <i>already applied</i> %1 - %2 <i>já aplicado</i> - + %1 - %2 as %3 %1 - %2 como %3 - - - + + + squash comprimir - + Revert Reverter - + Revert "%1" This reverts commit %2. @@ -3781,457 +4304,527 @@ This reverts commit %2. Isto reverte a submissão %2. - + <i>detached HEAD</i> <i>HEAD desanexado</i> - + %1 on %2 %1 em %2 - + Cherry-pick Escolha precisa - Force Push? - Forçar envio? + Forçar envio? - + Are you sure you want to force push? Tem a certeza de que deseja forçar o envio? - + The remote will lose any commits that are reachable only from the overwritten reference. Dropped commits may be unexpectedly reintroduced by clones that already contain those commits locally. O remoto perderá todas as submissões só alcançáveis a partir da referência sobrescrita. Submissões largadas podem ser inesperadamente reintroduzidas por clones que já contêm essas submissões localmente. - + Force Push Forçar envio - + <i>no reference</i> <i>sem referência</i> - + Push Enviar - + Push (Force) Enviar (forçar) - - + + %1 to %2 %1 para %2 - - + + You are not currently on a branch. Actualmente não está num ramo. - + Create a commit to add the default '%1' branch. Cria uma submissão para adicionar o ramo "%1" predefinido. - + You can <a href='action:checkout'>checkout</a> a branch then <a href='action:push'>push</a> again, or <a href='action:push-to'>push to an explicit branch</a>. Pode <a href='action:checkout'>mudar</a> um ramo e depois <a href='action:push'>enviar</a> novamente, ou <a href='action:push-to'>enviar para um ramo explícito</a>. - + The current branch '%1' has no default remote. O ramo "%1" actual não tem um remoto predefinido. - + You may want to <a href='action:add-remote?name=origin'>add a remote named 'origin'</a>. Then <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a> to begin tracking a remote branch called 'origin/%1'. Poderá querer <a href='action:add-remote?name=origin'>adicionar um remoto chamado "origin"</a>. Em seguida, <a href='action:push?set-upstream=true'>envie e defina o montante do ramo actual</a> para começar a rastrear um ramo remoto chamado "origin/%1". - + You can also <a href='action:push-to'>push to an explicit URL</a> if you don't want to track a remote branch. Também pode <a href='action:push-to'>enviar para um URL explícito</a>, se não deseja rastrear um ramo remoto. - + To begin tracking a remote branch called '%1', <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a>. Para começar a rastrear um ramo remoto chamado "%1", <a href='action:push?set-upstream=true'>envie e defina o montante do ramo actual</a>. - + To push without setting up tracking information, <a href='action:push?ref=%1'>push '%2'</a> explicitly. Para enviar sem definir informação de rastreio, <a href='action:push?ref=%1'>envie "%2"</a> explicitamente. - + Push canceled. Envio cancelado. - + push to enviar para - + The tag update may cause the remote to lose commits. A actualização da etiqueta pode provocar perda de submissões no remoto. - + If you want to risk the remote losing commits, you can <a href='action:push?ref=%1&to=%2&force=true'>force push</a>. Se deseja arriscar perder submissões no remoto, pode <a href='action:push?ref=%1&to=%2&force=true'>forçar o envio</a>. - You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push'>push</a> again. - Poderá querer integrar as submissões remotas primeiro <a href='action:pull'>puxando</a>. Em seguida, <a href='action:push'>envie</a> novamente. + Poderá querer integrar as submissões remotas primeiro <a href='action:pull'>puxando</a>. Em seguida, <a href='action:push'>envie</a> novamente. - If you really want the remote to lose commits, you may be able to <a href='action:push?force=true'>force push</a>. - Se realmente deseja que o remoto perca submissões, poderá ser capaz de <a href='action:push?force=true'>forçar o envio</a>. + Se realmente deseja que o remoto perca submissões, poderá ser capaz de <a href='action:push?force=true'>forçar o envio</a>. - + Commit? Submeter? - + Are you sure you want to commit on a detached HEAD? Tem a certeza de que deseja submeter num HEAD desanexado? - + <p>You are in a detached HEAD state. You can still commit, but the new commit will not be reachable from any branch. If you want to commit to an existing branch, checkout the branch first.</p> <p>Está num estado de HEAD desanexado. Ainda pode submeter, mas a nova submissão não estará alcançável por nenhum ramo. Se deseja submeter num ramo existente, mude o ramo primeiro.</p> - - + + Commit Submeter - - + + <i>no commit</i> <i>sem submissão</i> - + commit submeter - + This commit was signed with a generated user name and email. A submissão foi assinada com um utilizador e um email gerados. - + Consider setting the user name and email in <a href='action:config?global=true'>global settings</a>. Considere definir o utilizador e o email nas <a href='action:config?global=true'>definições globais</a>. - + If you want to limit the name and email settings to this repository, <a href='action:config'>edit repository settings</a> instead. Se deseja limitar as definições de nome e email to a este repositório, <a href='action:config'>edite antes as definições do repositório</a>. - + After settings have been updated, <a href='action:amend'> amend this commit</a> to record the new user name and email. Após actualizar as definições, <a href='action:amend'> emende esta submissão</a> para registar os novos utilizador e email. - + file ficheiro - + files ficheiros - + %1 - %2 %3 %1 - %2 %3 - - + + Checkout Mudar - + Checkout Detached HEAD? Mudar HEAD desanexado? - + Checkout Detached HEAD Mudar HEAD desanexado - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to reset the existing local branch '%2' to this commit instead? Mudar o ramo remoto "%1" resultará num estado de HEAD desanexado. Deseja antes repor o ramo local "%2" existente para esta submissão? - + Reset Local Branch Repor ramo local - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to create a new local branch called '%2' to track it instead? Mudar o ramo remoto "%1" resultará num estado de HEAD desanexado. Deseja antes criar um novo ramo local chamado "%2" para rastrear? - + Create a local branch to start tracking remote changes and make new commits. Check out the detached HEAD to temporarily put your working directory into the state of the remote branch. Criar um novo ramo para começar a rastrear alterações remotas e fazer novas submissões. Mudar o HEAD desanexado para pôr temporariamente a sua pasta de trabalho no estado do ramo remoto. - + Create Local Branch Criar ramo local - + checkout mudar - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='action:checkout?%1'>checkout '%2'</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Poderá reconciliar as suas alterações com os ficheiros em conflito <a href='action:stash'>ocultando</a> antes de <a href='action:checkout?%1'>mudar "%2"</a>. Em seguida, <a href='action:unstash'>aplique</a> para restaurar as alterações. - + New Branch Novo ramo - + create new branch criar novo ramo - + (no branch) (sem ramo) - + WIP on %1: %2 %3 WIP em %1: %2 %3 - + <i>working directory</i> <i>pasta de trabalho</i> - + Stash Ocultar - + stash ocultar - + Apply Stash Aplicar oculto - + apply stash aplicar oculto - + Drop Stash Largar oculto - + drop stash largar oculto - + Pop Stash Aplicar e apagar oculto - + pop stash aplicar e apagar oculto - + %1 as %2 %1 como %2 - + Tag Etiqueta - + tag etiqueta - - - + + Amend Emendar - - - + + Amending commit %1 + + + + + %1 to %2 + update ref + %1 para %2 + + + + + + + + Reset Repor - Amend? - Emendar? + Emendar? - Reset? - Repor? + Repor? - Are you sure you want to amend '%1'? - Tem a certeza de que deseja emendar "%1"? + Tem a certeza de que deseja emendar "%1"? - + Are you sure you want to reset '%1' to '%2'? Tem a certeza de que deseja repor "%1" para "%2"? - + <p>Some commits may become unreachable from the current branch.</p> <p>Algumas submissões podem ficar inalcançáveis a partir do ramo actual.</p> - + <p>Resetting will cause you to lose uncommitted changes. Untracked and ignored files will not be affected.</p> <p>Repor causará a perda de alterações não submetidas. Ficheiros não rastreados e ignorados não serão afectados.</p> - + <p>Your branch appears to be up-to-date with its upstream branch. Resetting may cause your branch history to diverge from the remote branch history.</p> <p>O seu ramo parece estar actualizado com o ramo a montante. Repor pode fazer com que o histórico do seu ramo divirja do histórico do ramo remoto.</p> - + + amend emendar - + reset repor - + + %1 of %2 submodules %1 de %2 sub-módulos - - + + Update Actualizar - + + update submodule actualizar sub-módulo - + + The indexer worker process crashed. If this problem persists please contact us at <TODO: replace.support@gitahead.com>. + + + + + Please resolve conflicts before continue + + + + + Conflict + + + + + Rebase finished + + + + + Force Push to %1? + + + + + You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push?to=%1'>push</a> again. + + + + + If you really want the remote to lose commits, you may be able to <a href='action:push?to=%1&force=true'>force push</a>. + + + + + Reset canceled. + + + + + Untouched + + + + Invalid Submodule Repository Repositório de sub-módulo inválido - + The submodule '%1' doesn't have a valid repository. You may need to init and/or update the submodule to check out a repository. O sub-módulo "%1" não tem um repositório válido. Pode ter de inicializar e/ou actualizar o sub-módulo para mudar um repositório. - + + No terminal executable found + + + + + No terminal executable was found. Please configure a terminal in the configuration. + + + + + Open Configuration + + + + There was a merge conflict. Houve um conflito de união. - + Resolve conflicts, then commit to conclude the %1. See <a href='expand'>details</a>. Resolva os conflitos e submeta para concluir a %1. Veja os <a href='expand'>detalhes</a>. - + Resolve conflicts in each conflicted (!) file in one of the following ways: Resolva os conflitos em cada ficheiros (!) de uma das seguintes formas: - + 1. Click the 'Ours' or 'Theirs' button to choose the correct change. Then click the 'Save' button to apply. 1. Clique em "Nosso" ou "Deles" para escolher a alteração correcta. Em seguida, clique em "Gravar" para aplicar. - + 2. Edit the file in the editor to make a different change. Remember to remove conflict markers. 2. Edite o ficheiro no editor para fazer uma alteração diferente. Lembre-se de resolver os marcadores de conflito. - + 3. Use an external merge tool. Right-click on the files in the list and choose 'External Merge'. 3. Use uma ferramenta externa de união. Clique com o botão direito nos ficheiros da lista e escolha "União externa". - + After all conflicts in the file are resolved, click the check box to mark it as resolved. Após resolver todos os conflitos no ficheiro, clique na caixa para o marcar como resolvido. - + After all conflicted files are staged, commit to conclude the %1. Após adicionar todos os ficheiros em conflito, submeta para concluir a %1. - + You can <a href='action:abort'>abort</a> the %1 to return the repository to its previous state. Pode <a href='action:abort'>abortar</a> a %1 para devolver o repositório ao seu estado anterior. @@ -4239,12 +4832,12 @@ Isto reverte a submissão %2. Repository - + Unknown error Erro desconhecido - + git-lfs not found git lfs não encontrado @@ -4252,7 +4845,7 @@ Isto reverte a submissão %2. SearchField - + Search Procurar @@ -4260,32 +4853,32 @@ Isto reverte a submissão %2. SearchPanel - + Enable indexing Activar indexação - + terms termos - + lines linhas - + Limit commits to: Limitar submissões a: - + Diff context: Contexto de comparação: - + Remove Index Remover índice @@ -4293,32 +4886,32 @@ Isto reverte a submissão %2. Settings - + Prompt to edit stash message before stashing Pedir para editar mensagem de ocultação antes de ocultar - + Prompt to edit commit message before merging Pedir para editar mensagem de submissão antes de unir - + Prompt to edit commit message before reverting Pedir para editar mensagem de submissão antes de reverter - + Prompt to edit commit message before cherry-picking Pedir para editar mensagem de submissão antes de escolher precisamente - + Prompt to stage directories Pedir para adicionar pastas - + Prompt to stage large files Pedir para adicionar ficheiros grandes @@ -4326,62 +4919,67 @@ Isto reverte a submissão %2. SettingsDialog - + Esc Esc - + Global git settings can be overridden for each repository in the corresponding repository configuration page. As definições globais do git podem ser sobrepostas para cada repositório na correspondente página de configuração do repositório. - + Edit Config File... Editar ficheiro de configuração... - + General Geral - + Diff Comparação - + Tools Ferramentas - + Window Janela - + Editor Editor - + Update Actualizar - + Plugins Extensões - + Misc Misto - + + Hotkeys + + + + Terminal Terminal @@ -4389,22 +4987,22 @@ Isto reverte a submissão %2. ShowTool - + Finder - + Explorer - + Default File Browser - + Show in %1 Mostrar em %1 @@ -4412,14 +5010,14 @@ Isto reverte a submissão %2. SideBar - + Close Fechar - - + + Remove Remover @@ -4444,57 +5042,57 @@ Isto reverte a submissão %2. Abrir repositório - + Initialize New Repository Inicializar novo repositório - + Add %1 Account Adicionar conta %1 - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>Tem a certeza de que deseja remover a associação ao repositório remoto para %1?</p><p>O clone local clone não será afectado.</p> - + Remove Repository Association? Remover associação ao repositório? - + Clear All Recent Limpar todos os recentes - + Show Full Path Mostrar caminho completo - + Filter Non-existent Paths Filtrar caminhos não existentes - + Refresh Remote Accounts Actualizar contas remotas - + Show Full Name Mostrar nome completo - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>Tem a certeza de que deseja remover a conta %1 para "%2"?</p><p>Só a associação da conta será removida. Configurações remotas e clones locais não serão afectados.</p> - + Remove Account? Remover conta? @@ -4502,108 +5100,108 @@ Isto reverte a submissão %2. StartDialog - + Choose Repository Escolher repositório - + Understand your history! Compreender o seu histórico! - + Clone Repository Clonar repositório - + Open Existing Repository Abrir repositório existente - + Open Repository Abrir repositório - + Initialize New Repository Inicializar novo repositório - + Clear All Limpar todos - + Show Full Path Mostrar caminho completo - + Filter Non-existent Paths Filtrar caminhos não existentes - + Repositories: Repositórios: - + Refresh Actualizar - + Show Full Name Mostrar nome completo - + Remote: Remoto: - + View Getting Started Video Ver vídeos de aprendizagem - + Clone Clonar - + Open Abrir - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>Tem a certeza de que deseja remover a conta %1 para "%2"?</p><p>Só a associação da conta será removida. Configurações remotas e clones locais não serão afectados.</p> - + Remove Account? Remover conta? - - + + Remove Remover - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>Tem a certeza de que deseja remover a associação ao repositório remoto para %1?</p><p>O clone local clone não será afectado.</p> - + Remove Repository Association? Remover associação ao repositório? @@ -4611,7 +5209,7 @@ Isto reverte a submissão %2. SubmoduleTableModel - + Name Nome @@ -4621,32 +5219,32 @@ Isto reverte a submissão %2. URL - + Branch Ramo - + Initialized Inicializado - + Deinitializing '%1' will remove its working directory. Are you sure you want to deinitialize? Desinicializar "%1" removerá a sua pasta de trabalho. Tem a certeza de que o deseja fazer? - + Deinitialize Submodule? Desinicializar sub-módulo? - + The submodule working directory contains uncommitted changes that will be lost if you continue. A pasta de trabalho do sub-módulo contém alterações não submetidas que serão perdidas se continuar. - + Deinitialize Desinicializar @@ -4680,31 +5278,107 @@ Isto reverte a submissão %2. Anotado - + Name Nome + + TemplateDialog + + + Name + Nome + + + + Content + + + + + + Add + + + + + use %1 to declare the position of the cursor. + + + + + use ${files:x} to add all updated file names, +x (number) determines the number of maximum files shown + + + + + Remove + Remover + + + + Up + + + + + Down + + + + + Import + + + + + Export + + + + + Open File + + + + + + Gittyup Templates (*%1) + + + + + Save Templates + + + + + Replace + Substituir + + TerminalPanel - - + + Install Instalar - + Name: Nome: - + Location: Localização: - + Uninstall Desinstalar @@ -4712,32 +5386,32 @@ Isto reverte a submissão %2. TextEdit - + Replace... - + Replace All... - + Ignore Ignorar - + Ignore All - + Add to User Dictionary - + Do not Ignore @@ -4745,111 +5419,154 @@ Isto reverte a submissão %2. ThemeDialog - Native Theme - Tema nativo + Tema nativo - + A flexible look matching system colors Um aspecto flexível com as cores do sistema - + Dark Theme Tema escuro - + + Pick a theme for Gittyup + + + + + Default Theme + + + + + A consistent bright theme + + + + A consistent look optimal for reducing eye strain Um aspecto consistente optimizado para reduzir a fadiga da vista + + + System Theme + + ToolBar - + Show repository sidebar Mostrar barra lateral do repositório - + Previous Anterior - + Next Seguinte - + Fetch Obter - + Pull Puxar - + Merge Unir - + Rebase Rebasear - + Push Enviar - + Checkout Mudar - + Stash Ocultar - + Pop Stash Aplicar e limpar - + + Open Terminal + + + + + Open file manager + + + + Configure Settings Configurar definições + + + Repository settings + + - + Application settings + + + + + Show Log Mostrar diário - - Diff View - Vista de comparação + + Double Tree View + - + Diff View + Vista de comparação + + + Tree View Vista em árvore - + Show Starred Commits Mostrar submissões com estrela - + Hide Log Ocultar diário @@ -4857,32 +5574,42 @@ Isto reverte a submissão %2. ToolsPanel - + Keep backup of merge files (.orig) Manter salvaguarda dos ficheiro de união (.orig) - + External editor: Editor externo: - + External diff: Comparação externa: - + External merge: União externa: - + Backup files: Ficheiros de salvaguarda: - + + Terminal emulator command: + + + + + File manager command: + + + + Configure Configurar @@ -4890,20 +5617,77 @@ Isto reverte a submissão %2. TreeModel - + Submodule Sub-módulo + + TreeView + + + Directory + Pasta + + + + File + Ficheiro + + + + Remove or discard %1? + + + + + Are you sure you want to remove or discard all changes in '%1'? + + + + + This action cannot be undone. + Esta acção não pode ser desfeita. + + + + + Discard + Descartar + + + + discard + descartar + + + + TreeWidget + + + Search: + + + + + Regex + + + + + Case Sensitive + + + UpToDateDialog - + Already Up-to-date Já está actualizado - + %1 is already up-to-date. You have version %2. %1 já está actualizado. Tem a versão %2. @@ -4911,55 +5695,76 @@ Isto reverte a submissão %2. UpdateDialog - + Update %1 Actualizar %1 - + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. The new version will be soon available in your package manager. Just update your system.</p><b>Release Notes:</b> + + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. Would you like to download it now?</p><b>Release Notes:</b> <h3>Está disponível uma nova versão de %1!</h3><p>%1 %2 está disponível - tem a %3. Deseja transferi-la agora?</p><b>Notas de lançamento:</b> - + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3.</p><p>If you downloaded the flatpak package over a package manager or from flathub.org <br/>you don't have to install manually a new version. It will be available within the next <br/>days during your system update: <code>flatpak update</code></p><b>Release Notes:</b> + + + + Automatically download and install updates Transferir e instalar actualizações automaticamente - + Install Update Instalar actualização - + Remind Me Later Lembrar-me mais tarde - + Skip This Version Ignorar esta versão + + + Ok + + + + + Donate + + UpdatePanel - + Check for updates automatically Procurar actualizações automaticamente - + Automatically download and install updates Transferir e instalar actualizações automaticamente - + Check Now Procurar agora - + Software Update: Actualização do programa: @@ -4967,17 +5772,17 @@ Isto reverte a submissão %2. UpdateSubmodulesDialog - + Recursive Recursiva - + Init Inicializar - + Update Actualizar @@ -4985,7 +5790,7 @@ Isto reverte a submissão %2. Updater - + Installer failed to start Falha ao iniciar o instalador @@ -5006,47 +5811,53 @@ Isto reverte a submissão %2. - + + Helper application failed to start Falha ao iniciar a aplicação de ajuda - + Update Failed Falha ao actualizar - + Unable to check for updates Impossível procurar actualizações - + Unable to download update Impossível transferir a actualização - + Unable to open temporary file Impossível abrir o ficheiro temporário - + Unable to install update Impossível instalar a actualização - - Some windows failed to close - Algumas janelas falharam ao fechar + + Some windows failed to close. You can download the binary manually from %1 + - + Some windows failed to close + Algumas janelas falharam ao fechar + + + Unknown install error Erro de instalação desconhecido - + + Installer script failed: %1 Falha no script de instalação: %1 @@ -5054,94 +5865,139 @@ Isto reverte a submissão %2. WindowPanel - + Add New Theme Adicionar novo tema - + Edit Current Theme Editar o tema actual - + Create Theme Criar tema - + Theme Name Nome do tema - + Restart? Reiniciar? - + The application must be restarted for the theme change to take effect. A aplicação tem de reiniciar para aplicar as alterações ao tema. - + Do you want to restart now? Deseja reiniciar agora? - + Restart Reiniciar - + Later Mais tarde - + Show full repository path Mostrar caminho completo do repositório - + Hide automatically Ocultar automaticamente - + Open submodules in tabs Abrir sub-módulos em separadores - + Open all repositories in tabs Abrir todos os repositórios em separadores - + + Hide Menubar + + + + + Show Avatars + + + + Theme: Tema: - + Title: Título: - + Log: Diário: - + Tabs: Separadores: - + + View: + + + + Prompt: Pedir: + + _FileWidget::Header + + + + Use Theirs: Delete + + + + + + Use Ours: Delete + + + + + both: %1 + + + + + ours: %1 + + + + + theirs: %1 + + + diff --git a/l10n/gittyup_pt_BR.ts b/l10n/gittyup_pt_BR.ts index e37e5ded..70eb6c77 100644 --- a/l10n/gittyup_pt_BR.ts +++ b/l10n/gittyup_pt_BR.ts @@ -4,64 +4,72 @@ AboutDialog - + About %1 Informações referente a remoção. Sobre %1 - + Understand your history! Entenda a história da aplicação. Entenda sua história! - + Changelog Log com as alterações. Log de alterações - + Acknowledgments Agradecimentos. Agradecimentos - + Privacy Informações referente a privacidade. Privacidade - Usage reporting has been disabled. Restart the application for changes to take effect. Relatório de uso foi desativado. - Os relatórios de uso foram desativados. Reinicie o aplicativo para que as alterações entrem em vigor. + Os relatórios de uso foram desativados. Reinicie o aplicativo para que as alterações entrem em vigor. - Usage Reporting Disabled Relatório de uso desativado. - Relatório de uso desativado + Relatório de uso desativado Account - + + Connection failed + Falha na conexão + + + <b>Note:</b> Basic authentication is not supported if you have two-factor authentication enabled. Use a <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>personal access token</a> in the password field instead. Informações sobre autenticação não suportada e solução para o problema. <b>Nota:</b> A autenticação básica não é suportada se você tiver a autenticação de dois fatores ativada. Use um <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>token de acesso pessoal</a> no campo de senha. - + + <b>Note:</b> Only Basic authentication is currently supported + + + + <b>Note:</b> Basic authentication is not supported. Use a <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>personal access token</a> in the password field instead. Informações sobre autenticação não suportada e solução para o problema. <b>Nota:</b> A autenticação básica não é suportada. Use um <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>token de acesso pessoal</a> no campo de senha. - + Authentication failed Houve falha na autenticação. Falha na autenticação @@ -70,7 +78,7 @@ AccountDialog - + Add Remote Account Adiciona conta remota. Add Conta remota @@ -106,37 +114,37 @@ URL: - + Replace? Substitui. Substituir? - + An account of this type already exists. Informe de conta já existente. Uma conta desse tipo já existe. - + Would you like to replace the previous account? Informe de substituição de conta. Deseja substituir a conta anterior? - + Replace Substituir. Substituir - + Cancel Cancelar Cancelar - + Connection Failed Houve falha na conexão. Falha na conexão @@ -145,20 +153,20 @@ AddRemoteDialog - - + + Add Remote Adiciona repositório remoto. Add Remoto - + Name: Nome. Nome: - + URL: Endereço web. URL: @@ -167,7 +175,7 @@ AdvancedButton - + Advanced Search Efetua uma busca avançada. Busca avançada @@ -176,259 +184,303 @@ AdvancedSearchWidget - + Author: Autor Autor: - + Author name Nome do autor. Nome do autor - + Email: E-mail E-mail: - + Author email E-mail do autor E-mail do autor - + Message: Mensagem Mensagem: - + Commit message Mensagem do commit. Mensagem do commit - + Date: Data... Data: - + Specific commit date Data exata do commit. Data específica do commit - + After: Commit após determinada data. Após: - + Commits after date Commit após determinada data. Commits após a data - + Before: Commit antes da data. Antes: - + Commits before date Commits antes da data Commits antes da data - + File: Arquivo... Arquivo: - + File name Nome do arquivo Nome do arquivo - + Path: Caminho... Caminho: - + File path Caminho do arquivo. Caminho do arquivo - + Scope: Escopo... Escopo: - + Hunk header text Pedaço de testo do cabeçalho. Pedaço de testo do cabeçalho - + Context: Contexto... Contexto: - + Diff context (white) Comparação, contexto (branco). Diff contexto (branco) - + Addition: Acrescentado... Acrescentado: - + Diff addition (green) Comparação, acrescentado (verde). Diff acrescentado (verde) - + Deletion: Removido... Removido: - + Diff deletion (red) Comparação, removido (Vermelho)... Diff removido (vermelho) - + Comment: Comentário... Comentário: - + Source code comment Comentário do código fonte... Comentário do código fonte - + String: String... String: - + Source code string literal Código fonte string literal. Código fonte string literal - + Identifier: Identificador... Identificador: - + Source code identifier ID do código fonte... Identificador do código fonte - + Search Buscar... Buscar - + Return Retorno... Retorno + + AmendDialog + + + Author + + + + + Committer + + + + + Commit Message: + + + + + Amend + + + + + Cancel + Cancelar + + Application - + SSL Errors Erros SSL... Erros SSL - + Failed to set up SSL session. Do you want to ignore these errors? Confirme para ignorar os erros. Falha ao configurar a sessão SSL. Deseja ignorar esses erros? + + AuthorCommitterDate + + + Author/Committer: + + + + + Author: + + + + + Committer: + + + Beanstalk - Connection failed Houve falha na conexão. - Falha na conexão + Falha na conexão Bitbucket - Connection failed Houve falha na conexão. - Falha na conexão + Falha na conexão BlameEditor - + Untitled Não há título... Sem título - + Not Tracked Não rastreado... Não rastreado - + HEAD Cabeçalho... HEAD - + Working Copy Cópia de trabalho... Cópia de trabalho - + Save File Salva o arquivo... Salvar arquivo @@ -437,13 +489,13 @@ BlameMargin - + Not Committed Não comitado... Não comitado - + Invalid Signature Assinatura inválida... Assinatura inválida @@ -452,19 +504,19 @@ BranchTableModel - + Name Nome... Nome - + Upstream Branch acima ou espelho (remoto)... Upstream - + Rebase Rebase... Rebase @@ -473,19 +525,19 @@ CheckoutDialog - + Detach HEAD Separa do cabeçalho... Separar HEAD - + References: Referências... Referências: - + Checkout Verificação de saída... Checkout @@ -494,7 +546,7 @@ ClearButton - + Clear Limpar... Limpar @@ -503,37 +555,37 @@ CloneDialog - + Initialize Repository Inicializa um repositório git no diretório especificado (cria repositório git). Inicializar repositório - + Clone Repository Clona o repositório especificado. Clonar repositório - + Initialized empty repository into '%1' Inicializa um repositório vazio no diretório específicado. Repositório vazio inicializado. em %1 - + Cloned repository from '%1' into '%2' Clona um repositório para um diretório específico. Repositório clonado de %1 em %2 - + Initialize Inicializar... Inicializar - + Clone Clonar... Clonar @@ -542,38 +594,38 @@ ClonePage - + Clone Progress Progresso do clone... Progresso do clone - + The new repository will open after the clone finishes. Informe de ação após a conclusão do clone. O novo repositório será aberto após a conclusão do clone. - + Clone Clonar... Clonar - - + + clone clonar... clonar - + Clone canceled. O clone foi cancelado... Clone cancelado. - + Failed to %1 into '%2' - %3 Falha durante o clone. Falha para %1 em %2 - %3 @@ -582,31 +634,31 @@ CommitDetail - + Copy Efetua uma cópia... Copiar - + Range: Ordem... Ordem: - + Id: Id de indentificação. Id: - + initial commit Commit inicial... Commit inicial - + Parents: Pais... Pais: @@ -674,142 +726,203 @@ CommitEditor - + + T + + + + <b>Commit Message:</b> Mensagem que irá ser apresentada nas alterações referente a esse commit. <b>Mensagem do Commit:</b> - - + + Spell Check Language Idioma da verificação ortográfica... Verificação ortográfica - + The dictionary '%1' is invalid O dicionário '%1' é inválido... O dicionário '%1' é inválido - + Spell checking is disabled. A verificação ortográfica está desativada... A verificação ortográfica está desativada. - + The choosen dictionary '%1.dic' is not a valid hunspell dictionary. O dicionário escolhido '%1.dic' não é um dicionário hunspell válido... O dicionário escolhido '%1.dic' não é um dicionário hunspell válido. - - + + Invalid dictionary '%1.dic' Dicionário inválido '%1.dic'... Dicionário inválido '%1.dic' - + Edit User Dictionary Editar dicionário do usuário... Editar dicionário do usuário - + Stage All Adiciona as modificações na staging área... Add as modificações a staging área - + Unstage All Remove todas as alterações da staging área... Remover as modificações da staging área - - + + Commit Confirma as alterações... Commitar - + + Abort rebasing + + + + + Continue rebasing + + + + + Abort Merge + Abortar merge + + + + %1 + + + + + %1 and %2 + + + + + %1, %2, and %3 + + + + + Merge + + + + + Revert + Reverter + + + + Cherry-pick + + + + + Rebase + Rebase + + + + Abort %1 + Abortar %1 + + + + Commit Rebase + + + Update %1 Comentário padrão para o commit... - Modificações efetuadas em: %1 + Modificações efetuadas em: %1 - Update %1 and %2 Modificações efetuadas em %1 e %2 - Modificações efetuadas em %1 e %2 + Modificações efetuadas em %1 e %2 - Update %1, %2, and %3 Modificações efetuadas em %1, %2 e %3 - Modificações efetuadas em %1, %2 e %3 + Modificações efetuadas em %1, %2 e %3 - Update %1, %2, and %3 more files... Modificações efetuadas em %1, %2 e %3 outros arquivos... - Modificações efetuadas em %1, %2 e %3 outros arquivos... + Modificações efetuadas em %1, %2 e %3 outros arquivos... - + Nothing staged Não há nada stagiado. Nada preparado - + %1 of %2 file staged Adicionando arquivo na stage área. %1 de %2 arquivo preparado - + %1 of %2 files staged Adicionando arquivos na stage área. %1 de %2 arquivos preparados - + %1 file partially staged Preparando arquivo na stage área. %1 arquivo parcialmente preparado - + %1 files partially staged Preparando arquivos na stage área. %1 arquivos parcialmente preparados - + %1 unresolved conflict Há conflito não resolvido. %1 conflito não resolvido - + %1 unresolved conflicts Há conflitos não resolvidos. %1 conflitos não resolvidos - + all conflicts resolved Conflitos resolvidos. Todos os conflitos foram resolvidos - + Commit Merge Confirmar a Mesclagem... Commit Merge @@ -818,135 +931,152 @@ CommitList - + Remove Untracked Files Remover arquivos não rastreados Remover arquivos não rastreados - + Apply Apply, deixa na lista de stash para possível reutilização posterior. Aplique - + Pop Joga fora o stash (mais alto, por padrão) depois de aplicá-lo. Pop - + Drop Remove um único estado escondido da lista de stash depois de aplica-lo, stash do topo da árvore de trabalho. Drop - + Unstar Unstar, remove estrela do repositório selecionado. Desmarcar Estrela - + Star Star, marca com estrela o repositório selecionado. Marcar com Estrela - + Add Tag... Adiciona uma Tag. Add Tag... - + New Branch... Cria um novo Branch. Novo Branch... - Delete Tag %1 Deleta a Tag específicada. - Deletar Tag %1 + Deletar Tag %1 - Delete Branch %1 Remove o Branch especificado. - Deletar Branch %1 + Deletar Branch %1 - + + Rename Branch + + + + + Delete Branch + + + + + Delete Tag + Deletar Tag + + + Merge... Mescla o Branch atual no Branch específicado, cria sempre um commit referente a mesclagem. Merge... - + Rebase... Isso move toda a ramificação de recurso para começar na ponta da ramificação específicada, mas em vez de usar um commit de mesclagem, o rebase reescreve o histórico do projeto criando commits totalmente novos para cada commit na ramificação original, diferenciando-se do (Merge) que gera um commit da mesclagem. Rebase... - + Squash... Efetua um merge com o parâmetro --squash... Merge --squash... - + Revert Revert, a operação de reversão vai pegar o commit especificado, inverter as alterações dele e criar um "commit de reversão" novo. Os indicadores de referência são então atualizados para apontar para o commit de reversão novo, tornando o commit na ponta do branch. Reverter - + Cherry-pick (Cherry-pick) Anexa o commit selecionado no branch atual. (Cherry-pick) Coletar-commit - - - + + Checkout %1 Verifica o branch pai e atualiza o branch local. Checkout %1 - + + Checkout + Checkout + + + Local branch is already checked out O Branch local já foi verificado na saída. O Branch local já está verificado na saída - + This is a bare repository Este é um repositório vazio. Este é um repositório vazio - + Reset Reset é um comando poderoso usado para desfazer alterações locais no estado de um repositório Git. O git reset opera nas "três árvores do Git". Resetar - + Soft Atualiza os indicadores de ref e a redefinição para aí. Soft - + Mixed Os indicadores de ref são atualizados. O Índice de staging é redefinido para o estado da confirmação especificada. Mixed - + Hard Os indicadores de ref do Histórico de confirmações são atualizados para a confirmação especificada. Então, o Índice de staging e o Diretório de trabalho são redefinidos para corresponder à confirmação especificada. Hard @@ -955,13 +1085,13 @@ CommitModel - + Uncommitted changes Alterações não confirmadas Alterações não confirmadas - + Checking for uncommitted changes Verificando alterações não confirmadas Verificando alterações não confirmadas @@ -970,151 +1100,188 @@ CommitToolBar - + Show All Branches Mostra todas as ramificações. Mostrar todas as ramificações - + Show Selected Branch Mostra a ramificação selecionada. Mostrar ramificação selecionada - + Sort by Date Classificar por data Classificar por data - + Sort Topologically Ordenar topologicamente Ordenar topologicamente - + Show Graph Mostrar gráfico Mostrar gráfico - + Show Clean Status Mostrar status da limpeza Mostrar status da limpeza - + Compact Mode Modo compacto Modo compacto + + + Show Author + + + + + Show Date + + + + + Show Id + + ConfigDialog - + Esc Esc Esc - + General Geral Geral - + Diff Realiza uma função de comparação nas fontes de dados Git. Diff - + Remotes Remotos Remotos - + Branches Ramificações Ramificações - + Submodules Submódulos Submódulos - + Search Procurar... Procurar - + Plugins Plugins Plugins - + LFS Armazenamento de arquivos grandes... LFS - + Edit Config File... Editar arquivo de configuração ... Editar arquivo de configuração... + + DateSelectionGroupWidget + + + Datetime source + + + + + Current + + + + + Manual + + + + + Original + + + DefaultWidget - + Clone repository Clonar repositório Clonar repositório - + Open existing repository Abrir repositório existente Abrir repositório existente - + Open Repository Abrir Repositório Abrir Repositório - + Initialize new repository Iniciar novo repositório Iniciar novo repositório - + Add %1 account Adicionar %1 conta Add %1 conta - View getting started videos Vê vídeos de introdução - Vê vídeos de introdução + Vê vídeos de introdução - + Contact us for support Entre em contato conosco para suporte Entre em contato conosco para suporte @@ -1123,55 +1290,55 @@ DeleteBranchDialog - + Are you sure you want to delete local branch '%1'? Tem certeza de que deseja excluir o Branch local '%1'? Tem certeza de que deseja excluir o Branch local '%1'? - + Delete Branch? Deleta o Branch. Deletar Branch? - + Also delete the upstream branch from its remote Removerá também o branch remoto o qual faz referência a esse Branch. Remova também o Branch remoto desta ramificação - + Delete Deletar Deletar - + delete '%1' from '%2' Excluir '%1' de '%2' Excluir '%1' de '%2' - + Push Envia as alterações para a ramificação pai. Push - + Push canceled. O Push foi cancelado. Push cancelado. - + Unable to push to %1 - %2 Não foi possível enviar para %1 - %2 Não foi possível enviar para %1 - %2 - + The branch is not fully merged. Deleting it may cause some commits to be lost. O Branch não está totalmente mesclado. A exclusão pode causar a perda de alguns commits. O Branch não está totalmente mesclado. A exclusão pode causar a perda de alguns commits. @@ -1180,65 +1347,90 @@ DeleteTagDialog - + Are you sure you want to delete tag '%1'? Exclui a referida Tag. Tem certeza de que deseja excluir a tag '%1'? - + Delete Tag? Deleta a referida Tag. Deletar Tag? - + Also delete the upstream tag from %1 Exclui a referida Tag e a Tag pai. Exclua também a Tag pai de %1 - + Delete Deletar Deletar - + delete '%1' from '%2' Deletar '%1' de '%2' deletar '%1' de '%2' - + Push Envia para o ramo remoto. Push - + Push canceled. o Push foi cancelado. Push cancelado. - + Unable to push to %1 - %2 Não foi possível enviar para %1 - %2 - + Delete Tag Deleta a Tag Deletar Tag - + delete tag Deleta a Tag. deletar tag + + DetailView + + + + Author: + Autor: + + + + reset + + + + + Here you can set the author used for committing +These settings will not be saved permanently + + + + + Email: + E-mail: + + DiffPanel @@ -1278,19 +1470,19 @@ Arquivos adicionados - + Deleted files Arquivos excluídos Arquivos excluídos - + Whitespace: Espaço em branco. Espaço em branco: - + Auto Collapse: Recolhe automaticamente. Recolher automaticamente: @@ -1299,49 +1491,95 @@ DiffTool - + External Diff Efetua uma comparação externa. Diff externa + + DiffTreeModel + + + Submodule + Submódulo + + DiffView - + Add new file Adiciona novo arquivo. Adicionar novo arquivo - + Or drag files here to copy into the repository Arraste os arquivos para copiar para o repositório. Ou arraste os arquivos aqui para copiar para o repositório + + DoubleTreeWidget + + + Blame + + + + + Show Blame Editor + + + + + Diff + Diff + + + + Show Diff View + Mostrar comparação + + + + Single Tree View + + + + + List View + + + + + Hide Untracked Files + + + DownloadDialog - + Update %1 Atualizar... Atualizar %1 - + Downloading %1... Baixando %1... Baixando %1... - + Download Complete! Download completo. Download completo! - + Install and Restart Instalar e reiniciar Instalar e reiniciar @@ -1350,19 +1588,19 @@ EditButton - + Edit Working Copy Editar cópia de trabalho... Editar cópia de trabalho - + Edit New Revision Editar Nova Revisão... Editar Nova Revisão - + Edit Old Revision Editar Revisão Antiga... Editar Revisão Antiga @@ -1371,7 +1609,7 @@ EditTool - + Edit in External Editor Edita no editor externo. Editar no editor externo @@ -1380,55 +1618,55 @@ EditorPanel - + Tabs Separadores Separadores - + Spaces Espaços Espaços - + Show heat map Mostrar mapa de calor. Mostrar mapa de calor - + Font: Fonte. Fonte: - + Font size: Tamanho da fonte. Tamanho da fonte: - + Indent using: Recuo... Recuar usando: - + Indent width: Largura do recuo. Largura do recuo: - + Tab width: Largura da guia. Largura da guia: - + Blame margin: Margem de culpa. Margem de culpa: @@ -1437,13 +1675,13 @@ EditorWindow - + '%1' has been modified. Do you want to save your changes? Salva as alterações. '%1' foi modificado. Você quer salvar suas mudanças? - + Save Changes? Salva as alterações. Salvar alterações? @@ -1452,25 +1690,25 @@ ExternalToolsDialog - + Configure External Tools Configura ferramentas externas. Configurar ferramentas externas - + Detected Tools Ferramentas detectadas. Ferramentas detectadas - + User Defined Tools Ferramentas definidas pelo usuário. Ferramentas definidas pelo usuário - + Select Executable Seleciona o executável. Selecionar executável @@ -1479,19 +1717,19 @@ ExternalToolsModel - + Name Nome. Nome - + Command Comando. Comando - + Arguments Argumentos. Argumentos @@ -1500,200 +1738,276 @@ FileContextMenu - + Revision Not Found Revisão não foi encontrada. Revisão não encontrada - + The selected file doesn't have a %1 revision. O arquivo selecionado não possui revisão. O arquivo selecionado %1 não possui uma revisão. - + Bash Not Found O Bash não foi encontrado. Bash não encontrado - + Bash was not found on your PATH. O Bash não foi encontrado no seu PATH. O Bash não foi encontrado no seu PATH. - + Bash is required to execute external tools. O Bash é necessário para executar ferramentas externas. O Bash é necessário para executar ferramentas externas. - + Stage Stage área. Stage - + Unstage Unstage. Unstage - - + + Discard Changes Descartar mudanças. Descartar mudanças - + Discard Changes? Descarta mudanças. Descartar mudanças? - + Are you sure you want to discard changes in the selected files? Confirmação de descarte de alterações. Tem certeza de que deseja descartar as alterações nos arquivos selecionados? - + This action cannot be undone. Essa ação não pode ser desfeita. Essa ação não pode ser desfeita. - + + (Submodule) + + + + %1 files %1 arquivos %1 arquivos - + Discard Descarta as alterações. Descartar - + discard Descarta as alterações... descartar - + Remove Untracked Files Remove arquivos não rastreados. Remover arquivos não rastreados - + Ignore Ignora. Ignorar - + Checkout Checkout Checkout - + Unlock Desbloqueia. Desbloquear - + Lock Bloqueia. Bloquear - + Copy File Name Copia nome do arquivo. Copiar nome do arquivo - + Filter History Filtra o histórico. Filtrar histórico - + Navigate to Navega entre revisões. Navegar para - + Next Revision Vai para a próxima revisão. Próxima revisão - + next Próxima revisão. próxima - + Previous Revision Vai para a revisão anterior. Revisão anterior - + previous Revisão anterior. anterior - + Unset Executable Desativa executável. Desativar executável - + Set Executable Define executável Definir executável - + + Save Selected Version as ... + + + + + Select new file directory + + + + + Saving files + + + + + Saving files of selected version to disk + + + + + Save file + + + + + Invalid Blob + + + + + Open this version + + + + + Opening file + + + + + Open + + + + + open file + + + + + Blob is invalid. + + + + + + Unable to checkout bare repositories + + + + + Unable to open files from bare repository + + + + + The file is already in the current working directory + + + + edit Edita. editar - + diff Compara fontes de dados. diff - + merge Mescla ramificações. merge - + External Tool Not Found Não foi encontrada a ferramenta externa. Ferramenta externa não encontrada - + Failed to execute external %1 tool. Houve falha na execução da ferramenta externa. Falha ao executar a ferramenta %1 externa. @@ -1702,225 +2016,209 @@ FileList - Sort By Ordernar por... - Ordenar por + Ordenar por - Select Selecionar... - Selecionar + Selecionar - Name Nome... - Nome + Nome - Status Status... - Status + Status - Ignore Whitespace (-w) Ignorar espaço em branco (-w) - Ignorar espaço em branco (-w) + Ignorar espaço em branco (-w) - Added Adicionado... - Adicionado + Adicionado - Deleted Deletado... - Deletado + Deletado - Modified Modificado... - Modificado + Modificado - Renamed Renomeado... - Renomeado + Renomeado - Copied Copiado... - Copiado + Copiado - Ignored Ignorado... - Ignorado + Ignorado - Untracked Não rastreado... - Não rastreado + Não rastreado - Unreadable Ilegível... - Ilegível + Ilegível - Conflicted Conflitado... - Conflitado + Conflitado - Unmodified Não modificado... - Não modificado + Não modificado - Type Change Alteração de tipo... - Alteração de tipo + Alteração de tipo FileWidget - + LFS Large Storage File... LFS - - + + Unlock Desbloquear... Desbloquear - - + + Lock Bloquear... Bloquear - - + + Show Object Mostrar Objeto... Mostrar Objeto - + Edit File Editar arquivo... Editar arquivo - + Discard File Descartar arquivo Descartar arquivo - + Directory Diretório... Diretório - + File Arquivo... Arquivo - + Remove %1? Remoção... Remover %1? - + Discard Changes? Descarta mudanças... Descartar mudanças? - + Are you sure you want to remove '%1'? Confirmação de remoção... Tem certeza de que deseja remover '%1'? - + Are you sure you want to discard all changes in '%1'? Confirmação de descarte de alteração... Tem certeza de que deseja descartar todas as alterações em '%1'? - + This action cannot be undone. Informe de que ação não pode ser desfeita. Essa ação não pode ser desfeita. - + Remove %1 Remoção... Remover %1 - + Discard Changes Descarta mudanças... Descartar mudanças - + Discard Descarta... Descartar - + discard Descarta... descartar - - + + Collapse File Recolher arquivo... Recolher arquivo - - + + Expand File Expande arquivo... Expandir arquivo - + Show Pointer Mostrar ponteiro... Mostrar ponteiro @@ -1929,37 +2227,37 @@ FindWidget - + Search Procurar... Procurar - + Done Feito... Feito - + Esc Esc... Esc - + Not found Não encontrado... Não encontrado - + %1 match Correspondência... %1 correspondência - + %1 matches Partidas... %1 partidas @@ -1968,135 +2266,149 @@ GeneralPanel - - + + Fetch every Buscar todos... Buscar todos - - + + minutes minutos... minutos - - + + Push after each commit Enviar após cada confirmação Enviar após cada confirmação - - Update submodules after pull Atualizar submódulos após pull - Atualizar submódulos após pull + Atualizar submódulos após pull - - + + Prune when fetching Encurtar ao buscar... Encurtar ao buscar - + No translation Sem tradução... Sem tradução - + Store credentials in secure storage Armazena credenciais em armazenamento seguro... Armazenar credenciais em armazenamento seguro - Allow collection of usage data Permiti coleta de dados de uso... - Permitir coleta de dados de uso + Permitir coleta de dados de uso - + + + Update submodules after pull and clone + + + + <a href='view'>View privacy policy</a> Visualizar política de privacidade... <a href='view'>Ver política de privacidade</a> - - + + User name: Nome do usuário... Nome do usuário: - - + + User email: E-mail do usuário... E-mail do usuário: - - + + Automatic actions: Ações automáticas... Ações automáticas: - + + Language: Idioma... Idioma: - + Credentials: Credenciais... Credenciais: - + + Credential store type: + + + + + Only allow a single running instance + + + + + Single instance: + + + Usage reporting: Relatório de uso... - Relatório de uso: + Relatório de uso: GitHub - Connection failed Houve falha na conexão... - Falha na conexão + Falha na conexão - Failed to authenticate with GitHub! Falha na tentativa de autenticação com o GitHub! - Falha na tentativa de autenticação com o GitHub! + Falha na tentativa de autenticação com o GitHub! - Successfully authenticated with GitHub! Autenticação realizada com sucesso no GitHub! - Autenticação realizada com sucesso no GitHub! + Autenticação realizada com sucesso no GitHub! GitLab - Connection failed Falha na conexão - Falha na conexão + Falha na conexão - + Authentication failed Falha na autenticação... Falha na autenticação @@ -2105,7 +2417,7 @@ Header - + Filter %1 Filtro... Filtra %1 @@ -2114,133 +2426,202 @@ HostModel - + Connecting Conectando... Conectando + + HotkeyModel + + + Action + + + + + Keys + + + HunkWidget - + + Save Salvar... Salvar - + + Undo Desfazer... Desfazer - + + Use Ours Use o meu... Use o meu - + + Use Theirs Use o outro... Use o outro - + Edit Hunk Editar alteração(ões)... Editar alteração(ões) - - + Discard Hunk Descarta alteração(ões)... Descartar alteração(ões) - - Discard Hunk? - Confirmação para descarte das alterações. - Descartar alteração(ões)? + + Discard selected lines? + - + + Are you sure you want to discard the changes in hunk from line %1 to %2 in '%3'? + + + + + Discard selected lines + + + + Discard Hunk? + Confirmação para descarte das alterações. + Descartar alteração(ões)? + + + Are you sure you want to remove '%1'? Confirmação de remoção... Tem certeza de que deseja remover '%1'? - Are you sure you want to discard the hunk starting at line %1 in '%2'? Confirmação de descarte... - Tem certeza de que deseja descartar as alterações inicianda na linha %1 em '%2'? + Tem certeza de que deseja descartar as alterações inicianda na linha %1 em '%2'? - + This action cannot be undone. Informe de que a ação naõ pode ser desfeita... Essa ação não pode ser desfeita. - - + + Collapse Hunk Recolhe trecho alterado... Recolher alteração(ões) - - + + Expand Hunk Expande trecho alterado... Expandir alteração(ões) - + Esc Esc... Esc - + Fix Resolve problema... Resolver - + Edit Editar... Editar - + No newline at end of file Informe de que não há nenhuma nova linha no final do arquivo... Nenhuma nova linha no final do arquivo + + IgnoreDialog + + + Ignore Pattern + + + Images - + <b>Size:</b> %1 Tamanho... <b>Tamanho:</b> %1 + + InfoBox + + + Name: + Nome: + + + + Email: + E-mail: + + + + Commit date: + + + + + KeybindDialog + + + The selected key is the same for the following actions: +%1 + + + + + Please press the desired hotkey + + + LfsPanel - + Initialize LFS Inicializa LFS... Inicializar LFS - + Specify a glob pattern for tracking large files. Generally, large files are greater than 500kB, change frequently, @@ -2266,118 +2647,128 @@ Exemplos - + Pattern: Padrão... Padrão: - + Track Localizar... Localizar - + days dias... dias - + Fetch LFS objects from all references for the past Busca objetos LFS de todas as referências do passado... Buscar objetos LFS de todas as referências do passado - + reference days or dias de referência ou... dias de referência ou - + commit days commit dias... commit dias - + View Environment Exibir ambiente... Exibir ambiente - + git-lfs env (read only) git-lfs env (somente leitura) git-lfs env (somente leitura) - + Deinitialize LFS Desinicializar LFS... Desinicializar LFS - + Deinitialize LFS? Desinicializar LFS? Desinicializar LFS? - + Are you sure you want uninstall LFS from this repository? Tem certeza de que deseja desinstalar o LFS deste repositório? Tem certeza de que deseja desinstalar o LFS deste repositório? - + Deinitialize Desinicializar... Desinicializar - + Server URL: URL do servidor... URL do servidor: - + Prune Offset: Encurta deslocamento... Encurtar deslocamento: - + Fetch Recent: Busca recente... Buscar recente: - + Advanced: Avançado... Avançado: + + + Included patterns: + + + + + Excluded patterns: + + Location - + %1 | %2 %1 | %2 %1 | %2 - + NC NC NC - + Not Committed Não foi comitado... Não comitado @@ -2386,67 +2777,67 @@ Exemplos LocationPage - + Repository Location Localização do Repositório... Localização do Repositório - + Choose the name and location of the new repository. A new directory will be created if it doesn't already exist. Criação de novo repositório... Escolha o nome e o local do novo repositório. Um novo diretório será criado se ele ainda não existir. - + Initialize Inicializa... Inicializar - + Clone Clona o repositório... Clonar - + ... ... ... - + Choose Directory Escolha o diretório... Escolha o diretório - + Name: Nome... Nome: - + Directory: Diretório... Diretório: - + Advanced: Avançado... Avançado: - + Create a bare repository Cria um repositório vazio... Crie um repositório vazio - + The new repository will be created at:<p style='text-indent: 12px'><b>%1</b></p> Caminho do novo repositório... O novo repositório será criado em:<p style='text-indent: 12px'><b>%1</b></p> @@ -2455,7 +2846,7 @@ Exemplos LogView - + Copy Copia... Cópia @@ -2464,69 +2855,69 @@ Exemplos MainWindow - + Invalid Git Repository Repositório Git inválido... Repositório Git inválido - + %1 does not contain a valid git repository. %1 não contém um repositório git válido. %1 não contém um repositório git válido. - - + + %1 - %2 %1 - %2 %1 - %2 - + ahead: %1 à frente: %1 à frente: %1 - + behind: %1 atrás: %1 atrás: %1 - + up-to-date atualizado até à data... atualizado até à data - - + + %1 (%2) %1 (%2) %1 (%2) - + MERGING Mesclar... MESCLAR - + REVERTING Reverte... REVERTER - + CHERRY-PICKING Coleta o commit especificado no branch atual. COLETAR-COMMIT - + REBASING Mescla os commits do branch especificado no branch atual, colocando os commits do branch especificado antes dos commits do branch filho seguindo sua cadeia. REBASING @@ -2535,688 +2926,696 @@ Exemplos MenuBar - + File Arquivo... Arquivo - + New File Novo arquivo... Novo arquivo - + New Window Nova janela... Nova janela - Ctrl+Meta+N Ctrl+Meta+N - Ctrl+Meta+N + Ctrl+Meta+N - + Clone Repository... Clonar repositório... Clonar repositório... - Ctrl+Shift+N Ctrl+Shift+N - Ctrl+Shift+N + Ctrl+Shift+N - + Initialize New Repository... Cria novo repositório... Novo repositório... - Ctrl+Alt+N Ctrl+Alt+N - Ctrl+Alt+N + Ctrl+Alt+N - + Open Repository... Abre repositório... Abrir repositório... - + Open Repository Repositório aberto... Repositório aberto - + Open Recent Aberto recentemente... Aberto recentemente - + Close Fecha o repositório... Fechar - + Save Salva... Salvar - + Exit Sai... Sair - + Edit Editar... Editar - + Undo Desfaz... Desfazer - + Redo Refaz... Refazer - + Cut Corta... Cortar - + Copy Copia... Copiar - + Paste Cola... Colar - + Select All Selecionar tudo... Selecionar tudo - + Find... Procurar... Procurar... - + Find Next Encontre o próximo... Encontre o próximo - + Find Previous Encontre o anterior... Encontre o anterior - + Use Selection for Find Busca a partir do texto selecionado... Buscar a partir da seleção - - Ctrl+E - Ctrl+E - Ctrl+E + + Show Double Tree View + - + Ctrl+E + Ctrl+E + Ctrl+E + + + View Exibe... Exibir - + Refresh Atualiza... Atualizar - - + + Show Log Mostra o log... Mostrar log - - + + Normal + + + + + Maximize + + + + + Show Tree View Visualiza em árvore... Visualização em árvore - + + Hide Menu Bar + + + + Repository Repositório... Repositório - + Configure Repository... Configura o repositório... Configurar repositório... - + Stage All Coloca tudo na Stage Área... Add Tudo a Stage Área - Ctrl++ Ctrl++ - Ctrl++ + Ctrl++ - + Unstage All Remove todas as alterações da Stage Área... Remover Tudo da Stage Área - Ctrl+- Ctrl+- - Ctrl+- + Ctrl+- - + Commit Commita... Commitar - Ctrl+Shift+C Ctrl+Shift+C - Ctrl+Shift+C + Ctrl+Shift+C - + Amend Commit Emenda commit... Emendar commit - - Ctrl+Shift+A Combinação de tecla atalho... - Ctrl+Shift+A + Ctrl+Shift+A - + Git LFS Git LFS Git LFS - + Remove all locks Remove todos os bloqueios... Remover todos os bloqueios - + Initialize Inicializa... Inicializar - + Remote Remoto... Remoto - + Configure Remotes... Configura remoto... Configurar remotos... - + Fetch Buscar... Fetch - Ctrl+Shift+Alt+F Combinação de teclas atalhos... - Ctrl+Shift+Alt+F + Ctrl+Shift+Alt+F - + Fetch All Buscar tudo... Fetch tudo - Ctrl+Shift+Alt+A Combinação de teclas atalho... - Ctrl+Shift+Alt+A + Ctrl+Shift+Alt+A - + Fetch From... Buscar de... Fetch de... - Ctrl+Shift+F Combinação de teclas atalhos... - Ctrl+Shift+F + Ctrl+Shift+F - + Pull Puxar... Pull - Ctrl+Shift+Alt+L Combinação de teclas atalhos... - Ctrl+Shift+Alt+L + Ctrl+Shift+Alt+L - + Pull From... Puxar de... Pull de... - Ctrl+Shift+L Combinação de teclas atalhos... - Ctrl+Shift+L + Ctrl+Shift+L - + Push Puxar... Push - Ctrl+Shift+Alt+P Combinação de teclas atalhos... - Ctrl+Shift+Alt+P + Ctrl+Shift+Alt+P - + Push To... Enviar para... Push para... - Ctrl+Shift+P COmbinação de teclas atalhos... - Ctrl+Shift+P + Ctrl+Shift+P - + Branch Ramificação... Ramificação - + Configure Branches... Configurar ramificações... Configurar ramificações... - + New Branch... Nova ramificação... Nova ramificação... - + + Rename Branch + + + + Checkout Current Checkout, muda para o destino especificado... Checkout atual - Ctrl+Shift+Alt+H Combinação de teclas atalhos... - Ctrl+Shift+Alt+H + Ctrl+Shift+Alt+H - + Checkout... Muda para um destino especificado... Checkout... - Ctrl+Shift+H Combinação de teclas atalhos... - Ctrl+Shift+H + Ctrl+Shift+H - + Merge... Mescla ramificações... Mesclar... - Ctrl+Shift+M Combinação de teclas atalhos... - Ctrl+Shift+M + Ctrl+Shift+M - + Rebase... Mescla alocando os commits do branch pai antes das alterações do branch filho. Rebase... - Ctrl+Shift+R Combinação de teclas atalhos... - Ctrl+Shift+R + Ctrl+Shift+R - + Squash... Mescla alocando as alterações do branch especificado no topo, mesclando como um novo commit. Mesclar --Squash... - Ctrl+Shift+Q Combinação de teclas atalhos... - Ctrl+Shift+Q + Ctrl+Shift+Q - + Abort Merge Aborta a operação de mesclagem... Abortar merge - + Submodule Submódulo da aplicação... Submódulo - + Configure Submodules... Configura os submódulos... Configurar submódulos... - + Update All Atualiza todos os módulos... Atualizar tudo - Ctrl+Shift+Alt+U Combinação de teclas atalhos... - Ctrl+Shift+Alt+U + Ctrl+Shift+Alt+U - + Update... Atualiza os módulos... Atualizar... - Ctrl+Shift+U Combinação de teclas atalhos... - Ctrl+Shift+U + Ctrl+Shift+U - + Open Abrir o módulo... Abrir - + Stash Stash área... Stash - + Show Stashes Mostra as alterações na Stage Area... Mostrar Stashes - + Stash... Stash, salva as alterações não commitadas tanto as preparadas quanto as não preparadas para uso posterior. Stash... - Ctrl+Shift+T Combinação de teclas atalhos... - Ctrl+Shift+T + Ctrl+Shift+T - + Pop Stash Joga fora o stash (mais alto, por padrão) depois de aplicá-lo. Descartar Stash - Ctrl+Shift+Alt+T Combinação de teclas atalhos... - Ctrl+Shift+Alt+T + Ctrl+Shift+Alt+T - + History Histórico... Histórico - + Back Anterior... Anterior - + Forward Próximo... Próximo - + Window Janela... Janela - + Show Previous Tab Mostrar aba anterior... Mostrar aba anterior - + Show Next Tab Mostrar a próxima aba... Mostrar a próxima aba - + Show Repository Chooser... Mostra seletor de repositório... Mostrar seletor de repositório... - Ctrl+Shift+O Combinação de teclas atalhos... - Ctrl+Shift+O + Ctrl+Shift+O - + Tools Ferramentas... Ferramentas - + Options... Opções... Opções... - + Help Ajuda... Ajuda - + About %1 Sobre... Sobre %1 - + Check For Updates... Busca atualizações... Buscar atualizações... - + Plugin Documentation... Documentação do Plugin... Plugin Documentação... - + + Support us via Liberapay + + + + Debug Debugar... Depurar - + Abort Abortar... Abortar - + Log Indexer Progress Progresso do Log Indexador... Progresso do Log Indexador - + Log Credential Helper Auxiliar de credencial de registro... Auxiliar de credencial de registro - + Log Remote Connection Registrar conexão remota... Registrar conexão remota - + + Log Debug Messages + + + + Load All Diffs Carregar todas as diferenças... Carregar todas as diferenças - + Walk Commits Trajetória dos commits... Trajetória dos commits - + Hide Log Ocultar Log... Ocultar Log - Show Diff View Visualiar comparação... - Mostrar comparação + Mostrar comparação - + Merge Mescla... Mesclar - + Revert Reverte... Reverter - + Cherry-pick (Cherry-pick) Anexa o commit selecionado no branch atual... (Cherry-pick) Coletar-commit - + Rebase Pega os commits do branch pai, sincroniza com os commits anterior desse, e joga os commits do branch atual no final da pilha. Rebase - + Abort %1 Abortar... Abortar %1 @@ -3225,70 +3624,70 @@ Exemplos MergeDialog - - + + Merge Efetua o merge dos Branches. Merge - - + + Rebase Efetua o rebase dos Branches. Rebase - - + + Squash Efetua um merge com o parâmetro --squash... Merge --squash - + Merge (No Fast-forward) Impede que o git merge execute um "avanço rápido" se detectar que seu HEAD atual é um ancestral do commit que você está tentando mesclar. Mesclar (sem avanço rápido) - + Merge (Fast-forward Only) A mesclagem só é permitida se o branch puder ser encaminhado rapidamente. Mesclar (avanço rápido) - + No commit Mescla sem commit. Sem commit - + Reference: Referência. Referência: - + Action: Açao. Açao: - + Choose a reference to merge into '%1'. Mescla a referência especificada no Branch selecionado. Escolha uma referência para mesclar em '%1'. - + Choose a reference to rebase '%1' on. Efetua rebase da referência especificada no Branch selecionado. Escolha uma referência para rebase em '%1'. - + Choose a reference to squash into '%1'. Efetua o squash da referência especificada. Escolha uma referência para squash em '%1'. @@ -3297,7 +3696,7 @@ Exemplos MergeTool - + External Merge Mesclar externamente... Mesclar externamente @@ -3306,13 +3705,13 @@ Exemplos MiscPanel - + Path to SSH config file: Caminho para o arquivo de configuração SSH... Caminho para o arquivo de configuração SSH: - + Path to default / fallback SSH key file: Caminho para o arquivo de chave SSH padrão / substituto... Caminho para o arquivo de chave SSH padrão / substituto: @@ -3321,37 +3720,37 @@ Exemplos NewBranchDialog - + Checkout branch Checkout branch... Checkout branch - + Name: Nome... Nome: - + Start Point: Ponto de partida... Ponto inicial: - + Advanced: Avançado... Avançado: - + Upstream: Upstream... Upstream: - + Create Branch Cria nova ramificação... Criar Branch @@ -3360,7 +3759,7 @@ Exemplos PathspecWidget - + Filter by Path FIltra por diretório... FIltrar por Diretório @@ -3369,49 +3768,49 @@ Exemplos PluginsPanel - + Name Nome... Nome - + Kind Tipo... Tipo - + Description Descrição... Descrição - + Options Opções... Opções - + %1 Options %1 Opções... %1 Opções - + Note Nota... Nota - + Warning Atenção... Atenção - + Error Erro... Erro @@ -3420,7 +3819,7 @@ Exemplos Popup - + Show Advanced Search Mostrar pesquisa avançada... Mostrar pesquisa avançada @@ -3429,13 +3828,13 @@ Exemplos PreviewWidget - + Added Adicionado... Adicionado - + Modified Modificado... Modificado @@ -3444,7 +3843,7 @@ Exemplos PullRequestButton - + Create Pull Request Cria solicitação pull... Criar solicitação pull @@ -3453,64 +3852,126 @@ Exemplos PullRequestDialog - + Create Pull Request Cria solicitação pull Criar solicitação pull - + Title Título... Título - + Body Corpo... Corpo - + Maintainer can modify O mantenedor pode modificar... O mantenedor pode modificar - + From: De... De: - + owner/repository Dono e Repositório... proprietário/repositório - + branch ramificação... branch - + To: Para... Para: - + Create Criar... Criar + + QObject + + + Expand all + + + + + Collapse all + + + + + Staged Files + + + + + Unstaged Files + + + + + Committed Files + + + + + Workdir Files + + + + + Your global GIT configuration is invalid, Gittyup won't run properly until this is fixed + + + + + RebaseConflictDialog + + + Rebase conflict + + + + + Abort rebase + + + + + Continue + + + + + The rebase caused a merge conflict. +Would you like to fix the merge conflict and continue? + + + Reference - + HEAD detached at %1 Desanexado do versionamento em %1 HEAD desanexado em %1 @@ -3519,7 +3980,7 @@ Exemplos ReferenceList - + Commit Commit... Commit @@ -3528,19 +3989,19 @@ Exemplos ReferenceModel - + Branches Todas as ramificações do projeto. Branches - + Remotes Todas as ramificações remotas. Remotos - + Tags Todas as etiquetas do projeto. Tags @@ -3549,66 +4010,66 @@ Exemplos ReferenceView - + Branch Ramificações... Ramificação - + Remote Ramificações remotas... Remoto - + Tag Etiquetas... Etiquetas - + Checkout Checkout... Checkout - + Rename Renomea... Renomear - + Delete Deletar - + Push Tag to %1 Empurre a Tag para %1 Empurre a Tag para %1 - + New Local Branch Novo Branch Local... Novo Branch Local - + Merge... Merge... Merge... - + Rebase... Pega os commits do branch pai, sincroniza com os commits anterior desse, e joga os commits do branch atual no final da pilha. Rebase... - + Squash... Mescla alocando as alterações do Branch especificado no topo, mesclando como um novo commit. Merge --Squash... @@ -3617,7 +4078,7 @@ Exemplos RefreshButton - + Refresh Atualizar... Atualizar @@ -3626,7 +4087,7 @@ Exemplos RemoteButton - + 999+ 999+ 999+ @@ -3635,58 +4096,59 @@ Exemplos RemoteCallbacks - + remote: %1 - + failed to execute pre-push hook: bash not found - + failed to execute pre-push hook: %1 - + HTTPS Credentials - + SSH Passphrase - + Username: Nome do usuário: - + Password: Senha: - + Passphrase: - + + authentication canceled - + From %1 - - + + To %1 @@ -3694,47 +4156,47 @@ Exemplos RemoteDialog - + Push all tags - + Update existing tags - + Merge - + Rebase Rebase - + Merge (No Fast-forward) Mesclar (sem avanço rápido) - + Merge (Fast-forward Only) Mesclar (avanço rápido) - + Set upstream - + Force - + Remote Reference: @@ -3782,42 +4244,42 @@ Exemplos RemotePage - + Remote Repository URL - + Choose protocol to authenticate with the remote. - + Enter the URL of the remote repository or browse for a local directory - + ... ... - + Choose Directory Escolha o diretório - + Examples of valid URLs include:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> - + Protocol: - + URL: URL: @@ -3825,12 +4287,12 @@ Exemplos RemoteTableModel - + Name Nome - + URL URL @@ -3838,64 +4300,77 @@ Exemplos RemotesPanel - + Delete Remote? - + Are you sure you want to delete '%1'? - + Delete Deletar + + RenameBranchDialog + + + Name: + Nome: + + + + Rename Branch + + + RepoModel - + Connecting Conectando - + open Em uso... em uso - + recent Recente... recente - + remote Remoto... remoto - - + + none - + Clone Repository Clonar repositório - + Open Existing Repository - + Initialize New Repository @@ -3903,130 +4378,157 @@ Exemplos RepoView - + Indexing... - + Search Procurar - - The indexer worker process crashed. If this problem persists please contact us at support@gitahead.com. - - - - + Indexer Crashed - + Stage Directory? - + Are you sure you want to stage '%1'? - + This will result in the addition of %1 files. - + more than 100 - + Stage Directory - + Stop prompting to stage directories - + Stage Large File? - + Are you sure you want to stage '%1' with a size of %2? - + Stage Stage - + Track with LFS - + This repository has LFS enabled. Do you want to track the file with LFS instead? - + Stop prompting to stage large files - + Esc Esc - + stage - + Git LFS was not found on the PATH. <a href='https://git-lfs.github.com'>Install Git LFS</a> to use LFS integration. - + untracked file - + untracked files - + Remove Untracked Files Remover arquivos não rastreados - + Remove %1 %2? Remover %1 %2? - + This action cannot be undone. Essa ação não pode ser desfeita. - + Remove + + + + Certificate Error + + + + + SSL verification disabled for this repository + + + + + [http] + sslVerify = false + +was added to %1/config + + + + + SSL verification disabled for all git repositories + + + + + [http] + sslVerify = false + +was added to %1 + + Pull Request @@ -4035,7 +4537,7 @@ Exemplos Create - + Criar @@ -4043,756 +4545,815 @@ Exemplos - - - + + + Git LFS Git LFS - + Initialize Inicializar - + initialize - + Git LFS initialized. - + Deinitialize Desinicializar - + deinitialize - + Git LFS Deinitialized. - + Lock Bloquear - + Unlock Desbloquear - - + + Unable to %1 '%2' - %3 - + Unable to %1 - %2 - + %1 remotes - + Fetch All Fetch tudo - + Fetch Fetch - - - + + + <i>no remote</i> - + Unable to fetch. No upstream is configured for the current branch, and there isn't a remote called 'origin'. - - + + Fetch canceled. - + fetch from - + + You may disable ssl verification <a href='action:sslverifyrepo'>for this repository</a> or overall disable ssl verification <a href='action:sslverifygit'>for all repositories</a>. + + + + - + Everything up-to-date. - - - + + + <i>no branch</i> - + %1 from %2 - + Pull Pull - + <i>no upstream</i> - + Merge - + %1 into %2 - + Fast-forward - + %2 to %1 - + + Rebase Rebase - + %2 on %1 - + The repository is empty. - + The current branch '%1' has no upstream branch. - - + + Already up-to-date. - + Unable to fast-forward. - + fast-forward - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='%1'>fast-forward</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. - + If you want to create a new merge commit instead of fast-forwarding, you can <a href='%1'>merge without fast-forwarding </a> instead. - - - - + + + + merge merge - - + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:merge'>merge</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. - - + + + Abort Abortar - + Some merged files have unstaged changes - + abort merge - - - + + + revert - - - + + + cherry-pick - - - + + + rebase - + + Continue ongoing rebase + + + + + Invalid head. + + + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:rebase'>rebase</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. - + + %1/%2 - + %1 - %2 %1 - %2 - + Apply Aplique - - There was a merge conflict. The rebase has been aborted - - - - + %1 - %2 <i>already applied</i> - + %1 - %2 as %3 - - - + + + squash - + Revert Reverter - + Revert "%1" This reverts commit %2. - + <i>detached HEAD</i> - + %1 on %2 - + Cherry-pick - - Force Push? - - - - + Are you sure you want to force push? - + The remote will lose any commits that are reachable only from the overwritten reference. Dropped commits may be unexpectedly reintroduced by clones that already contain those commits locally. - + Force Push - + <i>no reference</i> - + Push Push - + Push (Force) - - + + %1 to %2 - - + + You are not currently on a branch. - + Create a commit to add the default '%1' branch. - + You can <a href='action:checkout'>checkout</a> a branch then <a href='action:push'>push</a> again, or <a href='action:push-to'>push to an explicit branch</a>. - + The current branch '%1' has no default remote. - + You may want to <a href='action:add-remote?name=origin'>add a remote named 'origin'</a>. Then <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a> to begin tracking a remote branch called 'origin/%1'. - + You can also <a href='action:push-to'>push to an explicit URL</a> if you don't want to track a remote branch. - + To begin tracking a remote branch called '%1', <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a>. - + To push without setting up tracking information, <a href='action:push?ref=%1'>push '%2'</a> explicitly. - + Push canceled. Push cancelado. - + push to - + The tag update may cause the remote to lose commits. - + If you want to risk the remote losing commits, you can <a href='action:push?ref=%1&to=%2&force=true'>force push</a>. - - You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push'>push</a> again. - - - - - If you really want the remote to lose commits, you may be able to <a href='action:push?force=true'>force push</a>. - - - - + Commit? - + Are you sure you want to commit on a detached HEAD? - + <p>You are in a detached HEAD state. You can still commit, but the new commit will not be reachable from any branch. If you want to commit to an existing branch, checkout the branch first.</p> - - + + Commit Commitar - - + + <i>no commit</i> - + commit - + This commit was signed with a generated user name and email. - + Consider setting the user name and email in <a href='action:config?global=true'>global settings</a>. - + If you want to limit the name and email settings to this repository, <a href='action:config'>edit repository settings</a> instead. - + After settings have been updated, <a href='action:amend'> amend this commit</a> to record the new user name and email. - + file - + files - + %1 - %2 %3 %1 - %2 %3 {1 ?} - - + + Checkout Checkout - + Checkout Detached HEAD? - + Checkout Detached HEAD - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to reset the existing local branch '%2' to this commit instead? - + Reset Local Branch - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to create a new local branch called '%2' to track it instead? - + Create a local branch to start tracking remote changes and make new commits. Check out the detached HEAD to temporarily put your working directory into the state of the remote branch. - + Create Local Branch - + checkout - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='action:checkout?%1'>checkout '%2'</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. - + New Branch - + create new branch - + (no branch) - + WIP on %1: %2 %3 - + <i>working directory</i> - + Stash - + stash - + Apply Stash - + apply stash - + Drop Stash - + drop stash - + Pop Stash Joga fora o Stash (mais alto, por padrão) depois de aplicá-lo. Descartar Stash - + pop stash Joga fora o stash (mais alto, por padrão) depois de aplicá-lo. descartar stash - + %1 as %2 - + Tag Etiquetas - + tag - - - + + Amend - - - + + Amending commit %1 + + + + + %1 to %2 + update ref + + + + + + + + + Reset Resetar - - Amend? - - - - - Reset? - - - - - Are you sure you want to amend '%1'? - - - - + Are you sure you want to reset '%1' to '%2'? - + <p>Some commits may become unreachable from the current branch.</p> - + <p>Resetting will cause you to lose uncommitted changes. Untracked and ignored files will not be affected.</p> - + <p>Your branch appears to be up-to-date with its upstream branch. Resetting may cause your branch history to diverge from the remote branch history.</p> - + + amend - + reset - + + %1 of %2 submodules - - + + Update - + + update submodule - + + The indexer worker process crashed. If this problem persists please contact us at <TODO: replace.support@gitahead.com>. + + + + + Please resolve conflicts before continue + + + + + Conflict + + + + + Rebase finished + + + + + Force Push to %1? + + + + + You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push?to=%1'>push</a> again. + + + + + If you really want the remote to lose commits, you may be able to <a href='action:push?to=%1&force=true'>force push</a>. + + + + + Reset canceled. + + + + + Untouched + + + + Invalid Submodule Repository - + The submodule '%1' doesn't have a valid repository. You may need to init and/or update the submodule to check out a repository. - + + No terminal executable found + + + + + No terminal executable was found. Please configure a terminal in the configuration. + + + + + Open Configuration + + + + There was a merge conflict. - + Resolve conflicts, then commit to conclude the %1. See <a href='expand'>details</a>. - + Resolve conflicts in each conflicted (!) file in one of the following ways: - + 1. Click the 'Ours' or 'Theirs' button to choose the correct change. Then click the 'Save' button to apply. - + 2. Edit the file in the editor to make a different change. Remember to remove conflict markers. - + 3. Use an external merge tool. Right-click on the files in the list and choose 'External Merge'. - + After all conflicts in the file are resolved, click the check box to mark it as resolved. - + After all conflicted files are staged, commit to conclude the %1. - + You can <a href='action:abort'>abort</a> the %1 to return the repository to its previous state. @@ -4800,12 +5361,12 @@ This reverts commit %2. Repository - + Unknown error - + git-lfs not found @@ -4813,7 +5374,7 @@ This reverts commit %2. SearchField - + Search Procurar @@ -4821,32 +5382,32 @@ This reverts commit %2. SearchPanel - + Enable indexing - + terms - + lines linhas - + Limit commits to: - + Diff context: - + Remove Index @@ -4854,32 +5415,32 @@ This reverts commit %2. Settings - + Prompt to edit stash message before stashing - + Prompt to edit commit message before merging - + Prompt to edit commit message before reverting - + Prompt to edit commit message before cherry-picking - + Prompt to stage directories - + Prompt to stage large files @@ -4887,62 +5448,67 @@ This reverts commit %2. SettingsDialog - + Esc Esc - + Global git settings can be overridden for each repository in the corresponding repository configuration page. - + Edit Config File... Editar arquivo de configuração... - + General Geral - + Diff Diff - + Tools Ferramentas - + Window Janela - + Editor - + Update - + Plugins Plugins - + Misc - + + Hotkeys + + + + Terminal @@ -4950,22 +5516,22 @@ This reverts commit %2. ShowTool - + Finder - + Explorer - + Default File Browser - + Show in %1 @@ -4973,14 +5539,14 @@ This reverts commit %2. SideBar - + Close Fechar - - + + Remove @@ -5005,57 +5571,57 @@ This reverts commit %2. - + Initialize New Repository - + Add %1 Account - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> - + Remove Repository Association? - + Clear All Recent - + Show Full Path - + Filter Non-existent Paths - + Refresh Remote Accounts - + Show Full Name - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> - + Remove Account? @@ -5063,108 +5629,108 @@ This reverts commit %2. StartDialog - + Choose Repository - + Understand your history! Entenda sua história! - + Clone Repository Clonar repositório - + Open Existing Repository - + Open Repository - + Initialize New Repository - + Clear All - + Show Full Path - + Filter Non-existent Paths - + Repositories: - + Refresh Atualizar - + Show Full Name - + Remote: - + View Getting Started Video - + Clone Clonar - + Open Abrir - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> - + Remove Account? - - + + Remove - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> - + Remove Repository Association? @@ -5172,7 +5738,7 @@ This reverts commit %2. SubmoduleTableModel - + Name Nome... Nome @@ -5184,37 +5750,37 @@ This reverts commit %2. URL - + Branch Ramificação... Ramificação - + Initialized Inicializado... Inicializado - + Deinitializing '%1' will remove its working directory. Are you sure you want to deinitialize? Remove diretório de trabalho. Desinicializar '%1' removerá seu diretório de trabalho. Tem certeza de que deseja desinicializar? - + Deinitialize Submodule? Feedback de confirmação de remoção do submodulo... Desinicializar o submódulo? - + The submodule working directory contains uncommitted changes that will be lost if you continue. Feedback de confirmação de remoção do submódulo... O diretório de trabalho do submódulo contém alterações não confirmadas que serão perdidas se você continuar. - + Deinitialize Desinicializa... Desinicializar @@ -5249,31 +5815,107 @@ This reverts commit %2. - + Name Nome + + TemplateDialog + + + Name + Nome + + + + Content + + + + + + Add + + + + + use %1 to declare the position of the cursor. + + + + + use ${files:x} to add all updated file names, +x (number) determines the number of maximum files shown + + + + + Remove + + + + + Up + + + + + Down + + + + + Import + + + + + Export + + + + + Open File + + + + + + Gittyup Templates (*%1) + + + + + Save Templates + + + + + Replace + Substituir + + TerminalPanel - - + + Install - + Name: Nome: - + Location: - + Uninstall @@ -5281,32 +5923,32 @@ This reverts commit %2. TextEdit - + Replace... - + Replace All... - + Ignore Ignorar - + Ignore All - + Add to User Dictionary - + Do not Ignore @@ -5314,111 +5956,146 @@ This reverts commit %2. ThemeDialog - - Native Theme - - - - + A flexible look matching system colors - + Dark Theme - + + Pick a theme for Gittyup + + + + + Default Theme + + + + + A consistent bright theme + + + + A consistent look optimal for reducing eye strain + + + System Theme + + ToolBar - + Show repository sidebar - + Previous - + Next - + Fetch Fetch - + Pull Pull - + Merge - + Rebase Rebase - + Push Push - + Checkout Checkout - + Stash - + Pop Stash Descartar Stash - + + Open Terminal + + + + + Open file manager + + + + Configure Settings + + + Repository settings + + - + Application settings + + + + + Show Log Mostrar log - - Diff View - - - - - Tree View + + Double Tree View + Tree View + + + + Show Starred Commits - + Hide Log Ocultar Log @@ -5426,32 +6103,42 @@ This reverts commit %2. ToolsPanel - + Keep backup of merge files (.orig) - + External editor: - + External diff: - + External merge: - + Backup files: - + + Terminal emulator command: + + + + + File manager command: + + + + Configure @@ -5459,20 +6146,77 @@ This reverts commit %2. TreeModel - + Submodule Submódulo + + TreeView + + + Directory + Diretório + + + + File + Arquivo + + + + Remove or discard %1? + + + + + Are you sure you want to remove or discard all changes in '%1'? + + + + + This action cannot be undone. + Essa ação não pode ser desfeita. + + + + + Discard + Descartar + + + + discard + descartar + + + + TreeWidget + + + Search: + + + + + Regex + + + + + Case Sensitive + + + UpToDateDialog - + Already Up-to-date - + %1 is already up-to-date. You have version %2. @@ -5480,55 +6224,76 @@ This reverts commit %2. UpdateDialog - + Update %1 - + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. The new version will be soon available in your package manager. Just update your system.</p><b>Release Notes:</b> + + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. Would you like to download it now?</p><b>Release Notes:</b> - + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3.</p><p>If you downloaded the flatpak package over a package manager or from flathub.org <br/>you don't have to install manually a new version. It will be available within the next <br/>days during your system update: <code>flatpak update</code></p><b>Release Notes:</b> + + + + Automatically download and install updates - + Install Update - + Remind Me Later - + Skip This Version + + + Ok + + + + + Donate + + UpdatePanel - + Check for updates automatically - + Automatically download and install updates - + Check Now - + Software Update: @@ -5536,17 +6301,17 @@ This reverts commit %2. UpdateSubmodulesDialog - + Recursive - + Init - + Update @@ -5554,7 +6319,7 @@ This reverts commit %2. Updater - + Installer failed to start @@ -5575,47 +6340,49 @@ This reverts commit %2. - + + Helper application failed to start - + Update Failed - + Unable to check for updates - + Unable to download update - + Unable to open temporary file - + Unable to install update - - Some windows failed to close + + Some windows failed to close. You can download the binary manually from %1 - + Unknown install error - + + Installer script failed: %1 @@ -5623,94 +6390,139 @@ This reverts commit %2. WindowPanel - + Add New Theme - + Edit Current Theme - + Create Theme - + Theme Name - + Restart? - + The application must be restarted for the theme change to take effect. - + Do you want to restart now? - + Restart - + Later - + Show full repository path - + Hide automatically - + Open submodules in tabs - + Open all repositories in tabs - + + Hide Menubar + + + + + Show Avatars + + + + Theme: - + Title: - + Log: - + Tabs: - + + View: + + + + Prompt: + + _FileWidget::Header + + + + Use Theirs: Delete + + + + + + Use Ours: Delete + + + + + both: %1 + + + + + ours: %1 + + + + + theirs: %1 + + + diff --git a/l10n/gittyup_ru.ts b/l10n/gittyup_ru.ts index b48305a5..ba79c48f 100644 --- a/l10n/gittyup_ru.ts +++ b/l10n/gittyup_ru.ts @@ -4,55 +4,63 @@ AboutDialog - + About %1 О %1 - + Understand your history! Понимай свою историю! - + Changelog Журнал изменений - + Acknowledgments Благодарности - + Privacy Приватность - Usage reporting has been disabled. Restart the application for changes to take effect. - Доносительство об использовании было отключено. Перезапустите приложение для вступления изменений в силу. + Доносительство об использовании было отключено. Перезапустите приложение для вступления изменений в силу. - Usage Reporting Disabled - Доносительство об использовании отключено + Доносительство об использовании отключено Account - + + Connection failed + Соединение не удалось + + + <b>Note:</b> Basic authentication is not supported if you have two-factor authentication enabled. Use a <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>personal access token</a> in the password field instead. <b>Заметь:</b> Базовая аутентификация не поддерживается, если у вас включена двухфакторная. Используйте <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>персональный токен доступа</a> вместо пароля. - + + <b>Note:</b> Only Basic authentication is currently supported + + + + <b>Note:</b> Basic authentication is not supported. Use a <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>personal access token</a> in the password field instead. <b>Note:</b> Базовая аутентификация не поддерживается. Используйте <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>personal токен доступа</a> вместо пароля. - + Authentication failed Аутентификация провалена @@ -60,7 +68,7 @@ AccountDialog - + Add Remote Account Добавить удаленный аккаунт @@ -90,32 +98,32 @@ - + Replace? Заменить? - + An account of this type already exists. Аккаунт этого типа уже существует. - + Would you like to replace the previous account? Желаете заменить предыдущий аккаунт? - + Replace Заменить - + Cancel Отменить - + Connection Failed Соединение не удалось @@ -123,18 +131,18 @@ AddRemoteDialog - - + + Add Remote Добавить Remote - + Name: Имя: - + URL: @@ -142,7 +150,7 @@ AdvancedButton - + Advanced Search Расширенный поиск @@ -150,219 +158,263 @@ AdvancedSearchWidget - + Author: Автор: - + Author name Имя автора - + Email: Почта: - + Author email Почта автора - + Message: Сообщение: - + Commit message Сообщение коммита - + Date: Дата: - + Specific commit date Конкретная дата коммита - + After: После: - + Commits after date Коммиты после даты - + Before: - + Commits before date Коммиты до даты - + File: Файл: - + File name Имя файла - + Path: Путь: - + File path Путь файла - + Scope: Область видимости: - + Hunk header text Текст заголовка hunkа - + Context: Контекст: - + Diff context (white) Diff контекст (белый) - + Addition: Добавка: - + Diff addition (green) Diff добавлено (зелёный) - + Deletion: Удалено: - + Diff deletion (red) Diff удалено (красный) - + Comment: Комментарий: - + Source code comment Комментарий исходника - + String: Строка: - + Source code string literal Литеральная строка исходника - + Identifier: Идентификатор: - + Source code identifier Идентификатор исходника - + Search Поиск - + Return Вернуться + + AmendDialog + + + Author + + + + + Committer + + + + + Commit Message: + + + + + Amend + Дополнить + + + + Cancel + Отменить + + Application - + SSL Errors Ошибки SSL - + Failed to set up SSL session. Do you want to ignore these errors? Не смог установить сеанс SSL. Хотите игнорировать ошибки? + + AuthorCommitterDate + + + Author/Committer: + + + + + Author: + + + + + Committer: + + + Beanstalk - Connection failed - Соединение не удалось + Соединение не удалось Bitbucket - Connection failed - Соединение не удалось + Соединение не удалось BlameEditor - + Untitled Без_Имени - + Not Tracked Не отслеживаемо - + HEAD - + Working Copy Рабочая копия - + Save File Сохранить файл @@ -370,12 +422,12 @@ BlameMargin - + Not Committed Не закоммичено - + Invalid Signature Неверная подпись @@ -383,17 +435,17 @@ BranchTableModel - + Name Имя - + Upstream - + Rebase Перебазировать @@ -401,17 +453,17 @@ CheckoutDialog - + Detach HEAD Отсоединить HEAD - + References: Ссылки: - + Checkout Перейти @@ -419,7 +471,7 @@ ClearButton - + Clear Очистить @@ -427,32 +479,32 @@ CloneDialog - + Initialize Repository Инициализировать репозиторий - + Clone Repository Клонировать репозиторий - + Initialized empty repository into '%1' Инициализировал пустой репозиторий '%1' - + Cloned repository from '%1' into '%2' Клонировал репозиторий из '%1' в '%2' - + Initialize Инициализировать - + Clone Клонировать @@ -460,33 +512,33 @@ ClonePage - + Clone Progress Прогрессклонирования - + The new repository will open after the clone finishes. Новый репозиторий откроется когда клонирование завершится. - + Clone Клонировать - - + + clone клонировать - + Clone canceled. Клонирование отменено. - + Failed to %1 into '%2' - %3 Ну не смогла я %1 в '%2' - %3 @@ -494,27 +546,27 @@ CommitDetail - + Copy Копировать - + Range: Диапазон: - + Id: - + initial commit - + Parents: @@ -572,120 +624,181 @@ CommitEditor - + + T + + + + <b>Commit Message:</b> <b>Сообщение коммита:</b> - - + + Spell Check Language - + The dictionary '%1' is invalid - + Spell checking is disabled. - + The choosen dictionary '%1.dic' is not a valid hunspell dictionary. - - + + Invalid dictionary '%1.dic' - + Edit User Dictionary - + Stage All Добавить всё - + Unstage All Отменить добавление всего - - + + Commit Коммит - + + Abort rebasing + + + + + Continue rebasing + + + + + Abort Merge + Прервать слияние + + + + %1 + + + + + %1 and %2 + + + + + %1, %2, and %3 + + + + + Merge + Слить + + + + Revert + Откатить + + + + Cherry-pick + + + + + Rebase + Перебазировать + + + + Abort %1 + Прервать %1 + + + + Commit Rebase + + + Update %1 - Update %1 + Update %1 - Update %1 and %2 - Обновить %1 и %2 + Обновить %1 и %2 - Update %1, %2, and %3 - Обновить %1 и %2 и %3 + Обновить %1 и %2 и %3 - Update %1, %2, and %3 more files... - Обновить %1 и %2 и ещё %3 файла... + Обновить %1 и %2 и ещё %3 файла... - + Nothing staged Ничего не добавлено - + %1 of %2 file staged %1 из %2 файл добавлен - + %1 of %2 files staged %1 из %2 файлы добавлены - + %1 file partially staged %1 файл частично добавлен - + %1 files partially staged %1 файлы частично добавлены - + %1 unresolved conflict %1 неразрешённый конфликт - + %1 unresolved conflicts %1 неразрешённый конфликтов - + all conflicts resolved все конфликты разрешены - + Commit Merge Закоммитить слияние @@ -693,114 +806,131 @@ CommitList - + Remove Untracked Files Удалить неотслеживаемые файлы - + Apply Применить - + Pop Вытолкнуть - + Drop Выбросить - + Unstar Снять отметку - + Star Отметить - + Add Tag... Добавить метку... - + New Branch... Новая ветка... - Delete Tag %1 - Удалить метку %1 + Удалить метку %1 - Delete Branch %1 - Удалить ветку %1 + Удалить ветку %1 - + + Rename Branch + + + + + Delete Branch + + + + + Delete Tag + Удалить метку + + + Merge... Слить... - + Rebase... Перебазировать... - + Squash... Объединить... - + Revert Откатить - + Cherry-pick - - - + + Checkout %1 Перейти на %1 - + + Checkout + Перейти + + + Local branch is already checked out Локальная ветка уже извлечена - + This is a bare repository Это - "голый" репозиторий - + Reset Сбросить - + Soft Мягкий - + Mixed Смешанный - + Hard Жесткий @@ -808,12 +938,12 @@ CommitModel - + Uncommitted changes Незакоммиченные изменения - + Checking for uncommitted changes Проверяем на незакоммиченные изменения @@ -821,128 +951,165 @@ CommitToolBar - + Show All Branches Показать все ветки - + Show Selected Branch Показать выбранную ветку - + Sort by Date Сортировать по дате - + Sort Topologically Сортировать топологически - + Show Graph Показать граф - + Show Clean Status Показать чистоту - + Compact Mode Компатный режим + + + Show Author + + + + + Show Date + + + + + Show Id + + ConfigDialog - + Esc - + General J,obt - + Diff - + Remotes - + Branches Ветки - + Submodules Подмодули - + Search Поиск - + Plugins Плагины - + LFS - + Edit Config File... Редактировать конфиг... + + DateSelectionGroupWidget + + + Datetime source + + + + + Current + + + + + Manual + + + + + Original + + + DefaultWidget - + Clone repository Клонировать репозиторий - + Open existing repository Открыть существующий репозиторий - + Open Repository Открыть репозиторий - + Initialize new repository Инициилизировать новый репозиторий - + Add %1 account Добавить аккаунт %1 - View getting started videos - Показать вводные видеоролики + Показать вводные видеоролики - + Contact us for support Обратиться к нам за поддержкой @@ -950,47 +1117,47 @@ DeleteBranchDialog - + Are you sure you want to delete local branch '%1'? Вы уверены, что хотите удалить локальную ветку '%1'? - + Delete Branch? Удалить ветку? - + Also delete the upstream branch from its remote Также удалить upstream-ветку из remote - + Delete Удалить - + delete '%1' from '%2' удалить '%1' из '%2' - + Push Запушить - + Push canceled. Push отменён. - + Unable to push to %1 - %2 Не смог запушить в %1 - %2 - + The branch is not fully merged. Deleting it may cause some commits to be lost. Ветка не полностью слита. Удаление её может привести к потере некоторых коммитов. @@ -998,56 +1165,81 @@ DeleteTagDialog - + Are you sure you want to delete tag '%1'? Вы уверенны, что вы хотите удалить метку '%1'? - + Delete Tag? Удалить метку? - + Also delete the upstream tag from %1 Также удалить метку апстрима из %1 - + Delete Удалить - + delete '%1' from '%2' удалить '%1' из '%2' - + Push Запушить - + Push canceled. Push отменён. - + Unable to push to %1 - %2 Не смог запушить в %1 - %2 - + Delete Tag Удалить метку - + delete tag удалить метку + + DetailView + + + + Author: + Автор: + + + + reset + сбросить + + + + Here you can set the author used for committing +These settings will not be saved permanently + + + + + Email: + Почта: + + DiffPanel @@ -1081,17 +1273,17 @@ Добавленные файлы - + Deleted files Удалить файлы - + Whitespace: Непечатаемые: - + Auto Collapse: Авто-сворачивание: @@ -1099,43 +1291,89 @@ DiffTool - + External Diff Внешний Diff + + DiffTreeModel + + + Submodule + Подмодуль + + DiffView - + Add new file Добавить новый файл - + Or drag files here to copy into the repository Или перетащите файлы сюда, чтобы скопировать их в репозиторий + + DoubleTreeWidget + + + Blame + + + + + Show Blame Editor + + + + + Diff + + + + + Show Diff View + Показать просмотрщик диффов + + + + Single Tree View + + + + + List View + + + + + Hide Untracked Files + + + DownloadDialog - + Update %1 Обновить %1 - + Downloading %1... Загружаем %1... - + Download Complete! Загрузка завершена! - + Install and Restart Установить и перезапустить @@ -1143,17 +1381,17 @@ EditButton - + Edit Working Copy - + Edit New Revision - + Edit Old Revision @@ -1161,7 +1399,7 @@ EditTool - + Edit in External Editor Редактировать во внешнем редакторе @@ -1169,47 +1407,47 @@ EditorPanel - + Tabs Табы - + Spaces Пробелы - + Show heat map Показать тепловую карту - + Font: Шрифт: - + Font size: Размер шрифта: - + Indent using: Отступать используя: - + Indent width: Ширина отступа: - + Tab width: Ширина таба: - + Blame margin: Граница blame: @@ -1217,12 +1455,12 @@ EditorWindow - + '%1' has been modified. Do you want to save your changes? '%1' был изменён. Хотите сохранить ваши изменения? - + Save Changes? Сохранить изменения? @@ -1230,22 +1468,22 @@ ExternalToolsDialog - + Configure External Tools Настроить внешние инструменты - + Detected Tools Обнаружены инструменты - + User Defined Tools Инструменты пользователя - + Select Executable Выбрать исполняемый @@ -1253,17 +1491,17 @@ ExternalToolsModel - + Name Имя - + Command Команда - + Arguments Аргументы @@ -1271,168 +1509,244 @@ FileContextMenu - + Revision Not Found Ревизия не найдена - + The selected file doesn't have a %1 revision. Выбранный файл не имеет ревизии %1. - + Bash Not Found Bash не найден - + Bash was not found on your PATH. Bash не найден в вашем PATH. - + Bash is required to execute external tools. Требуется Bash для запуска внешних инструментов. - + Stage Добавить - + Unstage Отменить добавление - - + + Discard Changes Отменить изменения - + Discard Changes? Отменить изменения? - + Are you sure you want to discard changes in the selected files? Вы уверены, что хотите отклонить изменения в выбранных файлах? - + This action cannot be undone. Это дествие не может быть отменено. - + + (Submodule) + + + + %1 files %1 файлов - + Discard Отменить - + discard отменить - + Remove Untracked Files Удалить неотслеживаемые файлы - + Ignore Игнорировать - + Checkout Перейти - + Unlock Разблокировать - + Lock Заблокировать - + Copy File Name Копировать имя файла - + Filter History Фильтровать историю - + Navigate to Перейти к - + Next Revision следующая ревизия - + next следующая - + Previous Revision Предыдущая ревизия - + previous предыдущая - + Unset Executable Сделать неисполняемым - + Set Executable Сделать исполняемым - + + Save Selected Version as ... + + + + + Select new file directory + + + + + Saving files + + + + + Saving files of selected version to disk + + + + + Save file + + + + + Invalid Blob + + + + + Open this version + + + + + Opening file + + + + + Open + + + + + open file + + + + + Blob is invalid. + + + + + + Unable to checkout bare repositories + + + + + Unable to open files from bare repository + + + + + The file is already in the current working directory + + + + edit редактировать - + diff - + merge слить - + External Tool Not Found Внешний инстрмент не найден - + Failed to execute external %1 tool. Не могу выполнить внешний инструмент %1. @@ -1440,190 +1754,174 @@ FileList - Sort By - Сортировать по + Сортировать по - Select - Выбрать + Выбрать - Name - Имя + Имя - Status - Состояние + Состояние - Ignore Whitespace (-w) - Игнорировать непечатаемые симовлы + Игнорировать непечатаемые симовлы - Added - Добавлено + Добавлено - Deleted - Удалено + Удалено - Modified - Изменено + Изменено - Renamed - Переименовано + Переименовано - Copied - Копировано + Копировано - Ignored - игнорировано + игнорировано - Untracked - Не отслеживается + Не отслеживается - Unreadable - Нечитаемо + Нечитаемо - Conflicted - Конфликтует + Конфликтует - Unmodified - Не изменено + Не изменено - Type Change - Изменён тип + Изменён тип FileWidget - + LFS - - + + Unlock Разблокировать - - + + Lock Заблокировать - - + + Show Object Показать объект - + Edit File Редактировать файл - + Discard File Удалить файл - + Directory Директория - + File Файл - + Remove %1? Удалить %1? - + Discard Changes? Отменить изменения? - + Are you sure you want to remove '%1'? Вы уверены, что хотите удалить '%1'? - + Are you sure you want to discard all changes in '%1'? Вы уверены, что хотите отменить все изменения в '%1'? - + This action cannot be undone. Это дествие не может быть отменено. - + Remove %1 Удалить %1 - + Discard Changes Отменить изменения - + Discard Удалить - + discard убрать - - + + Collapse File Свернуть файл - - + + Expand File Развернуть файл - + Show Pointer Показаить указатель @@ -1631,32 +1929,32 @@ FindWidget - + Search Поиск - + Done Сделано - + Esc - + Not found Не найдено - + %1 match %1 совпадение - + %1 matches %1 совпадений @@ -1664,116 +1962,130 @@ GeneralPanel - - + + Fetch every Забирать каждые - - + + minutes минут - - + + Push after each commit Пушить после каждого коммита - - Update submodules after pull - Обновлять подмодули после каждого утягивания + Обновлять подмодули после каждого утягивания - - + + Prune when fetching Чистить ссылки, когда забираю - + No translation Без перевода - + Store credentials in secure storage Хранить учётные данные в безопасном хранилище - Allow collection of usage data - Разрешить доносительство данных об использовании + Разрешить доносительство данных об использовании - + + + Update submodules after pull and clone + + + + <a href='view'>View privacy policy</a> <a href='view'>Смотреть политику приватности</a> - - + + User name: Имя пользователя: - - + + User email: Почта пользователя: - - + + Automatic actions: Автоматические действия: - + + Language: Язык: - + Credentials: Учётные данные: - + + Credential store type: + + + + + Only allow a single running instance + + + + + Single instance: + + + Usage reporting: - Доносительство об использовании: + Доносительство об использовании: GitHub - Connection failed - Соединение не удалось + Соединение не удалось - Failed to authenticate with GitHub! - Не смог аутентифицироваться на GitHubе! + Не смог аутентифицироваться на GitHubе! - Successfully authenticated with GitHub! - Успешно аутентифицирован на GitHubе! + Успешно аутентифицирован на GitHubе! GitLab - Connection failed - Соединение не удалось + Соединение не удалось - + Authentication failed Аутентификация провалена @@ -1781,7 +2093,7 @@ Header - + Filter %1 Фильтр %1 @@ -1789,114 +2101,183 @@ HostModel - + Connecting Соединяемся + + HotkeyModel + + + Action + + + + + Keys + + + HunkWidget - + + Save Сохранить - + + Undo Отменить - + + Use Ours Использовать "Нашу" - + + Use Theirs Использовать "Их" - + Edit Hunk Редактировать hunk - - + Discard Hunk Отклонить hunk - - Discard Hunk? - Отклонить hunk? + + Discard selected lines? + - + + Are you sure you want to discard the changes in hunk from line %1 to %2 in '%3'? + + + + + Discard selected lines + + + + Discard Hunk? + Отклонить hunk? + + + Are you sure you want to remove '%1'? Вы уверены, что хотите удалить '%1'? - Are you sure you want to discard the hunk starting at line %1 in '%2'? - Вы уверены, что хотите отклонить hunk в строке %1 в '%2'? + Вы уверены, что хотите отклонить hunk в строке %1 в '%2'? - + This action cannot be undone. Это дествие не может быть отменено. - - + + Collapse Hunk Свернуть hunk - - + + Expand Hunk Развернуть hunk - + Esc - + Fix Поправить - + Edit Редактировать - + No newline at end of file В конце файла нет пустой строки + + IgnoreDialog + + + Ignore Pattern + + + Images - + <b>Size:</b> %1 <b>Размер:</b> %1 + + InfoBox + + + Name: + Имя: + + + + Email: + Почта: + + + + Commit date: + + + + + KeybindDialog + + + The selected key is the same for the following actions: +%1 + + + + + Please press the desired hotkey + + + LfsPanel - + Initialize LFS Инициализировать LFS - + Specify a glob pattern for tracking large files. Generally, large files are greater than 500kB, change frequently, @@ -1921,100 +2302,110 @@ Examples - + Pattern: Шаблон: - + Track Отслеживать - + days дней - + Fetch LFS objects from all references for the past Забрать объекты LFS из всех прошлых ссылок - + reference days or - + commit days - + View Environment Смотреть окружение - + git-lfs env (read only) git-lfs env (только чтение) - + Deinitialize LFS Деинициализировать LFS - + Deinitialize LFS? Деинициализировать LFS? - + Are you sure you want uninstall LFS from this repository? Вы уверены, что хотите отменить установку LFS в этот репозиторий? - + Deinitialize Деинициализировать - + Server URL: URL сервера: - + Prune Offset: - + Fetch Recent: Забирать недавние: - + Advanced: Дополнительно: + + + Included patterns: + + + + + Excluded patterns: + + Location - + %1 | %2 - + NC - + Not Committed Не закоммичено @@ -2022,57 +2413,57 @@ Examples LocationPage - + Repository Location Размещение репозитория - + Choose the name and location of the new repository. A new directory will be created if it doesn't already exist. Выберите имя и размещение нового репозитория. Новая директория будет создана, если она не существует. - + Initialize Инициализировать - + Clone Клонировать - + ... - + Choose Directory Выберите директорию - + Name: Имя: - + Directory: Директория: - + Advanced: Дополнительно: - + Create a bare repository Создать "голый" репозиторий - + The new repository will be created at:<p style='text-indent: 12px'><b>%1</b></p> Новый репозиторий будет создан в:<p style='text-indent: 12px'><b>%1</b></p> @@ -2080,7 +2471,7 @@ Examples LogView - + Copy Копировать @@ -2088,59 +2479,59 @@ Examples MainWindow - + Invalid Git Repository Неправильный Git-репозиторий - + %1 does not contain a valid git repository. %1 не содержит правильный git-репозиторий. - - + + %1 - %2 - + ahead: %1 обгоняет: %1 - + behind: %1 отстаёт: %1 - + up-to-date уже самое новое - - + + %1 (%2) - + MERGING СЛИВАЕМ - + REVERTING ОТКАТЫВАЕМ - + CHERRY-PICKING - + REBASING ПЕРЕБАЗИРУЕМ @@ -2148,575 +2539,483 @@ Examples MenuBar - + File Файл - + New File Новый файл - + New Window Новое окно - - Ctrl+Meta+N - - - - + Clone Repository... Клонировать репозиторий... - - Ctrl+Shift+N - - - - + Initialize New Repository... Инициилизировать новый репозиторий... - - Ctrl+Alt+N - - - - + Open Repository... Открыть репозиторий... - + Open Repository Открыть репозиторий - + Open Recent Открыть недавние - + Close Закрыть - + Save Сохранить - + Exit Выйти - + Edit Редактировать - + Undo Отменить - + Redo Повторить - + Cut Вырезать - + Copy Копировать - + Paste Вставить - + Select All Выбрать всё - + Find... Найти... - + Find Next Найти следующий - + Find Previous Найти пердыдущий - + Use Selection for Find Поиск по выделению - - Ctrl+E - + + Show Double Tree View + - + View Вид - + Refresh Обновить - - + + Show Log Показать журнал - - + + Normal + + + + + Maximize + + + + + Show Tree View Показать обзор дерева - + + Hide Menu Bar + + + + Repository Репозиторий - + Configure Repository... Настроить репозиторий... - + Stage All Добавить всё - - Ctrl++ - - - - + Unstage All Отменить добавление всего - - Ctrl+- - - - - + Commit Коммит - - Ctrl+Shift+C - - - - + Amend Commit Дополнить коммит - - - Ctrl+Shift+A - - - - + Git LFS - + Remove all locks Удалить все блокировки - + Initialize Инициализировать - + Remote - + Configure Remotes... Настроить remotes... - + Fetch Забрать - - Ctrl+Shift+Alt+F - - - - + Fetch All Забрать всё - - Ctrl+Shift+Alt+A - - - - + Fetch From... Забрать из... - - Ctrl+Shift+F - - - - + Pull Утянуть - - Ctrl+Shift+Alt+L - - - - + Pull From... Утянуть из... - - Ctrl+Shift+L - - - - + Push Запушить - - Ctrl+Shift+Alt+P - - - - + Push To... Запушить в... - - Ctrl+Shift+P - - - - + Branch Ветка - + Configure Branches... Настроить ветки... - + New Branch... Новая ветка... - + + Rename Branch + + + + Checkout Current Перейти на текущую - - Ctrl+Shift+Alt+H - - - - + Checkout... Перейти... - - Ctrl+Shift+H - - - - + Merge... Слить... - - Ctrl+Shift+M - - - - + Rebase... Перебазировать... - - Ctrl+Shift+R - - - - + Squash... Объединить... - - Ctrl+Shift+Q - - - - + Abort Merge Прервать слияние - + Submodule Подмодуль - + Configure Submodules... Настроить подмодули... - + Update All Обновить всё - - Ctrl+Shift+Alt+U - - - - + Update... Обновить... - - Ctrl+Shift+U - - - - + Open Открыть - + Stash Схрон - + Show Stashes Показать схроны - + Stash... Схоронить... - - Ctrl+Shift+T - - - - + Pop Stash Вынуть из схрона - - Ctrl+Shift+Alt+T - - - - + History История - + Back Назад - + Forward Вперёд - + Window Окно - + Show Previous Tab Показать предыдущую вкладку - + Show Next Tab Показать следующую вкладку - + Show Repository Chooser... Показать список репозиториев... - - Ctrl+Shift+O - - - - + Tools Инструменты - + Options... Настройки... - + Help Справка - + About %1 О %1 - + Check For Updates... Проверить обновления... - + Plugin Documentation... Документация по плагинам... - + + Support us via Liberapay + + + + Debug Отладка - + Abort Прервать - + Log Indexer Progress Логгировать прогресс индексатора - + Log Credential Helper Логировать помощник учётных данных - + Log Remote Connection Логировать соединения с remote - + + Log Debug Messages + + + + Load All Diffs Загрузить все различия - + Walk Commits Обойти коммиты - + Hide Log Скрыть журнал - Show Diff View - Показать просмотрщик диффов + Показать просмотрщик диффов - + Merge Слить - + Revert Откатить - + Cherry-pick - + Rebase Перебазировать - + Abort %1 Прервать %1 @@ -2724,60 +3023,60 @@ Examples MergeDialog - - + + Merge Слить - - + + Rebase Перебазировать - - + + Squash Объединить - + Merge (No Fast-forward) Слить (никаких fast-forward) - + Merge (Fast-forward Only) Слить (только fast-forward) - + No commit Нет коммита - + Reference: Сссылка: - + Action: Действие: - + Choose a reference to merge into '%1'. Выберите ссылку, которую влить в '%1'. - + Choose a reference to rebase '%1' on. Выберите ссылку, на которую перебазировать '%1'. - + Choose a reference to squash into '%1'. Выберите ссылку, которую объединить в '%1'. @@ -2785,7 +3084,7 @@ Examples MergeTool - + External Merge Внешнее слияние @@ -2793,12 +3092,12 @@ Examples MiscPanel - + Path to SSH config file: Путь к конфигу SSH: - + Path to default / fallback SSH key file: Путь к запасному / по-умолчанию файлу ключа SSH: @@ -2806,32 +3105,32 @@ Examples NewBranchDialog - + Checkout branch Перейти на ветку - + Name: Имя: - + Start Point: Начальная точка: - + Advanced: Дополнительно: - + Upstream: - + Create Branch Создать ветку @@ -2839,7 +3138,7 @@ Examples PathspecWidget - + Filter by Path Фильтровать по пути @@ -2847,42 +3146,42 @@ Examples PluginsPanel - + Name Имя - + Kind Тип - + Description Описание - + Options Настройки - + %1 Options Настройки %1 - + Note Сообщение - + Warning Предупреждение - + Error Ошибка @@ -2890,7 +3189,7 @@ Examples Popup - + Show Advanced Search Показать расширенный поиск @@ -2898,12 +3197,12 @@ Examples PreviewWidget - + Added Добавлено - + Modified Изменено @@ -2911,7 +3210,7 @@ Examples PullRequestButton - + Create Pull Request Создать Pull Request @@ -2919,55 +3218,117 @@ Examples PullRequestDialog - + Create Pull Request Создать Pull Request - + Title Название - + Body Тело - + Maintainer can modify Maintainer может изменять - + From: От: - + owner/repository владелец/репозиторий - + branch ветка - + To: Кому: - + Create Создать + + QObject + + + Expand all + + + + + Collapse all + + + + + Staged Files + + + + + Unstaged Files + + + + + Committed Files + + + + + Workdir Files + + + + + Your global GIT configuration is invalid, Gittyup won't run properly until this is fixed + + + + + RebaseConflictDialog + + + Rebase conflict + + + + + Abort rebase + + + + + Continue + + + + + The rebase caused a merge conflict. +Would you like to fix the merge conflict and continue? + + + Reference - + HEAD detached at %1 HEAD отсоединена на %1 @@ -2975,7 +3336,7 @@ Examples ReferenceList - + Commit Коммит @@ -2983,17 +3344,17 @@ Examples ReferenceModel - + Branches Ветки - + Remotes - + Tags Метки @@ -3001,57 +3362,57 @@ Examples ReferenceView - + Branch Ветка - + Remote - + Tag Метка - + Checkout Перейти - + Rename Переименовать - + Delete Удалить - + Push Tag to %1 Запушить метку в %1 - + New Local Branch Новая локальная ветка - + Merge... Слить... - + Rebase... Перебазировать... - + Squash... Объединить... @@ -3059,7 +3420,7 @@ Examples RefreshButton - + Refresh Обновить @@ -3067,7 +3428,7 @@ Examples RemoteButton - + 999+ @@ -3075,58 +3436,59 @@ Examples RemoteCallbacks - + remote: %1 - + failed to execute pre-push hook: bash not found не могу выполнить pre-push hook: bash не найден - + failed to execute pre-push hook: %1 не могу выполнить pre-push hook: %1 - + HTTPS Credentials учётные данные HTTPS - + SSH Passphrase Парольная фраза SSH - + Username: Имя пользователя: - + Password: Пароль: - + Passphrase: Парольная фраза: - + + authentication canceled аутентификация отменена - + From %1 Из %1 - - + + To %1 На %1 @@ -3134,47 +3496,47 @@ Examples RemoteDialog - + Push all tags Запушить все метки - + Update existing tags Обновить существующие метки - + Merge Слить - + Rebase Перебазировать - + Merge (No Fast-forward) Слить (никаких fast-forward) - + Merge (Fast-forward Only) Слить (только fast-forward) - + Set upstream Выставить upstream - + Force Принудительно - + Remote Reference: Удаленная ссылка: @@ -3222,42 +3584,42 @@ Examples RemotePage - + Remote Repository URL URL удаленного репозитория - + Choose protocol to authenticate with the remote. Выберите протокол для аутентификации перед remote. - + Enter the URL of the remote repository or browse for a local directory Ddtlbnt URL удаленного репозитория или проследуйте в локльную директорию - + ... - + Choose Directory Выберите директорию - + Examples of valid URLs include:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> Примеры валидных URL включают:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> - + Protocol: Протокол: - + URL: @@ -3265,12 +3627,12 @@ Examples RemoteTableModel - + Name Имя - + URL @@ -3278,61 +3640,74 @@ Examples RemotesPanel - + Delete Remote? Удалить Remote? - + Are you sure you want to delete '%1'? Вы уверены, что вы хотите удалить '%1'? - + Delete Удалить + + RenameBranchDialog + + + Name: + Имя: + + + + Rename Branch + + + RepoModel - + Connecting Соединяемся - + open открытые - + recent недавние - + remote удаленные - - + + none нет - + Clone Repository Клонировать репозиторий - + Open Existing Repository Открыть существующий репозиторий - + Initialize New Repository Инициилизировать новый репозиторий @@ -3340,130 +3715,161 @@ Examples RepoView - + Indexing... Индексируется... - + Search Поиск - The indexer worker process crashed. If this problem persists please contact us at support@gitahead.com. - Процесс-работник индексатора упал. Если проблема постоянна, пожалуйста, свяжитесь с нами на через support@gitahead.com. + Процесс-работник индексатора упал. Если проблема постоянна, пожалуйста, свяжитесь с нами на через support@gitahead.com. - + Indexer Crashed Индексатор упал - + Stage Directory? Добавить директорию? - + Are you sure you want to stage '%1'? Вы уверенны, что хотите добавить '%1'? - + This will result in the addition of %1 files. Это приведёт к добавлению %1 файлов. - + more than 100 больше 100 - + Stage Directory Добавить директорию - + Stop prompting to stage directories Перестать подтверждать добавление директорий - + Stage Large File? Добавить большой файл? - + Are you sure you want to stage '%1' with a size of %2? Вы уверены, что хотите добавить '%1' с размером %2? - + Stage Добавить - + Track with LFS Отслеживать с помощью LFS - + This repository has LFS enabled. Do you want to track the file with LFS instead? В этом репозитории включено LFS. Желаете отслеживать файл через LFS? - + Stop prompting to stage large files Перестать подтверждать добавление больших файлов - + Esc - + stage - + Git LFS was not found on the PATH. <a href='https://git-lfs.github.com'>Install Git LFS</a> to use LFS integration. Git LFS не найден в PATH. <a href='https://git-lfs.github.com'>Установите Git LFS</a> для использовани интеграции с LFS. - + untracked file неотслеживаемый файл - + untracked files неотслеживаемые файлы - + Remove Untracked Files Удалить неотслеживаемые файлы - + Remove %1 %2? Удалить %1 %2? - + This action cannot be undone. Это дествие не может быть отменено. - + Remove Удалить + + + + Certificate Error + + + + + SSL verification disabled for this repository + + + + + [http] + sslVerify = false + +was added to %1/config + + + + + SSL verification disabled for all git repositories + + + + + [http] + sslVerify = false + +was added to %1 + + Pull Request @@ -3480,754 +3886,841 @@ Examples создать pull request - - - + + + Git LFS - + Initialize Инициализировать - + initialize - + Git LFS initialized. Git LFS инициализирована. - + Deinitialize Деинициализировать - + deinitialize - + Git LFS Deinitialized. Git LFS деинициализирован. - + Lock Заблокировать - + Unlock Разблокировать - - + + Unable to %1 '%2' - %3 Не смог %1 '%2' - %3 - + Unable to %1 - %2 Не смог %1 - %2 - + %1 remotes - + Fetch All Забрать всё - + Fetch Забрать - - - + + + <i>no remote</i> <i>нет remote</i> - + Unable to fetch. No upstream is configured for the current branch, and there isn't a remote called 'origin'. Не могу забрать. Upstream не сконфигурирован для текущей ветки, и remote 'origin' не существует. - - + + Fetch canceled. Забор отменён. - + fetch from забрать из - + + You may disable ssl verification <a href='action:sslverifyrepo'>for this repository</a> or overall disable ssl verification <a href='action:sslverifygit'>for all repositories</a>. + + + + - + Everything up-to-date. Всё - новейшее. - - - + + + <i>no branch</i> <i>нет ветки</i> - + %1 from %2 %1 из %2 - + Pull Утянуть - + <i>no upstream</i> <i>нет upstream</i> - + Merge Слить - + %1 into %2 %1 в %2 - + Fast-forward - + %2 to %1 %2 на %1 - + + Rebase Перебазировать - + %2 on %1 %2 на %1 - + The repository is empty. - + The current branch '%1' has no upstream branch. Текущая ветка '%1' не имеет upstream-ветки. - - + + Already up-to-date. Уже самое новое. - + Unable to fast-forward. Не могу fast-forward. - + fast-forward - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='%1'>fast-forward</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Вы могли бы согласовать ваши изменения с конфликтующими файлами путём <a href='action:stash'>схоронения</a> перед тем как вы <a href='%1'>fast-forwardните</a>. Потом <a href='action:unstash'>вытащите из схрона</a> для возвращения ваших изменений. - + If you want to create a new merge commit instead of fast-forwarding, you can <a href='%1'>merge without fast-forwarding </a> instead. Если вы хотите создать новый коммит слияния вместо fast-forwardа, вы можете <a href='%1'>слить без fast-forwardа</a>. - - - - + + + + merge слить - - + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:merge'>merge</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Вы могли бы перебазировать путём <a href='action:stash'>схоронения</a> перед попыткой <a href='action:merge'>слить</a>. Затем <a href='action:unstash'>вытащите из схрона</a> для восстановления ваших изменений. - - + + + Abort Прервать - + Some merged files have unstaged changes В некоторых слитых файлах есть недобавленные изменения - + abort merge прервать слияние - - - + + + revert откатить - - - + + + cherry-pick - - - + + + rebase перебазировать - + + Continue ongoing rebase + + + + + Invalid head. + + + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:rebase'>rebase</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Вы могли бы перебазировать путём <a href='action:stash'>схоронения</a> перед попыткой <a href='action:merge'>перебазировать</a>. Затем <a href='action:unstash'>вытащите из схрона</a> для восстановления ваших изменений. - + + %1/%2 - + %1 - %2 - + Apply Применить - There was a merge conflict. The rebase has been aborted - Конфликт слияния. Перебазирование прервано + Конфликт слияния. Перебазирование прервано - + %1 - %2 <i>already applied</i> %1 - %2 <i>уже применён</i> - + %1 - %2 as %3 %1 - %2 как %3 - - - + + + squash объединить - + Revert Откатить - + Revert "%1" This reverts commit %2. - + <i>detached HEAD</i> <i>отсоединённая HEAD</i> - + %1 on %2 %1 на %2 - + Cherry-pick - Force Push? - Принудительно запушить? + Принудительно запушить? - + Are you sure you want to force push? Хотите насильно запушить? - + The remote will lose any commits that are reachable only from the overwritten reference. Dropped commits may be unexpectedly reintroduced by clones that already contain those commits locally. remote потеряет коммиты, которые достижимы только из перезаписанной ссылки. Выброшенные коммиты могут быть неожиданно возвращены клонами, которые уже содержат эти коммиты локально. - + Force Push Принудительный пуш - + <i>no reference</i> <i>нет ссылки</i> - + Push Запушить - + Push (Force) Запушить (принудительно) - - + + %1 to %2 %1 в %2 - - + + You are not currently on a branch. Вы сейчас не на ветке. - + Create a commit to add the default '%1' branch. Создать коммит и добавить по-умолчанию ветку '%1'. - + You can <a href='action:checkout'>checkout</a> a branch then <a href='action:push'>push</a> again, or <a href='action:push-to'>push to an explicit branch</a>. Вы можете <a href='action:checkout'>перейти на</a> ветку, затем <a href='action:push'>запушить</a> снова, или <a href='action:push-to'>запушить на явную ветку</a>. - + The current branch '%1' has no default remote. Текущая ветка '%1' не имеет remote по-умолчанию. - + You may want to <a href='action:add-remote?name=origin'>add a remote named 'origin'</a>. Then <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a> to begin tracking a remote branch called 'origin/%1'. Ва могли хотеть <a href='action:add-remote?name=origin'>добавить remote, названное 'origin'</a>. Тогда <a href='action:push?set-upstream=true'>запушьте и установите upstream текущей ветки</a>, чтобы начать отслеживать удаленную ветку, названную 'origin/%1'. - + You can also <a href='action:push-to'>push to an explicit URL</a> if you don't want to track a remote branch. Вы также можете <a href='action:push-to'>запушить на явный URL</a>, если не хотите отслеживать remote branch. - + To begin tracking a remote branch called '%1', <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a>. Чтобы начать отслеживать удаленную ветку, названную called '%1', <a href='action:push?set-upstream=true'>запушьте и установите upstream для текущей ветки</a>. - + To push without setting up tracking information, <a href='action:push?ref=%1'>push '%2'</a> explicitly. Чтобы запушить без установки информации для отслеживания, <a href='action:push?ref=%1'>запушьте '%2'</a> явно. - + Push canceled. Пуш отменён. - + push to запушить в - + The tag update may cause the remote to lose commits. Обновление метки может привести к потере коммитов у remote. - + If you want to risk the remote losing commits, you can <a href='action:push?ref=%1&to=%2&force=true'>force push</a>. Если вы хотите рискнуть потерей коммитов у remote, вы можете <a href='action:push?ref=%1&to=%2&force=true'>запушить принудительно</a>. - You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push'>push</a> again. - Вы могли бы хотеть сначала интегрировать коммиты remote путём <a href='action:pull'>утягивания</a>. Затем <a href='action:push'>запушьте</a> снова. + Вы могли бы хотеть сначала интегрировать коммиты remote путём <a href='action:pull'>утягивания</a>. Затем <a href='action:push'>запушьте</a> снова. - If you really want the remote to lose commits, you may be able to <a href='action:push?force=true'>force push</a>. - Если вы действительно хотите, чтобы remote потеряло коммиты, вы могли бы <a href='action:push?force=true'>запушить принудительно</a>. + Если вы действительно хотите, чтобы remote потеряло коммиты, вы могли бы <a href='action:push?force=true'>запушить принудительно</a>. - + Commit? Закоммитить? - + Are you sure you want to commit on a detached HEAD? Вы уверенны, что хотите закоммитить поверх отсоединённой HEAD? - + <p>You are in a detached HEAD state. You can still commit, but the new commit will not be reachable from any branch. If you want to commit to an existing branch, checkout the branch first.</p> <p>Вы - в состоянии с отсоединённой HEAD. Вы всё ещё можете коммитить, но новый коммит не будет доступен из какой-либо ветки. Если вы хотите закоммитить на существующую ветку, сперва извлеките ветку.</p> - - + + Commit Коммит - - + + <i>no commit</i> <i>нет коммита</i> - + commit коммит - + This commit was signed with a generated user name and email. Этот коммит был подписан сгенерированными именем пользователя и почтой. - + Consider setting the user name and email in <a href='action:config?global=true'>global settings</a>. Рассмотрите вариант установки имени и почты в <a href='action:config?global=true'>глобальных настройках</a>. - + If you want to limit the name and email settings to this repository, <a href='action:config'>edit repository settings</a> instead. Если вы хотите ограничить настройки имени и почты только этим репозиторием, <a href='action:config'>отредактируйте настройки репозитория</a> вместо этого. - + After settings have been updated, <a href='action:amend'> amend this commit</a> to record the new user name and email. После того, как настройки были обновлены, <a href='action:amend'> дополните этот коммит</a> для записи нового имени пользователя и почты. - + file файл - + files файлы - + %1 - %2 %3 - - + + Checkout Перейти - + Checkout Detached HEAD? Перейти на отсоединённую HEAD? - + Checkout Detached HEAD Перейти на отсоединённую HEAD - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to reset the existing local branch '%2' to this commit instead? Извлечение удаленной ветки '%1' приведёт к состоянию отсоединённой HEAD. Хотите сбросить существующую локальную ветку '%2' на этот коммит вместо этого? - + Reset Local Branch Сбросить локальную ветку - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to create a new local branch called '%2' to track it instead? Извлечение удаленной ветки '%1' приведёт к состоянию отсоединённой HEAD. Хотите создать новую локальную ветку, названную '%2', чтобы отслеживать её, вместо этого? - + Create a local branch to start tracking remote changes and make new commits. Check out the detached HEAD to temporarily put your working directory into the state of the remote branch. Создайте локальную ветку чтобы начать отслеживать изменения remote и создайте новые коммиты. Извлеките отсоединённую HEAD чтобы временно перевести вашу рабочую директорию в состояние удаленной ветки. - + Create Local Branch Создать локальную ветку - + checkout перейти - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='action:checkout?%1'>checkout '%2'</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. Вы могли бы согласовать ваши изменения с конфликтующими файлами путём <a href='action:stash'>схоронения</a> перед тем как вы <a href='action:checkout?%1'>извлечёте'%2'</a>. Потом <a href='action:unstash'>вытащите из схрона</a> для возвращения ваших изменений. - + New Branch Новая ветка - + create new branch создать новую ветку - + (no branch) (без ветки) - + WIP on %1: %2 %3 WIP на %1: %2 %3 - + <i>working directory</i> <i>рабочая копия</i> - + Stash Схрон - + stash схрон - + Apply Stash Применить схрон - + apply stash применить схрон - + Drop Stash Выбросить содержимое схрона - + drop stash выбросить содержимое схрона - + Pop Stash Извлечь из копилки - + pop stash вынуть из схрона - + %1 as %2 %1 как %2 - + Tag Метка - + tag метка - - - + + Amend Дополнить - - - + + Amending commit %1 + + + + + %1 to %2 + update ref + %1 в %2 + + + + + + + + Reset Сбросить - Amend? - Дополнить? + Дополнить? - Reset? - Сбросить? + Сбросить? - Are you sure you want to amend '%1'? - Вы уверены, что хотите дополнить '%1'? + Вы уверены, что хотите дополнить '%1'? - + Are you sure you want to reset '%1' to '%2'? Вы уверены, что хотите сбросить '%1' на '%2'? - + <p>Some commits may become unreachable from the current branch.</p> <p>Некоторые коммиты могут стать недостижимы из текущей ветки.</p> - + <p>Resetting will cause you to lose uncommitted changes. Untracked and ignored files will not be affected.</p> <p>Сброс приведёт к тому, что вы потеряете незакоммиченные изменения. Неотслеживаемые и игнорируемые файлы не будут затронуты.</p> - + <p>Your branch appears to be up-to-date with its upstream branch. Resetting may cause your branch history to diverge from the remote branch history.</p> <p>Ваша ветка кажется уже самой новой, соответствующей своей upstream-ветке. Сброс может привести историю вашей ветки к расхождению с историей ветки remote.</p> - + + amend дополнить - + reset сбросить - + + %1 of %2 submodules %1 из %2 подмодулей - - + + Update Обновить - + + update submodule обновить подмодуль - + + The indexer worker process crashed. If this problem persists please contact us at <TODO: replace.support@gitahead.com>. + + + + + Please resolve conflicts before continue + + + + + Conflict + + + + + Rebase finished + + + + + Force Push to %1? + + + + + You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push?to=%1'>push</a> again. + + + + + If you really want the remote to lose commits, you may be able to <a href='action:push?to=%1&force=true'>force push</a>. + + + + + Reset canceled. + + + + + Untouched + + + + Invalid Submodule Repository Неправильный репозиторий подмодуля - + The submodule '%1' doesn't have a valid repository. You may need to init and/or update the submodule to check out a repository. Подмодуль '%1' не имеет верного репозитория. Вам может быть нужно инициализировать и/или обновить подмодуль для извлечения репозитория. - + + No terminal executable found + + + + + No terminal executable was found. Please configure a terminal in the configuration. + + + + + Open Configuration + + + + There was a merge conflict. Конфликт слияния. - + Resolve conflicts, then commit to conclude the %1. See <a href='expand'>details</a>. Разрешите конфликты, затем закоммитьте, чтобы завершить %1. См. <a href='expand'>подробности</a>. - + Resolve conflicts in each conflicted (!) file in one of the following ways: Разрешите конфликты в каждом конфликтующем (!) файле одним из следующих способов: - + 1. Click the 'Ours' or 'Theirs' button to choose the correct change. Then click the 'Save' button to apply. 1. Щёлкните кнопку 'Наш' или 'Их', чтобы выбрать правильное изменение. Затем щёлкните кнопку 'Сохранить', чтобы применить. - + 2. Edit the file in the editor to make a different change. Remember to remove conflict markers. 2. Редактируйте файл в редакторе, чтобы сделать разные изменения. Не забудьте удалить маркеры конфликта. - + 3. Use an external merge tool. Right-click on the files in the list and choose 'External Merge'. 3. Используйте внешний инструмент слияния. Щелчок правой на файлах в списке, и выберите 'Внешнее слияние'. - + After all conflicts in the file are resolved, click the check box to mark it as resolved. После того, как все конфликты разрешены, кликните флажок, чтобы пометить их разрешёнными. - + After all conflicted files are staged, commit to conclude the %1. После того, как все конфликтующие файлы добавлены, закоммитьте, чтобы завершить %1. - + You can <a href='action:abort'>abort</a> the %1 to return the repository to its previous state. Вы можете <a href='action:abort'>прервать</a> %1 , чтобы вернуть репозиторий в предыдущее состояние. @@ -4235,12 +4728,12 @@ This reverts commit %2. Repository - + Unknown error Неизвестная ошибка - + git-lfs not found git-lfs не найдена @@ -4248,7 +4741,7 @@ This reverts commit %2. SearchField - + Search Поиск @@ -4256,32 +4749,32 @@ This reverts commit %2. SearchPanel - + Enable indexing Включить индексацию - + terms критерии - + lines строк - + Limit commits to: Ограничиться коммитами: - + Diff context: Контекст diffа: - + Remove Index Удалить индекс @@ -4289,32 +4782,32 @@ This reverts commit %2. Settings - + Prompt to edit stash message before stashing Запрашивать редактировани сообщения коммита перед действиями со схроном - + Prompt to edit commit message before merging Запрашивать редактировани сообщения коммита перед слиянием - + Prompt to edit commit message before reverting Запрашивать редактировани сообщения коммита перед откатом - + Prompt to edit commit message before cherry-picking Запрашивать редактировани сообщения коммита перед cherry-picking - + Prompt to stage directories Подтверждать добавление директорий - + Prompt to stage large files Подтверждать добавление больших файлов @@ -4322,62 +4815,67 @@ This reverts commit %2. SettingsDialog - + Esc - + Global git settings can be overridden for each repository in the corresponding repository configuration page. Глобальные настройки git могут быть переопределены для каждого репозитория в его настройках. - + Edit Config File... Редактировать конфиг... - + General Общие - + Diff - + Tools Инструменты - + Window Окно - + Editor Редактор - + Update Обновить - + Plugins Плагины - + Misc Прочее - + + Hotkeys + + + + Terminal Терминал @@ -4385,22 +4883,22 @@ This reverts commit %2. ShowTool - + Finder - + Explorer - + Default File Browser - + Show in %1 Показать в %1 @@ -4408,14 +4906,14 @@ This reverts commit %2. SideBar - + Close Закрыть - - + + Remove Удалить @@ -4440,57 +4938,57 @@ This reverts commit %2. Открыть репозиторий - + Initialize New Repository Инициилизировать новый репозиторий - + Add %1 Account Добавить аккаунт %1 - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>Вы уверенны, что хотите удалить ассоциацию с удаленным репозиторием для %1?</p><p>Локальный клон сам затронут не будет.</p> - + Remove Repository Association? Удалить ассоциацию с репозиторием? - + Clear All Recent Очистить все недавние - + Show Full Path Показать полный путь - + Filter Non-existent Paths Фильтровать несуществующие пути - + Refresh Remote Accounts Обновить удаленные аккаунты - + Show Full Name Показать полное имя - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>Вы уверены, что хотите удалить аккаунт %1 для '%2'?</p><p>Только ассоциация с аккаунтом будет удалена. Настройки remotes и локальные клоны не будут затронуты.</p> - + Remove Account? Удалить аккаунт? @@ -4498,108 +4996,108 @@ This reverts commit %2. StartDialog - + Choose Repository Выберите репозиторий - + Understand your history! Понимай свою историю! - + Clone Repository Клонировать репозиторий - + Open Existing Repository Открыть существующий репозиторий - + Open Repository Открыть репозиторий - + Initialize New Repository Инициализировать новый репозиторий - + Clear All Очистить всё - + Show Full Path Показать полный путь - + Filter Non-existent Paths Показать несуществующие пути - + Repositories: Репозитории: - + Refresh Обновить - + Show Full Name Показать полное имя - + Remote: - + View Getting Started Video Показать вводное видео - + Clone Клонировать - + Open Открыть - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>Вы уверены, что хотите удалить аккаунт %1 для '%2'?</p><p>Только ассоциация с аккаунтом будет удалена. Конфигурации remote и локальные клоны не будут затронуты.</p> - + Remove Account? Удалить аккаунт? - - + + Remove Удалить - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>Вы уверены, что хотите удалить ассоциацию с удаленным репозиторием для %1?</p><p>Сам по себе локальный клон не будет затронут.</p> - + Remove Repository Association? Удалить ассоциацию с репозиторием? @@ -4607,7 +5105,7 @@ This reverts commit %2. SubmoduleTableModel - + Name Имя @@ -4617,32 +5115,32 @@ This reverts commit %2. - + Branch Ветка - + Initialized Инициализирован - + Deinitializing '%1' will remove its working directory. Are you sure you want to deinitialize? Деинициализация '%1' удалит его рабочую директорию. Вы уверены, что хотите деинициализировать? - + Deinitialize Submodule? Деинициализировать подмодуль? - + The submodule working directory contains uncommitted changes that will be lost if you continue. Рабочая директория подмодуля содержит незакоммиченные изменения, которые будут потеряны, если вы продолжите. - + Deinitialize Деинициализировать @@ -4676,31 +5174,107 @@ This reverts commit %2. Анотированная - + Name Имя + + TemplateDialog + + + Name + Имя + + + + Content + + + + + + Add + + + + + use %1 to declare the position of the cursor. + + + + + use ${files:x} to add all updated file names, +x (number) determines the number of maximum files shown + + + + + Remove + Удалить + + + + Up + + + + + Down + + + + + Import + + + + + Export + + + + + Open File + + + + + + Gittyup Templates (*%1) + + + + + Save Templates + + + + + Replace + Заменить + + TerminalPanel - - + + Install Установить - + Name: Имя: - + Location: Место: - + Uninstall Отменить установку @@ -4708,32 +5282,32 @@ This reverts commit %2. TextEdit - + Replace... - + Replace All... - + Ignore Игнорировать - + Ignore All - + Add to User Dictionary - + Do not Ignore @@ -4741,111 +5315,154 @@ This reverts commit %2. ThemeDialog - Native Theme - Родная тема + Родная тема - + A flexible look matching system colors "Гибки вид, соответствующий системным цветам - + Dark Theme Тёмная тема - + + Pick a theme for Gittyup + + + + + Default Theme + + + + + A consistent bright theme + + + + A consistent look optimal for reducing eye strain "Последовательный" вид, оптимальный для снижения нагрузки на глаза + + + System Theme + + ToolBar - + Show repository sidebar Показать боковую панель репозитория - + Previous Предыдущий - + Next Следующий - + Fetch Забрать - + Pull Утянуть - + Merge Слить - + Rebase Перебазировать - + Push Запушить - + Checkout Перейти - + Stash Схрон - + Pop Stash Вынуть из схрона - + + Open Terminal + + + + + Open file manager + + + + Configure Settings Настроить + + + Repository settings + + - + Application settings + + + + + Show Log Показать журнал - - Diff View - Смотреть diff + + Double Tree View + - + Diff View + Смотреть diff + + + Tree View Смотреть дерево - + Show Starred Commits Показать отзвёзденные коммиты - + Hide Log Скрыть журнал @@ -4853,32 +5470,42 @@ This reverts commit %2. ToolsPanel - + Keep backup of merge files (.orig) Не удалять резервную копию файлов слияний (.orig) - + External editor: Внешний редактор: - + External diff: Внешний diff: - + External merge: Внешнее слияние: - + Backup files: Файлы резервных копий: - + + Terminal emulator command: + + + + + File manager command: + + + + Configure Конфигурировать @@ -4886,20 +5513,77 @@ This reverts commit %2. TreeModel - + Submodule Подмодуль + + TreeView + + + Directory + Директория + + + + File + Файл + + + + Remove or discard %1? + + + + + Are you sure you want to remove or discard all changes in '%1'? + + + + + This action cannot be undone. + Это дествие не может быть отменено. + + + + + Discard + + + + + discard + + + + + TreeWidget + + + Search: + + + + + Regex + + + + + Case Sensitive + + + UpToDateDialog - + Already Up-to-date Уже самое новое - + %1 is already up-to-date. You have version %2. %1 уже самое новое. У вас версия %2. @@ -4907,55 +5591,76 @@ This reverts commit %2. UpdateDialog - + Update %1 Обновить %1 - + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. The new version will be soon available in your package manager. Just update your system.</p><b>Release Notes:</b> + + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. Would you like to download it now?</p><b>Release Notes:</b> <h3>Новая версия %1 доступна!</h3><p>%1 %2 теперь доступна - у вас же %3. Желаете загрузить её сейчас?</p><b>Примечания к релизу:</b> - + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3.</p><p>If you downloaded the flatpak package over a package manager or from flathub.org <br/>you don't have to install manually a new version. It will be available within the next <br/>days during your system update: <code>flatpak update</code></p><b>Release Notes:</b> + + + + Automatically download and install updates Автоматически загружать и ставить обновления - + Install Update Установить обновление - + Remind Me Later Напомнить мне позже - + Skip This Version Пропустить эту версию + + + Ok + + + + + Donate + + UpdatePanel - + Check for updates automatically Проверять обновления автоматически - + Automatically download and install updates Автоматически загружать и ставить обновления - + Check Now Проверить сейчас - + Software Update: Обновление ПО: @@ -4963,17 +5668,17 @@ This reverts commit %2. UpdateSubmodulesDialog - + Recursive Рекурсивно - + Init Инициализировать - + Update Обновить @@ -4981,7 +5686,7 @@ This reverts commit %2. Updater - + Installer failed to start Установщик не смог запуститься @@ -5002,47 +5707,53 @@ This reverts commit %2. - + + Helper application failed to start Помощник установщика не смог запуститься - + Update Failed Обновление не удалось - + Unable to check for updates Не могу проверить наличие обновлений - + Unable to download update Не могу скачать обновление - + Unable to open temporary file Не могу открыть временный файл - + Unable to install update Не могу установить обновление - - Some windows failed to close - Некоторые окна не смогли закрыться + + Some windows failed to close. You can download the binary manually from %1 + - + Some windows failed to close + Некоторые окна не смогли закрыться + + + Unknown install error Неизвестная ошибка установки - + + Installer script failed: %1 Скрипт установщика не выполнил свою задачу: %1 @@ -5050,94 +5761,139 @@ This reverts commit %2. WindowPanel - + Add New Theme Добавить новую тему - + Edit Current Theme Редактировать текущую тему - + Create Theme Создать тему - + Theme Name Имя темы - + Restart? Перезапустить? - + The application must be restarted for the theme change to take effect. Приложение должно быть перезапущено для того чтобы тема заработала. - + Do you want to restart now? Хотите перезапустить сейчас? - + Restart Перезапуск - + Later Позже - + Show full repository path Показывать полный путь к репозиторию - + Hide automatically Скрывать автоматически - + Open submodules in tabs Открыть подмодули во вкладках - + Open all repositories in tabs Открыть все репозитории во вкладках - + + Hide Menubar + + + + + Show Avatars + + + + Theme: Тема: - + Title: Название: - + Log: Журнал: - + Tabs: Вкладки: - + + View: + + + + Prompt: + + _FileWidget::Header + + + + Use Theirs: Delete + + + + + + Use Ours: Delete + + + + + both: %1 + + + + + ours: %1 + + + + + theirs: %1 + + + diff --git a/l10n/gittyup_zh_CN.ts b/l10n/gittyup_zh_CN.ts index 01be3343..6fce7338 100644 --- a/l10n/gittyup_zh_CN.ts +++ b/l10n/gittyup_zh_CN.ts @@ -4,55 +4,63 @@ AboutDialog - + About %1 关于 %1 - + Understand your history! 了解您的提交历史! - + Changelog 变更日志 - + Acknowledgments 致谢 - + Privacy 隐私 - Usage reporting has been disabled. Restart the application for changes to take effect. - 使用情况报告已被禁用。请重启应用程序以使更改生效。 + 使用情况报告已被禁用。请重启应用程序以使更改生效。 - Usage Reporting Disabled - 使用情况报告已禁用 + 使用情况报告已禁用 Account - + + Connection failed + 连接失败 + + + <b>Note:</b> Basic authentication is not supported if you have two-factor authentication enabled. Use a <a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>personal access token</a> in the password field instead. <b>注意:</b> 如果启用了双重身份验证,则不支持基本身份验证。在密码字段中使用<a href='https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/'>个人访问令牌</a>代替。 - + + <b>Note:</b> Only Basic authentication is currently supported + + + + <b>Note:</b> Basic authentication is not supported. Use a <a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>personal access token</a> in the password field instead. <b>注意:</b> 不支持基本身份验证。在密码字段中使用<a href='https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html'>个人访问令牌</a>代替。 - + Authentication failed 验证失败 @@ -60,7 +68,7 @@ AccountDialog - + Add Remote Account 添加远程帐户 @@ -90,32 +98,32 @@ 地址URL: - + Replace? 确定替换吗? - + An account of this type already exists. 此类型的帐户已存在。 - + Would you like to replace the previous account? 您要替换以前的帐户吗? - + Replace 替换 - + Cancel 取消 - + Connection Failed 连接失败 @@ -123,18 +131,18 @@ AddRemoteDialog - - + + Add Remote 添加远程仓库 - + Name: 名称: - + URL: 地址URL: @@ -142,7 +150,7 @@ AdvancedButton - + Advanced Search 高级搜索 @@ -150,219 +158,263 @@ AdvancedSearchWidget - + Author: 作者: - + Author name 作者姓名 - + Email: 电子邮件: - + Author email 作者电子邮件 - + Message: 信息: - + Commit message 提交讯息 - + Date: 日期: - + Specific commit date 具体提交日期 - + After: 之后: - + Commits after date 在此日期之后提交 - + Before: 之前: - + Commits before date 在此日期之前提交 - + File: 文件: - + File name 文件名称 - + Path: 路径: - + File path 文件路径 - + Scope: 范围: - + Hunk header text 补丁片段的头信息 - + Context: 内容: - + Diff context (white) 差异内容(白色) - + Addition: 追加: - + Diff addition (green) 差异追加(绿色) - + Deletion: 删除: - + Diff deletion (red) 差异删除(红色) - + Comment: 注释: - + Source code comment 源代码注释 - + String: 字符串: - + Source code string literal 源代码字符串文字 - + Identifier: 识别: - + Source code identifier 源代码标识符 - + Search 搜索 - + Return 返回 + + AmendDialog + + + Author + + + + + Committer + + + + + Commit Message: + + + + + Amend + 修改 + + + + Cancel + 取消 + + Application - + SSL Errors SSL错误 - + Failed to set up SSL session. Do you want to ignore these errors? 无法设置SSL会话。您要忽略这些错误吗? + + AuthorCommitterDate + + + Author/Committer: + + + + + Author: + + + + + Committer: + + + Beanstalk - Connection failed - 连接失败 + 连接失败 Bitbucket - Connection failed - 连接失败 + 连接失败 BlameEditor - + Untitled 无标题 - + Not Tracked 未追踪 - + HEAD - + Working Copy 工作副本 - + Save File 保存文件 @@ -370,12 +422,12 @@ BlameMargin - + Not Committed 未提交 - + Invalid Signature 签名无效 @@ -383,17 +435,17 @@ BranchTableModel - + Name 名称 - + Upstream 上游 - + Rebase 变基(Rebase) @@ -401,17 +453,17 @@ CheckoutDialog - + Detach HEAD 游离的头 - + References: 参考文献: - + Checkout 检出 @@ -419,7 +471,7 @@ ClearButton - + Clear 清除 @@ -427,32 +479,32 @@ CloneDialog - + Initialize Repository 初始化仓库 - + Clone Repository 克隆仓库 - + Initialized empty repository into '%1' 将空仓库初始化为'%1' - + Cloned repository from '%1' into '%2' 将仓库从'%1'克隆到'%2' - + Initialize 初始化 - + Clone 克隆 @@ -460,33 +512,33 @@ ClonePage - + Clone Progress 克隆进度 - + The new repository will open after the clone finishes. 克隆完成后,将打开新的仓库。 - + Clone 克隆 - - + + clone 克隆 - + Clone canceled. 克隆已取消。 - + Failed to %1 into '%2' - %3 %1克隆到'%2'失败 - %3 @@ -494,27 +546,27 @@ CommitDetail - + Copy 复制 - + Range: 范围: - + Id: ID: - + initial commit 初次提交 - + Parents: 父: @@ -572,120 +624,181 @@ CommitEditor - + + T + + + + <b>Commit Message:</b> <b>提交消息:</b> - - + + Spell Check Language 拼写检查语言 - + The dictionary '%1' is invalid 字典 '%1' 无效 - + Spell checking is disabled. 拼写检查被禁用。 - + The choosen dictionary '%1.dic' is not a valid hunspell dictionary. 选定的字典 '%1.dic' 不是有效的 hunspell 字典。 - - + + Invalid dictionary '%1.dic' 无效的字典 '%1.dic' - + Edit User Dictionary 编辑用户字典 - + Stage All 全部暂存 - + Unstage All 全部取消暂存 - - + + Commit 提交 - + + Abort rebasing + + + + + Continue rebasing + + + + + Abort Merge + 中止合并(Merge) + + + + %1 + %1 + + + + %1 and %2 + + + + + %1, %2, and %3 + + + + + Merge + 合并 + + + + Revert + 还原 + + + + Cherry-pick + 拣选操作 + + + + Rebase + + + + + Abort %1 + 中止%1 + + + + Commit Rebase + + + Update %1 - 更新%1 + 更新%1 - Update %1 and %2 - 更新%1和%2 + 更新%1和%2 - Update %1, %2, and %3 - 更新%1,%2和%3 + 更新%1,%2和%3 - Update %1, %2, and %3 more files... - 更新%1,%2和%3多个文件... + 更新%1,%2和%3多个文件... - + Nothing staged 没有暂存 - + %1 of %2 file staged 已暂存%2个文件中的%1个 - + %1 of %2 files staged 已暂存%2个文件中的%1个 - + %1 file partially staged %1文件已部分暂存 - + %1 files partially staged 部分暂存了%1个文件 - + %1 unresolved conflict %1个未解决的冲突 - + %1 unresolved conflicts %1个未解决的冲突 - + all conflicts resolved 所有冲突已解决 - + Commit Merge 提交合并 @@ -693,114 +806,131 @@ CommitList - + Remove Untracked Files 删除未跟踪的文件 - + Apply 应用 - + Pop 填充(Pop) - + Drop 丢弃(Drop) - + Unstar 取消星标 - + Star 星标 - + Add Tag... 添加标签... - + New Branch... 新建分支... - Delete Tag %1 - 删除标签%1 + 删除标签%1 - Delete Branch %1 - 删除分支%1 + 删除分支%1 - + + Rename Branch + + + + + Delete Branch + + + + + Delete Tag + 删除标签 + + + Merge... 合并... - + Rebase... 变基... - + Squash... 聚合(Squash)... - + Revert 还原 - + Cherry-pick 拣选操作 - - - + + Checkout %1 检出%1 - + + Checkout + 检出 + + + Local branch is already checked out 本地分支已检出 - + This is a bare repository 这是一个纯仓库 - + Reset 重置 - + Soft 软性 - + Mixed 混合 - + Hard 硬性 @@ -808,12 +938,12 @@ CommitModel - + Uncommitted changes 未提交的更改 - + Checking for uncommitted changes 检查未提交的更改 @@ -821,128 +951,165 @@ CommitToolBar - + Show All Branches 显示所有分支 - + Show Selected Branch 显示选定的分支 - + Sort by Date 按日期排序 - + Sort Topologically 拓扑排序 - + Show Graph 显示图 - + Show Clean Status 显示清理状态 - + Compact Mode 紧凑模式 + + + Show Author + + + + + Show Date + + + + + Show Id + + ConfigDialog - + Esc 退出 - + General 一般 - + Diff 比较 - + Remotes 远程 - + Branches 分支 - + Submodules 子模块 - + Search 搜索 - + Plugins 插件 - + LFS LFS - + Edit Config File... 编辑配置文件... + + DateSelectionGroupWidget + + + Datetime source + + + + + Current + + + + + Manual + + + + + Original + + + DefaultWidget - + Clone repository 克隆仓库 - + Open existing repository 打开现有仓库 - + Open Repository 打开仓库 - + Initialize new repository 初始化新的仓库 - + Add %1 account 添加%1个帐户 - View getting started videos - 查看入门视频 + 查看入门视频 - + Contact us for support 联系我们以获得支持 @@ -950,47 +1117,47 @@ DeleteBranchDialog - + Are you sure you want to delete local branch '%1'? 您确定要删除本地分支'%1'吗? - + Delete Branch? 删除分支? - + Also delete the upstream branch from its remote 同时删除其远程上游分支 - + Delete 删除 - + delete '%1' from '%2' 从'%2'中删除'%1' - + Push 推送 - + Push canceled. 推送已取消。 - + Unable to push to %1 - %2 无法推送到%1-%2 - + The branch is not fully merged. Deleting it may cause some commits to be lost. 分支未完全合并。删除它可能会导致某些提交丢失。 @@ -998,56 +1165,81 @@ DeleteTagDialog - + Are you sure you want to delete tag '%1'? 您确定要删除标签'%1'吗? - + Delete Tag? 删除标签? - + Also delete the upstream tag from %1 同时从%1删除上游标签 - + Delete 删除 - + delete '%1' from '%2' 从'%2'中删除'%1' - + Push 推送 - + Push canceled. 推送已取消。 - + Unable to push to %1 - %2 无法推送到%1-%2 - + Delete Tag 删除标签 - + delete tag 删除标签 + + DetailView + + + + Author: + 作者: + + + + reset + 重置 + + + + Here you can set the author used for committing +These settings will not be saved permanently + + + + + Email: + 电子邮件: + + DiffPanel @@ -1081,17 +1273,17 @@ 添加的文件 - + Deleted files 删除的文件 - + Whitespace: 空格: - + Auto Collapse: 自动收合: @@ -1099,43 +1291,89 @@ DiffTool - + External Diff 外部比较 + + DiffTreeModel + + + Submodule + 子模块 + + DiffView - + Add new file 追加新文件 - + Or drag files here to copy into the repository 或将文件拖到此处以复制到仓库中 + + DoubleTreeWidget + + + Blame + + + + + Show Blame Editor + + + + + Diff + 比较 + + + + Show Diff View + 显示差异视图 + + + + Single Tree View + + + + + List View + + + + + Hide Untracked Files + + + DownloadDialog - + Update %1 更新%1 - + Downloading %1... 正在下载%1 ... - + Download Complete! 下载完成! - + Install and Restart 安装并重启 @@ -1143,17 +1381,17 @@ EditButton - + Edit Working Copy 编辑工作副本 - + Edit New Revision 编辑新修订 - + Edit Old Revision 编辑旧修订 @@ -1161,7 +1399,7 @@ EditTool - + Edit in External Editor 在外部编辑器中编辑 @@ -1169,47 +1407,47 @@ EditorPanel - + Tabs 标签页 - + Spaces 空间 - + Show heat map 显示热图 - + Font: 字体: - + Font size: 字体大小: - + Indent using: 缩进使用: - + Indent width: 缩进宽度: - + Tab width: 标签页宽度: - + Blame margin: 追踪边际: @@ -1217,12 +1455,12 @@ EditorWindow - + '%1' has been modified. Do you want to save your changes? '%1'已被修改。您要保存更改吗? - + Save Changes? 您要保存更改吗? @@ -1230,22 +1468,22 @@ ExternalToolsDialog - + Configure External Tools 配置外部工具 - + Detected Tools 检测工具 - + User Defined Tools 用户定义工具 - + Select Executable 选择可执行文件 @@ -1253,17 +1491,17 @@ ExternalToolsModel - + Name 名称 - + Command 命令 - + Arguments 参数 @@ -1271,168 +1509,244 @@ FileContextMenu - + Revision Not Found 找不到修订 - + The selected file doesn't have a %1 revision. 所选文件没有%1版本。 - + Bash Not Found 找不到Bash - + Bash was not found on your PATH. 在您的PATH上找不到Bash。 - + Bash is required to execute external tools. Bash是执行外部工具所必需的。 - + Stage 暂存 - + Unstage 取消暂存 - - + + Discard Changes 放弃更改 - + Discard Changes? 您确定要放弃更改吗? - + Are you sure you want to discard changes in the selected files? 您确定要放弃所选文件中的更改吗? - + This action cannot be undone. 此操作无法撤消。 - + + (Submodule) + + + + %1 files %1个文件 - + Discard 丢弃 - + discard 丢弃 - + Remove Untracked Files 删除未跟踪的文件 - + Ignore 忽略 - + Checkout 检出 - + Unlock 解除锁定 - + Lock 锁定 - + Copy File Name 复制文件名 - + Filter History 筛选记录 - + Navigate to 导航至 - + Next Revision 下一个修订 - + next 下一个 - + Previous Revision 上一个修订 - + previous 上一个 - + Unset Executable 未设置可执行文件 - + Set Executable 设置可执行 - + + Save Selected Version as ... + + + + + Select new file directory + + + + + Saving files + + + + + Saving files of selected version to disk + + + + + Save file + + + + + Invalid Blob + + + + + Open this version + + + + + Opening file + + + + + Open + + + + + open file + + + + + Blob is invalid. + + + + + + Unable to checkout bare repositories + + + + + Unable to open files from bare repository + + + + + The file is already in the current working directory + + + + edit 编辑 - + diff 比较 - + merge 合并 - + External Tool Not Found 找不到外部工具 - + Failed to execute external %1 tool. 无法执行外部%1工具。 @@ -1440,190 +1754,174 @@ FileList - Sort By - 排序方式 + 排序方式 - Select - 选择 + 选择 - Name - 名称 + 名称 - Status - 状态 + 状态 - Ignore Whitespace (-w) - 忽略空格(-w) + 忽略空格(-w) - Added - 添加的 + 添加的 - Deleted - 删除的 + 删除的 - Modified - 修改的 + 修改的 - Renamed - 更名的 + 更名的 - Copied - 复制的 + 复制的 - Ignored - 忽略的 + 忽略的 - Untracked - 未追踪的 + 未追踪的 - Unreadable - 不可读 + 不可读 - Conflicted - 矛盾的 + 矛盾的 - Unmodified - 未修改的 + 未修改的 - Type Change - 类型变更 + 类型变更 FileWidget - + LFS LFS - - + + Unlock 解除锁定 - - + + Lock 锁定 - - + + Show Object 显示对象 - + Edit File 编辑文件 - + Discard File 丢弃文件 - + Directory 目录 - + File 文件 - + Remove %1? 删除%1? - + Discard Changes? 您确定要放弃更改吗? - + Are you sure you want to remove '%1'? 您确定要删除'%1'吗? - + Are you sure you want to discard all changes in '%1'? 您确定要放弃'%1'中的所有更改吗? - + This action cannot be undone. 此操作无法撤消。 - + Remove %1 删除%1 - + Discard Changes 放弃更改 - + Discard 丢弃 - + discard 丢弃 - - + + Collapse File 收合文件 - - + + Expand File 展开文件 - + Show Pointer 显示指针 @@ -1631,32 +1929,32 @@ FindWidget - + Search 搜索 - + Done 完成 - + Esc 退出 - + Not found 未找到 - + %1 match %1个匹配 - + %1 matches %1个匹配 @@ -1664,116 +1962,130 @@ GeneralPanel - - + + Fetch every 获取每个 - - + + minutes - - + + Push after each commit 每次提交后推送 - - Update submodules after pull - 拉取后更新子模块 + 拉取后更新子模块 - - + + Prune when fetching 获取时清除 - + No translation 没有翻译 - + Store credentials in secure storage 将凭证存储在安全存储中 - Allow collection of usage data - 允许收集使用情况数据 + 允许收集使用情况数据 - + + + Update submodules after pull and clone + + + + <a href='view'>View privacy policy</a> <a href='view'>查看隐私政策</a> - - + + User name: 用户名: - - + + User email: 用户电子邮件: - - + + Automatic actions: 自动动作: - + + Language: 语言: - + Credentials: 证书: - + + Credential store type: + + + + + Only allow a single running instance + + + + + Single instance: + + + Usage reporting: - 使用情况报告: + 使用情况报告: GitHub - Connection failed - 连接失败 + 连接失败 - Failed to authenticate with GitHub! - 无法通过GitHub进行身份验证! + 无法通过GitHub进行身份验证! - Successfully authenticated with GitHub! - 已通过GitHub成功认证! + 已通过GitHub成功认证! GitLab - Connection failed - 连接失败 + 连接失败 - + Authentication failed 验证失败 @@ -1781,7 +2093,7 @@ Header - + Filter %1 筛选%1 @@ -1789,114 +2101,183 @@ HostModel - + Connecting 连接中 + + HotkeyModel + + + Action + + + + + Keys + + + HunkWidget - + + Save 保存 - + + Undo 撤消 - + + Use Ours 使用我们的 - + + Use Theirs 用他们的 - + Edit Hunk 编辑补丁片段 - - + Discard Hunk 放弃补丁片段 - - Discard Hunk? - 您确定要放弃补丁片段吗? + + Discard selected lines? + - + + Are you sure you want to discard the changes in hunk from line %1 to %2 in '%3'? + + + + + Discard selected lines + + + + Discard Hunk? + 您确定要放弃补丁片段吗? + + + Are you sure you want to remove '%1'? 您确定要删除'%1'吗? - Are you sure you want to discard the hunk starting at line %1 in '%2'? - 您确定要舍弃'%2'中从行%1开始的块吗? + 您确定要舍弃'%2'中从行%1开始的块吗? - + This action cannot be undone. 此操作无法撤消。 - - + + Collapse Hunk 收合补丁片段 - - + + Expand Hunk 展开补丁片段 - + Esc 退出 - + Fix 固定 - + Edit 编辑 - + No newline at end of file 文件末尾没有换行符 + + IgnoreDialog + + + Ignore Pattern + + + Images - + <b>Size:</b> %1 <b>大小:</b>%1 + + InfoBox + + + Name: + + + + + Email: + 电子邮件: + + + + Commit date: + + + + + KeybindDialog + + + The selected key is the same for the following actions: +%1 + + + + + Please press the desired hotkey + + + LfsPanel - + Initialize LFS 初始化LFS - + Specify a glob pattern for tracking large files. Generally, large files are greater than 500kB, change frequently, @@ -1921,100 +2302,110 @@ Examples - + Pattern: 模式: - + Track 跟踪 - + days - + Fetch LFS objects from all references for the past 从过去的所有引用中获取LFS对象 - + reference days or 参照天数或 - + commit days 提交天数 - + View Environment 查看环境 - + git-lfs env (read only) git-lfs env(只读) - + Deinitialize LFS 取消初始化LFS - + Deinitialize LFS? 您确定要取消初始化LFS吗? - + Are you sure you want uninstall LFS from this repository? 您确定要从此仓库卸载LFS吗? - + Deinitialize 取消初始化 - + Server URL: 服务器地址URL: - + Prune Offset: 清除偏移: - + Fetch Recent: 获取最近: - + Advanced: 高级: + + + Included patterns: + + + + + Excluded patterns: + + Location - + %1 | %2 %1 | %2 - + NC NC - + Not Committed 未提交 @@ -2022,57 +2413,57 @@ Examples LocationPage - + Repository Location 仓库位置 - + Choose the name and location of the new repository. A new directory will be created if it doesn't already exist. 选择新仓库的名称和位置。如果尚不存在新目录,则会创建一个新目录。 - + Initialize 初始化 - + Clone 克隆 - + ... ... - + Choose Directory 选择目录 - + Name: 名称: - + Directory: 目录: - + Advanced: 高级: - + Create a bare repository 创建一个纯仓库 - + The new repository will be created at:<p style='text-indent: 12px'><b>%1</b></p> 新的仓库将在以下位置创建:<p style='text-indent:12px'><b>%1</b></p> @@ -2080,7 +2471,7 @@ Examples LogView - + Copy 复制 @@ -2088,59 +2479,59 @@ Examples MainWindow - + Invalid Git Repository 无效的Git仓库 - + %1 does not contain a valid git repository. %1没有包含有效的git仓库。 - - + + %1 - %2 %1 - %2 - + ahead: %1 前进:%1 - + behind: %1 后面:%1 - + up-to-date 最新 - - + + %1 (%2) %1 (%2) - + MERGING 合并 - + REVERTING 还原 - + CHERRY-PICKING 拣选操作 - + REBASING 变基 @@ -2148,575 +2539,583 @@ Examples MenuBar - + File 文件 - + New File 新建文件 - + New Window 新建窗口 - Ctrl+Meta+N - Ctrl+Meta+N + Ctrl+Meta+N - + Clone Repository... 克隆仓库... - Ctrl+Shift+N - Ctrl+Shift+N + Ctrl+Shift+N - + Initialize New Repository... 初始化新仓库... - Ctrl+Alt+N - Ctrl+Alt+N + Ctrl+Alt+N - + Open Repository... 打开仓库... - + Open Repository 打开仓库 - + Open Recent 打开最近 - + Close 关闭 - + Save 保存 - + Exit 退出 - + Edit 编辑 - + Undo 撤消 - + Redo 重做 - + Cut 剪切 - + Copy 复制 - + Paste 粘贴 - + Select All 全选 - + Find... 查找... - + Find Next 查找下一个 - + Find Previous 查找上一个 - + Use Selection for Find 查找选择的内容 - - Ctrl+E - Ctrl + E + + Show Double Tree View + - + Ctrl+E + Ctrl + E + + + View 查看 - + Refresh 刷新 - - + + Show Log 显示日志 - - + + Normal + + + + + Maximize + + + + + Show Tree View 显示树状视图 - + + Hide Menu Bar + + + + Repository 仓库 - + Configure Repository... 配置仓库... - + Stage All 暂存全部 - Ctrl++ - Ctrl++ + Ctrl++ - + Unstage All 取消暂存全部 - Ctrl+- - Ctrl+- + Ctrl+- - + Commit 提交 - Ctrl+Shift+C - Ctrl+Shift+C + Ctrl+Shift+C - + Amend Commit 修改提交 - - Ctrl+Shift+A - Ctrl+Shift+A + Ctrl+Shift+A - + Git LFS Git LFS - + Remove all locks 移除所有锁定 - + Initialize 初始化 - + Remote 远程 - + Configure Remotes... 配置远程... - + Fetch 获取 - Ctrl+Shift+Alt+F - Ctrl+Shift+Alt+F + Ctrl+Shift+Alt+F - + Fetch All 获取全部 - Ctrl+Shift+Alt+A - Ctrl+Shift+Alt+A + Ctrl+Shift+Alt+A - + Fetch From... 获取自... - Ctrl+Shift+F - Ctrl+Shift+F + Ctrl+Shift+F - + Pull 拉取 - Ctrl+Shift+Alt+L - Ctrl+Shift+Alt+L + Ctrl+Shift+Alt+L - + Pull From... 拉取自... - Ctrl+Shift+L - Ctrl+Shift+L + Ctrl+Shift+L - + Push 推送 - Ctrl+Shift+Alt+P - Ctrl+Shift+Alt+P + Ctrl+Shift+Alt+P - + Push To... 推送至... - Ctrl+Shift+P - Ctrl+Shift+P + Ctrl+Shift+P - + Branch 分支 - + Configure Branches... 配置分支... - + New Branch... 新建分支... - + + Rename Branch + + + + Checkout Current 检出(Checkout)当前 - Ctrl+Shift+Alt+H - Ctrl+Shift+Alt+H + Ctrl+Shift+Alt+H - + Checkout... 检出(Checkout)... - Ctrl+Shift+H - Ctrl+Shift+H + Ctrl+Shift+H - + Merge... 合并(Merge)... - Ctrl+Shift+M - Ctrl+Shift+M + Ctrl+Shift+M - + Rebase... 变基(Rebase)... - Ctrl+Shift+R - Ctrl+Shift+R + Ctrl+Shift+R - + Squash... 聚合(Squash)... - Ctrl+Shift+Q - Ctrl+Shift+Q + Ctrl+Shift+Q - + Abort Merge 中止合并(Merge) - + Submodule 子模块 - + Configure Submodules... 配置子模块... - + Update All 更新全部 - Ctrl+Shift+Alt+U - Ctrl+Shift+Alt+U + Ctrl+Shift+Alt+U - + Update... 更新... - Ctrl+Shift+U - Ctrl+Shift+U + Ctrl+Shift+U - + Open 打开 - + Stash 贮藏 - + Show Stashes 显示贮藏区备份 - + Stash... 备份未提交修改到贮藏区 - Ctrl+Shift+T - Ctrl+Shift+T + Ctrl+Shift+T - + Pop Stash 应用备份并从贮藏区删除 - Ctrl+Shift+Alt+T - Ctrl+Shift+Alt+T + Ctrl+Shift+Alt+T - + History 历史 - + Back 退回 - + Forward 前进 - + Window 窗口 - + Show Previous Tab 显示上一个标签页 - + Show Next Tab 显示下一个标签页 - + Show Repository Chooser... 显示仓库选择器... - Ctrl+Shift+O - Ctrl+Shift+O + Ctrl+Shift+O - + Tools 工具 - + Options... 选项... - + Help 帮助 - + About %1 关于%1 - + Check For Updates... 检查更新... - + Plugin Documentation... 插件文档... - + + Support us via Liberapay + + + + Debug 除错 - + Abort 中止 - + Log Indexer Progress 日志索引器进度 - + Log Credential Helper 日志凭证助手 - + Log Remote Connection 记录远程连接 - + + Log Debug Messages + + + + Load All Diffs 加载所有差异 - + Walk Commits 遍历提交 - + Hide Log 隐藏日志 - Show Diff View - 显示差异视图 + 显示差异视图 - + Merge 合并 - + Revert 还原 - + Cherry-pick 拣选操作 - + Rebase 变基 - + Abort %1 中止%1 @@ -2724,60 +3123,60 @@ Examples MergeDialog - - + + Merge 合并 - - + + Rebase 变基 - - + + Squash 聚合(Squash) - + Merge (No Fast-forward) 合并(无快进) - + Merge (Fast-forward Only) 合并(仅快进) - + No commit 没有提交 - + Reference: 引用: - + Action: 动作: - + Choose a reference to merge into '%1'. 选择一个引用合并到'%1'。 - + Choose a reference to rebase '%1' on. 选择一个引用'%1'变基。 - + Choose a reference to squash into '%1'. 选择一个引用以聚合(Squash)入'%1'。 @@ -2785,7 +3184,7 @@ Examples MergeTool - + External Merge 外部合并 @@ -2793,12 +3192,12 @@ Examples MiscPanel - + Path to SSH config file: SSH配置文件的路径: - + Path to default / fallback SSH key file: 默认/后备SSH密钥文件的路径: @@ -2806,32 +3205,32 @@ Examples NewBranchDialog - + Checkout branch 检出分支 - + Name: 名称: - + Start Point: 起点: - + Advanced: 高级: - + Upstream: 上游: - + Create Branch 新建分支 @@ -2839,7 +3238,7 @@ Examples PathspecWidget - + Filter by Path 按路径过滤 @@ -2847,42 +3246,42 @@ Examples PluginsPanel - + Name 名称 - + Kind - + Description 描述 - + Options 选项 - + %1 Options %1选项 - + Note 注意 - + Warning 警告 - + Error 错误 @@ -2890,7 +3289,7 @@ Examples Popup - + Show Advanced Search 显示高级搜索 @@ -2898,12 +3297,12 @@ Examples PreviewWidget - + Added 添加 - + Modified 修改 @@ -2911,7 +3310,7 @@ Examples PullRequestButton - + Create Pull Request 新建拉取请求 @@ -2919,55 +3318,117 @@ Examples PullRequestDialog - + Create Pull Request 新建拉取请求 - + Title 标题 - + Body 内容 - + Maintainer can modify 维护者可以修改 - + From: 从: - + owner/repository 所有者/仓库 - + branch 分支 - + To: 至: - + Create 新建 + + QObject + + + Expand all + + + + + Collapse all + + + + + Staged Files + + + + + Unstaged Files + + + + + Committed Files + + + + + Workdir Files + + + + + Your global GIT configuration is invalid, Gittyup won't run properly until this is fixed + + + + + RebaseConflictDialog + + + Rebase conflict + + + + + Abort rebase + + + + + Continue + + + + + The rebase caused a merge conflict. +Would you like to fix the merge conflict and continue? + + + Reference - + HEAD detached at %1 HEAD在%1处分离 @@ -2975,7 +3436,7 @@ Examples ReferenceList - + Commit 提交 @@ -2983,17 +3444,17 @@ Examples ReferenceModel - + Branches 分支 - + Remotes 远程 - + Tags 标签 @@ -3001,57 +3462,57 @@ Examples ReferenceView - + Branch 分支 - + Remote 远程 - + Tag 标签 - + Checkout 检出 - + Rename 重命名 - + Delete 删除 - + Push Tag to %1 将标签推送到%1 - + New Local Branch 新建本地分支 - + Merge... 合并... - + Rebase... 变基... - + Squash... 聚合(Squash)... @@ -3059,7 +3520,7 @@ Examples RefreshButton - + Refresh 刷新 @@ -3067,7 +3528,7 @@ Examples RemoteButton - + 999+ 999+ @@ -3075,58 +3536,59 @@ Examples RemoteCallbacks - + remote: %1 远程:%1 - + failed to execute pre-push hook: bash not found 无法执行pre-push钩子:未找到bash - + failed to execute pre-push hook: %1 无法执行pre-push钩子:%1 - + HTTPS Credentials HTTPS凭证 - + SSH Passphrase SSH密码 - + Username: 用户名: - + Password: 密码: - + Passphrase: 密码短语: - + + authentication canceled 身份验证已取消 - + From %1 从%1 - - + + To %1 至%1 @@ -3134,47 +3596,47 @@ Examples RemoteDialog - + Push all tags 推送所有标签 - + Update existing tags 更新现有标签 - + Merge 合并 - + Rebase 变基 - + Merge (No Fast-forward) 合并(无快进) - + Merge (Fast-forward Only) 合并(仅快进) - + Set upstream 设置上游 - + Force 强制 - + Remote Reference: 远程引用: @@ -3222,42 +3684,42 @@ Examples RemotePage - + Remote Repository URL 远程仓库URL - + Choose protocol to authenticate with the remote. 选择协议以对远程进行身份验证。 - + Enter the URL of the remote repository or browse for a local directory 输入远程仓库的URL或浏览本地目录 - + ... ... - + Choose Directory 选择目录 - + Examples of valid URLs include:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>Local</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> 有效URL的示例包括:<table cellspacing='8'><tr><td align='right'><b>HTTPS</b></td><td>https://hostname/path/to/repo.git</td></tr><tr><td align ='right'><b>SSH</b></td><td>git@hostname:path/to/repo.git</td></tr><tr><td align='right'><b>Git</b></td><td>git://hostname/path/to/repo.git</td></tr><tr><td align='right'><b>本地</b></td><td>/path/to/repo, C:\path\to\repo</td></tr></table> - + Protocol: 协议: - + URL: 地址URL: @@ -3265,12 +3727,12 @@ Examples RemoteTableModel - + Name 名称 - + URL 地址URL @@ -3278,61 +3740,74 @@ Examples RemotesPanel - + Delete Remote? 您确定要删除远程吗? - + Are you sure you want to delete '%1'? 您确定要删除'%1'吗? - + Delete 删除 + + RenameBranchDialog + + + Name: + + + + + Rename Branch + + + RepoModel - + Connecting 连接中 - + open 打开 - + recent 最近 - + remote 远程 - - + + none - + Clone Repository 克隆仓库 - + Open Existing Repository 打开现有仓库 - + Initialize New Repository 初始化新仓库 @@ -3340,130 +3815,161 @@ Examples RepoView - + Indexing... 索引... - + Search 搜索 - The indexer worker process crashed. If this problem persists please contact us at support@gitahead.com. - 索引器工作进程崩溃。如果此问题仍然存在,请通过support@gitahead.com与我们联系。 + 索引器工作进程崩溃。如果此问题仍然存在,请通过support@gitahead.com与我们联系。 - + Indexer Crashed 索引器崩溃 - + Stage Directory? 您确定要暂存目录吗? - + Are you sure you want to stage '%1'? 您确定要暂存'%1'吗? - + This will result in the addition of %1 files. 这将导致添加%1个文件。 - + more than 100 超过100 - + Stage Directory 暂存目录 - + Stop prompting to stage directories 停止提示暂存目录 - + Stage Large File? 暂存大文件? - + Are you sure you want to stage '%1' with a size of %2? 您确定要暂存大小为%2的'%1'吗? - + Stage 暂存 - + Track with LFS 使用LFS跟踪 - + This repository has LFS enabled. Do you want to track the file with LFS instead? 该仓库已启用LFS。您是否要使用LFS跟踪文件? - + Stop prompting to stage large files 停止提示暂存大文件 - + Esc 退出 - + stage 暂存 - + Git LFS was not found on the PATH. <a href='https://git-lfs.github.com'>Install Git LFS</a> to use LFS integration. 在PATH上找不到Git LFS。 <a href='https://git-lfs.github.com'>安装Git LFS </a>以使用LFS集成。 - + untracked file 未跟踪的文件 - + untracked files 未跟踪的文件 - + Remove Untracked Files 删除未跟踪的文件 - + Remove %1 %2? 移除 %1 %2? - + This action cannot be undone. 此操作无法撤消。 - + Remove 删除 + + + + Certificate Error + + + + + SSL verification disabled for this repository + + + + + [http] + sslVerify = false + +was added to %1/config + + + + + SSL verification disabled for all git repositories + + + + + [http] + sslVerify = false + +was added to %1 + + Pull Request @@ -3480,297 +3986,314 @@ Examples 新建拉取请求 - - - + + + Git LFS Git LFS - + Initialize 初始化 - + initialize 初始化 - + Git LFS initialized. Git LFS已初始化。 - + Deinitialize 取消初始化 - + deinitialize 取消初始化 - + Git LFS Deinitialized. Git LFS已初始化。 - + Lock 锁定 - + Unlock 解除锁定 - - + + Unable to %1 '%2' - %3 无法%1'%2'-%3 - + Unable to %1 - %2 无法%1-%2 - + %1 remotes %1个远程 - + Fetch All 获取全部 - + Fetch 获取 - - - + + + <i>no remote</i> <i>没有远程</i> - + Unable to fetch. No upstream is configured for the current branch, and there isn't a remote called 'origin'. 无法获取。当前分支未配置上游,也没有名为“origin”的远程服务器。 - - + + Fetch canceled. 获取已取消。 - + fetch from 获取自 - + + You may disable ssl verification <a href='action:sslverifyrepo'>for this repository</a> or overall disable ssl verification <a href='action:sslverifygit'>for all repositories</a>. + + + + - + Everything up-to-date. 一切都是最新的。 - - - + + + <i>no branch</i> <i>没有分支</i> - + %1 from %2 来自%2的%1 - + Pull 拉取 - + <i>no upstream</i> <i>没有上游</i> - + Merge 合并 - + %1 into %2 %1到%2 - + Fast-forward 快进 - + %2 to %1 %2至%1 - + + Rebase 变基 - + %2 on %1 %1上的%2 - + The repository is empty. 该库为空。 - + The current branch '%1' has no upstream branch. 当前分支'%1'没有上游分支。 - - + + Already up-to-date. 已经是最新的。 - + Unable to fast-forward. 无法快进。 - + fast-forward 快进 - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='%1'>fast-forward</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. 在<a href='%1'>快进</a>之前,您可以通过<a href='action:stash'>备份未提交修改到贮藏区</a>来协调更改与冲突的文件。然后用<a href='action:unstash'>应用备份并从贮藏区删除</a>来恢复您的更改。 - + If you want to create a new merge commit instead of fast-forwarding, you can <a href='%1'>merge without fast-forwarding </a> instead. 如果要创建新的合并提交而不是快进,则可用<a href='%1'>合并而不快进</a>代替。 - - - - + + + + merge 合并 - - + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:merge'>merge</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. 在尝试<a href='action:mash'>合并</a>之前,您可以通过<a href='action:stash'>备份未提交修改到贮藏区</a>进行调整。然后用<a href='action:unstash'>应用备份并从贮藏区删除</a>来恢复您的更改。 - - + + + Abort 中止 - + Some merged files have unstaged changes 某些合并的文件具有未暂存的更改 - + abort merge 中止 - - - + + + revert 还原 - - - + + + cherry-pick 拣选操作 - - - + + + rebase 变基 - + + Continue ongoing rebase + + + + + Invalid head. + + + + You may be able to rebase by <a href='action:stash'>stashing</a> before trying to <a href='action:rebase'>rebase</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. 在尝试<a href='action:rebase'>变基</a>之前,您可以通过<a href='action:stash'>备份未提交修改到贮藏区</a>进行调整。然后用<a href='action:unstash'>应用备份并从贮藏区删除</a>来恢复您的更改。 - + + %1/%2 %1/%2 - + %1 - %2 %1 - %2 - + Apply 应用 - There was a merge conflict. The rebase has been aborted - 有合并冲突。 变基已中止 + 有合并冲突。 变基已中止 - + %1 - %2 <i>already applied</i> %1 - %2 <i>已应用</i> - + %1 - %2 as %3 %1 - %2作为%3 - - - + + + squash 聚合(Squash) - + Revert 还原 - + Revert "%1" This reverts commit %2. @@ -3779,457 +4302,527 @@ This reverts commit %2. 这将还原提交%2。 - + <i>detached HEAD</i> <i>游离的头</i> - + %1 on %2 %2上的%1 - + Cherry-pick 拣选操作 - Force Push? - 强制推送? + 强制推送? - + Are you sure you want to force push? 您确定要强制推送吗? - + The remote will lose any commits that are reachable only from the overwritten reference. Dropped commits may be unexpectedly reintroduced by clones that already contain those commits locally. 远程将丢失所有只能从覆盖的引用访问的提交。已在本地包含那些提交的克隆可能会意外地重新引入已删除的提交。 - + Force Push 强制推送 - + <i>no reference</i> <i>没有引用</i> - + Push 推送 - + Push (Force) 推送(强制) - - + + %1 to %2 %1至%2 - - + + You are not currently on a branch. 您目前不在一个分支上。 - + Create a commit to add the default '%1' branch. 新建一个提交以添加默认的'%1'分支。 - + You can <a href='action:checkout'>checkout</a> a branch then <a href='action:push'>push</a> again, or <a href='action:push-to'>push to an explicit branch</a>. 您可以先<a href='action:checkout'>检出</a>分支,然后再次<a href='action:push'>推送</a>,或<a href='action:push-to'>推送到显式分支</a>。 - + The current branch '%1' has no default remote. 当前分支'%1'没有默认的远程分支。 - + You may want to <a href='action:add-remote?name=origin'>add a remote named 'origin'</a>. Then <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a> to begin tracking a remote branch called 'origin/%1'. 您可能想要执行<a href='action:add-remote?name=origin'>添加一个名为“origin”的远程仓库</a>。然后<a href='action:push?set-upstream=true'>推送并设置为当前分支的上游</a>,以开始跟踪名为“origin/%1”的远程分支。 - + You can also <a href='action:push-to'>push to an explicit URL</a> if you don't want to track a remote branch. 如果您不想跟踪远程分支,也可以<a href='action:push-to'>推送到显式URL </a>。 - + To begin tracking a remote branch called '%1', <a href='action:push?set-upstream=true'>push and set the current branch's upstream</a>. 要开始跟踪名为'%1'的远程分支,请<a href='action:push?set-upstream=true'> 推送并设置当前分支的上游</a>。 - + To push without setting up tracking information, <a href='action:push?ref=%1'>push '%2'</a> explicitly. 要在不设置跟踪信息的情况下进行推送,请显式地<a href='action:push?ref=%1'>推送'%2'</a>。 - + Push canceled. 推送已取消。 - + push to 推送到 - + The tag update may cause the remote to lose commits. 标签更新可能会导致远程分支丢失提交。 - + If you want to risk the remote losing commits, you can <a href='action:push?ref=%1&to=%2&force=true'>force push</a>. 如果您想冒远程分支丢失提交的风险,可以<a href='action:push?ref=%1&to=%2&force=true'>强制推送</a>。 - You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push'>push</a> again. - 您可能想先通过<a href='action:pull'> pulling </a>集成远程分支上的提交。然后再次<a href='action:push'> 推送 </a>。 + 您可能想先通过<a href='action:pull'> pulling </a>集成远程分支上的提交。然后再次<a href='action:push'> 推送 </a>。 - If you really want the remote to lose commits, you may be able to <a href='action:push?force=true'>force push</a>. - 如果您确实希望远程分支丢失提交,则可以<a href='action:push?force=true'>强制推送</a>。 + 如果您确实希望远程分支丢失提交,则可以<a href='action:push?force=true'>强制推送</a>。 - + Commit? 提交? - + Are you sure you want to commit on a detached HEAD? 您确定要提交到游离的HEAD吗? - + <p>You are in a detached HEAD state. You can still commit, but the new commit will not be reachable from any branch. If you want to commit to an existing branch, checkout the branch first.</p> <p>您处于分离的HEAD状态。您仍然可以提交,但是新的提交将无法从任何分支访问。如果要提交到现有分支,请首先检出该分支。</p> - - + + Commit 提交 - - + + <i>no commit</i> <i>没有提交</i> - + commit 提交 - + This commit was signed with a generated user name and email. 该提交已使用生成的用户名和电子邮件进行了签名。 - + Consider setting the user name and email in <a href='action:config?global=true'>global settings</a>. 请考虑在<a href='action:config?global=true'>全局设置</a>中设置用户名和电子邮件。 - + If you want to limit the name and email settings to this repository, <a href='action:config'>edit repository settings</a> instead. 如果要限制此仓库的名称和电子邮件设置,请<a href='action:config'>编辑仓库设置</a>。 - + After settings have been updated, <a href='action:amend'> amend this commit</a> to record the new user name and email. 设置更新后,<a href='action:amend'>修改此提交</a>以记录新的用户名和电子邮件。 - + file 文件 - + files 多个文件 - + %1 - %2 %3 %1 - %2 %3 - - + + Checkout 检出 - + Checkout Detached HEAD? 检出游离的HEAD? - + Checkout Detached HEAD 检出游离的HEAD - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to reset the existing local branch '%2' to this commit instead? 检出远程分支'%1'将导致游离的HEAD状态。您是否想将现有的本地分支'%2'重置为此提交? - + Reset Local Branch 重置本地分支 - + Checking out remote branch '%1' will result in a detached HEAD state. Do you want to create a new local branch called '%2' to track it instead? 检出远程分支'%1'将导致游离的HEAD状态。您是否要新建一个名为'%2'的新本地分支来跟踪它? - + Create a local branch to start tracking remote changes and make new commits. Check out the detached HEAD to temporarily put your working directory into the state of the remote branch. 新建本地分支以开始跟踪远程更改并进行新的提交。检出游离的HEAD,以将您的工作目录暂时置于远程分支的状态。 - + Create Local Branch 新建本地分支 - + checkout 检出 - + You may be able to reconcile your changes with the conflicting files by <a href='action:stash'>stashing</a> before you <a href='action:checkout?%1'>checkout '%2'</a>. Then <a href='action:unstash'>unstash</a> to restore your changes. 在执行<a href='action:checkout?%1'>检出'%2'</a>之前,您可以通过<a href='action:stash'>备份未提交修改到贮藏区</a>使协调更改与冲突的文件。然后用<a href='action:unstash'>应用备份并从贮藏区删除</a>来恢复您的更改。 - + New Branch 新建分支 - + create new branch 创建新的分支 - + (no branch) (无分支) - + WIP on %1: %2 %3 WIP 在 %1:%2 %3 - + <i>working directory</i> <i>工作目录</i> - + Stash 贮藏 - + stash 贮藏 - + Apply Stash 应用备份 - + apply stash 应用备份 - + Drop Stash 从贮藏区删除备份 - + drop stash 从贮藏区删除备份 - + Pop Stash 应用备份并从贮藏区删除 - + pop stash 应用备份并从贮藏区删除 - + %1 as %2 %1作为%2 - + Tag 标签 - + tag 标签 - - - + + Amend 修改 - - - + + Amending commit %1 + + + + + %1 to %2 + update ref + %1至%2 + + + + + + + + Reset 重置 - Amend? - 修改? + 修改? - Reset? - 重置? + 重置? - Are you sure you want to amend '%1'? - 您确定要修改'%1'吗? + 您确定要修改'%1'吗? - + Are you sure you want to reset '%1' to '%2'? 您确定要将“%1”重置为“%2”吗? - + <p>Some commits may become unreachable from the current branch.</p> <p>某些提交可能会从当前分支变为不可访问。</p> - + <p>Resetting will cause you to lose uncommitted changes. Untracked and ignored files will not be affected.</p> <p>重置将导致您丢失未提交的更改。未跟踪和忽略的文件不会受到影响。</p> - + <p>Your branch appears to be up-to-date with its upstream branch. Resetting may cause your branch history to diverge from the remote branch history.</p> <p>您的分支似乎是其上游分支的最新信息。重置可能会导致您的分支历史记录与远程分支历史记录有所不同。</p> - + + amend 修改 - + reset 重置 - + + %1 of %2 submodules %1个子模块(共%2个) - - + + Update 更新 - + + update submodule 更新子模块 - + + The indexer worker process crashed. If this problem persists please contact us at <TODO: replace.support@gitahead.com>. + + + + + Please resolve conflicts before continue + + + + + Conflict + + + + + Rebase finished + + + + + Force Push to %1? + + + + + You may want to integrate remote commits first by <a href='action:pull'>pulling</a>. Then <a href='action:push?to=%1'>push</a> again. + + + + + If you really want the remote to lose commits, you may be able to <a href='action:push?to=%1&force=true'>force push</a>. + + + + + Reset canceled. + + + + + Untouched + + + + Invalid Submodule Repository 无效的子模块仓库 - + The submodule '%1' doesn't have a valid repository. You may need to init and/or update the submodule to check out a repository. 子模块'%1'没有有效的仓库。您可能需要初始化和/或更新子模块以检出仓库。 - + + No terminal executable found + + + + + No terminal executable was found. Please configure a terminal in the configuration. + + + + + Open Configuration + + + + There was a merge conflict. 发生合并冲突。 - + Resolve conflicts, then commit to conclude the %1. See <a href='expand'>details</a>. 解决冲突,然后提交以结束%1。请参见<a href='expand'>详细信息</a>。 - + Resolve conflicts in each conflicted (!) file in one of the following ways: 通过以下方式中任意一种来解决每个冲突(!)文件中的冲突: - + 1. Click the 'Ours' or 'Theirs' button to choose the correct change. Then click the 'Save' button to apply. 1.点击“我们的”或“他们的”按钮以选择正确的更改。然后点击“保存”按钮以应用。 - + 2. Edit the file in the editor to make a different change. Remember to remove conflict markers. 2.在编辑器中编辑文件以进行其他更改。记住要删除冲突标记。 - + 3. Use an external merge tool. Right-click on the files in the list and choose 'External Merge'. 3.使用外部合并工具。右键单击列表中的文件,然后选择“外部合并”。 - + After all conflicts in the file are resolved, click the check box to mark it as resolved. 解决文件中的所有冲突后,单击复选框将其标记为已解决。 - + After all conflicted files are staged, commit to conclude the %1. 暂存所有有冲突的文件后,提交以结束%1。 - + You can <a href='action:abort'>abort</a> the %1 to return the repository to its previous state. 您可以<a href='action:abort'>中止</a>%1以便将仓库恢复到之前的状态。 @@ -4237,12 +4830,12 @@ This reverts commit %2. Repository - + Unknown error 未知错误 - + git-lfs not found 找不到git-lfs @@ -4250,7 +4843,7 @@ This reverts commit %2. SearchField - + Search 搜索 @@ -4258,32 +4851,32 @@ This reverts commit %2. SearchPanel - + Enable indexing 启用索引 - + terms 条款 - + lines - + Limit commits to: 限制提交到: - + Diff context: 差异内容: - + Remove Index 删除索引 @@ -4291,32 +4884,32 @@ This reverts commit %2. Settings - + Prompt to edit stash message before stashing 在执行贮存操作前提示编辑贮存消息 - + Prompt to edit commit message before merging 合并前提示编辑提交消息 - + Prompt to edit commit message before reverting 还原前提示编辑提交消息 - + Prompt to edit commit message before cherry-picking 在拣选操作之前提示编辑提交消息 - + Prompt to stage directories 提示暂存目录 - + Prompt to stage large files 提示暂存大文件 @@ -4324,62 +4917,67 @@ This reverts commit %2. SettingsDialog - + Esc 退出 - + Global git settings can be overridden for each repository in the corresponding repository configuration page. 可以在相应的仓库配置页面中为每个仓库覆盖全局git设置。 - + Edit Config File... 编辑配置文件... - + General 一般 - + Diff 比较 - + Tools 工具 - + Window 窗口 - + Editor 编辑器 - + Update 更新 - + Plugins 插件 - + Misc 其他 - + + Hotkeys + + + + Terminal 终端 @@ -4387,22 +4985,22 @@ This reverts commit %2. ShowTool - + Finder Finder - + Explorer 资源管理器 - + Default File Browser 默认文件浏览器 - + Show in %1 在%1中显示 @@ -4410,14 +5008,14 @@ This reverts commit %2. SideBar - + Close 关闭 - - + + Remove 删除 @@ -4442,57 +5040,57 @@ This reverts commit %2. 打开仓库 - + Initialize New Repository 初始化新仓库 - + Add %1 Account 添加%1帐户 - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>确定要删除%1的远程仓库关联吗?</p><p>本地克隆本身不会受到影响。</p> - + Remove Repository Association? 删除仓库关联? - + Clear All Recent 清除所有最近的 - + Show Full Path 显示完整路径 - + Filter Non-existent Paths 过滤不存在​​的路径 - + Refresh Remote Accounts 刷新远程帐户 - + Show Full Name 显示全名 - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>确定要删除“%2”的%1个帐户吗?</p><p>仅会删除帐户关联。远程配置和本地克隆将不受影响。</p> - + Remove Account? 删除帐户? @@ -4500,108 +5098,108 @@ This reverts commit %2. StartDialog - + Choose Repository 选择仓库 - + Understand your history! 了解您的历史! - + Clone Repository 克隆仓库 - + Open Existing Repository 打开现有仓库 - + Open Repository 打开仓库 - + Initialize New Repository 初始化新仓库 - + Clear All 全部清除 - + Show Full Path 显示完整路径 - + Filter Non-existent Paths 过滤不存在​​的路径 - + Repositories: 仓库: - + Refresh 刷新 - + Show Full Name 显示全名 - + Remote: 远程: - + View Getting Started Video 查看入门视频 - + Clone 克隆 - + Open 打开 - + <p>Are you sure you want to remove the %1 account for '%2'?</p><p>Only the account association will be removed. Remote configurations and local clones will not be affected.</p> <p>确定要删除“%2”的%1个帐户吗?</p><p>仅会删除帐户关联。远程配置和本地克隆将不受影响。</p> - + Remove Account? 删除帐户? - - + + Remove 删除 - + <p>Are you sure you want to remove the remote repository association for %1?</p><p>The local clone itself will not be affected.</p> <p>确定要删除%1的远程仓库关联吗?</p><p>本地克隆本身不会受到影响。</p> - + Remove Repository Association? 删除仓库关联? @@ -4609,7 +5207,7 @@ This reverts commit %2. SubmoduleTableModel - + Name 名称 @@ -4619,32 +5217,32 @@ This reverts commit %2. 地址URL - + Branch 分支 - + Initialized 已初始化 - + Deinitializing '%1' will remove its working directory. Are you sure you want to deinitialize? 取消初始化'%1'将删除其工作目录。您确定要取消初始化吗? - + Deinitialize Submodule? 取消初始化子模块? - + The submodule working directory contains uncommitted changes that will be lost if you continue. 子模块工作目录包含未提交的更改,如果您继续,这些更改将丢失。 - + Deinitialize 取消初始化 @@ -4678,31 +5276,107 @@ This reverts commit %2. 带注解 - + Name 名称 + + TemplateDialog + + + Name + 名称 + + + + Content + + + + + + Add + + + + + use %1 to declare the position of the cursor. + + + + + use ${files:x} to add all updated file names, +x (number) determines the number of maximum files shown + + + + + Remove + 删除 + + + + Up + + + + + Down + + + + + Import + + + + + Export + + + + + Open File + + + + + + Gittyup Templates (*%1) + + + + + Save Templates + + + + + Replace + 替换 + + TerminalPanel - - + + Install 安装 - + Name: 名称: - + Location: 位置: - + Uninstall 卸载 @@ -4710,32 +5384,32 @@ This reverts commit %2. TextEdit - + Replace... 替换... - + Replace All... 替换全部... - + Ignore 忽略 - + Ignore All 忽略全部 - + Add to User Dictionary 添加到用户字典 - + Do not Ignore 不忽略 @@ -4743,111 +5417,154 @@ This reverts commit %2. ThemeDialog - Native Theme - 原生主题 + 原生主题 - + A flexible look matching system colors 匹配系统颜色的灵活外观 - + Dark Theme 黑暗主题 - + + Pick a theme for Gittyup + + + + + Default Theme + + + + + A consistent bright theme + + + + A consistent look optimal for reducing eye strain 始终如一的外观以减轻眼睛疲劳 + + + System Theme + + ToolBar - + Show repository sidebar 显示仓库侧栏 - + Previous 退回 - + Next 前进 - + Fetch 获取 - + Pull 拉取 - + Merge 合并 - + Rebase 变基 - + Push 推送 - + Checkout 检出 - + Stash 备份未提交修改到贮藏区 - + Pop Stash 应用备份并从贮藏区删除 - + + Open Terminal + + + + + Open file manager + + + + Configure Settings 配置设定 + + + Repository settings + + - + Application settings + + + + + Show Log 显示日志 - - Diff View - 差异视图 + + Double Tree View + - + Diff View + 差异视图 + + + Tree View 树状视图 - + Show Starred Commits 显示加注星标的提交 - + Hide Log 隐藏日志 @@ -4855,32 +5572,42 @@ This reverts commit %2. ToolsPanel - + Keep backup of merge files (.orig) 保留合并文件(.orig)的备份 - + External editor: 外部编辑器: - + External diff: 外部差异比较: - + External merge: 外部合并: - + Backup files: 备份文件: - + + Terminal emulator command: + + + + + File manager command: + + + + Configure 配置 @@ -4888,20 +5615,77 @@ This reverts commit %2. TreeModel - + Submodule 子模块 + + TreeView + + + Directory + 目录 + + + + File + 文件 + + + + Remove or discard %1? + + + + + Are you sure you want to remove or discard all changes in '%1'? + + + + + This action cannot be undone. + 此操作无法撤消。 + + + + + Discard + 丢弃 + + + + discard + 丢弃 + + + + TreeWidget + + + Search: + + + + + Regex + + + + + Case Sensitive + + + UpToDateDialog - + Already Up-to-date 已经是最新的 - + %1 is already up-to-date. You have version %2. %1已经是最新的。您拥有的版本是%2。 @@ -4909,55 +5693,76 @@ This reverts commit %2. UpdateDialog - + Update %1 更新%1 - + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. The new version will be soon available in your package manager. Just update your system.</p><b>Release Notes:</b> + + + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3. Would you like to download it now?</p><b>Release Notes:</b> <h3>%1的新版本已可用!</h3><p>%1 %2现在可用 - 您拥有%3。您要立即下载吗?</p><b>发行说明:</b> - + + <h3>A new version of %1 is available!</h3><p>%1 %2 is now available - you have %3.</p><p>If you downloaded the flatpak package over a package manager or from flathub.org <br/>you don't have to install manually a new version. It will be available within the next <br/>days during your system update: <code>flatpak update</code></p><b>Release Notes:</b> + + + + Automatically download and install updates 自动下载并安装更新 - + Install Update 安装更新 - + Remind Me Later 稍后提醒我 - + Skip This Version 跳过此版本 + + + Ok + + + + + Donate + + UpdatePanel - + Check for updates automatically 自动检查更新 - + Automatically download and install updates 自动下载并安装更新 - + Check Now 现在检查 - + Software Update: 软件更新: @@ -4965,17 +5770,17 @@ This reverts commit %2. UpdateSubmodulesDialog - + Recursive 递归的 - + Init 在里面 - + Update 更新 @@ -4983,7 +5788,7 @@ This reverts commit %2. Updater - + Installer failed to start 安装程序无法启动 @@ -5004,47 +5809,53 @@ This reverts commit %2. - + + Helper application failed to start 帮助应用程序无法启动 - + Update Failed 更新失败 - + Unable to check for updates 无法检查更新 - + Unable to download update 无法下载更新 - + Unable to open temporary file 无法打开临时文件 - + Unable to install update 无法安装更新 - - Some windows failed to close - 一些窗口无法关闭 + + Some windows failed to close. You can download the binary manually from %1 + - + Some windows failed to close + 一些窗口无法关闭 + + + Unknown install error 未知的安装错误 - + + Installer script failed: %1 安装脚本失败:%1 @@ -5052,94 +5863,139 @@ This reverts commit %2. WindowPanel - + Add New Theme 添加新主题 - + Edit Current Theme 编辑当前主题 - + Create Theme 创建主题 - + Theme Name 主题名称 - + Restart? 重启? - + The application must be restarted for the theme change to take effect. 必须重启应用程序,主题更改才能生效。 - + Do you want to restart now? 您要立即重启吗? - + Restart 重启 - + Later 推后 - + Show full repository path 显示完整的仓库路径 - + Hide automatically 自动隐藏 - + Open submodules in tabs 在标签页中打开子模块 - + Open all repositories in tabs 在标签页中打开所有仓库 - + + Hide Menubar + + + + + Show Avatars + + + + Theme: 主题: - + Title: 标题: - + Log: 日志: - + Tabs: 标签页: - + + View: + + + + Prompt: 提示: + + _FileWidget::Header + + + + Use Theirs: Delete + + + + + + Use Ours: Delete + + + + + both: %1 + + + + + ours: %1 + + + + + theirs: %1 + + + diff --git a/l10n/languages.cpp.inc b/l10n/languages.cpp.inc new file mode 100644 index 00000000..24443fb6 --- /dev/null +++ b/l10n/languages.cpp.inc @@ -0,0 +1,9 @@ +#include "languages.h" + +#include +#include + +namespace Languages { + const QString system = QStringLiteral("@SYSTEM_LANG_KEY@"); + const QMap languages = { @SUPPORTED_LANGUAGES@ }; +} diff --git a/l10n/languages.h b/l10n/languages.h new file mode 100644 index 00000000..034c3899 --- /dev/null +++ b/l10n/languages.h @@ -0,0 +1,11 @@ +#ifndef LANGUAGES_H +#define LANGUAGES_H + +#include + +namespace Languages { +extern const QString system; +extern const QMap languages; +} // namespace Languages + +#endif // LANGUAGES_H diff --git a/pack/CMakeLists.txt b/pack/CMakeLists.txt index eea79fe5..c9b5f4de 100644 --- a/pack/CMakeLists.txt +++ b/pack/CMakeLists.txt @@ -2,7 +2,6 @@ set(CONF_DIR ${CMAKE_SOURCE_DIR}/conf) set(RSRC_DIR ${CMAKE_SOURCE_DIR}/rsrc) set(MAC $) -set(CONTENTS_DIR ${GITTYUP_NAME}.app/Contents) # Install Qt plugins. set(QT_PLUGINS QJpegPlugin) @@ -17,6 +16,14 @@ else() QComposePlatformInputContextPlugin) endif() +if(WIN32) + set(INSTALL_LIBDIR ${CMAKE_INSTALL_BINDIR}) +elseif(NOT APPLE) + set(INSTALL_LIBDIR ${CMAKE_INSTALL_LIBDIR}) +else() + set(INSTALL_LIBDIR ${CONTENTS_DIR}) +endif() + if(FLATPAK) qt_import_plugins(gittyup INCLUDE ${QT_PLUGINS}) elseif(NOT USE_SYSTEM_QT) @@ -35,7 +42,7 @@ elseif(NOT USE_SYSTEM_QT) install( FILES ${PLUGIN} - DESTINATION $<${MAC}:${CONTENTS_DIR}/>Plugins/${DIR_NAME} + DESTINATION ${INSTALL_LIBDIR}/Plugins/${DIR_NAME} PERMISSIONS OWNER_READ OWNER_WRITE @@ -100,7 +107,7 @@ elseif(NOT USE_SYSTEM_QT) install( FILES ${QT_LIBRARY} - DESTINATION . + DESTINATION ${INSTALL_LIBDIR} PERMISSIONS OWNER_READ OWNER_WRITE @@ -131,7 +138,7 @@ if(UNIX AND NOT APPLE) install( FILES "${LIB_PATH}/${LIB_NAME}${LIB_EXT}" - DESTINATION . + DESTINATION ${CMAKE_INSTALL_LIBDIR} PERMISSIONS OWNER_READ OWNER_WRITE @@ -166,7 +173,7 @@ if(NOT APPLE) install( FILES ${SSL_LIB} - DESTINATION . + DESTINATION ${INSTALL_LIBDIR} PERMISSIONS OWNER_READ OWNER_WRITE @@ -186,16 +193,25 @@ if(NOT APPLE) set(QT_CONF ${CONF_DIR}/qt.conf) install( FILES ${QT_CONF} - DESTINATION $<${MAC}:${CONTENTS_DIR}/Resources/>. + DESTINATION + $<${MAC}:${RESOURCES_DIR}>$<$:${INSTALL_LIBDIR}> COMPONENT ${GITTYUP_NAME}) endif() endif() if(UNIX AND NOT APPLE) + foreach(icon 16 32 64 128 256 512) + install( + FILES ${RSRC_DIR}/Gittyup.iconset/icon_${icon}x${icon}.png + DESTINATION share/icons/hicolor/${icon}x${icon}/apps + COMPONENT ${GITTYUP_NAME} + RENAME ${GITTYUP_EXECUTABLE_NAME}.png) + endforeach() install( - DIRECTORY ${RSRC_DIR}/Gittyup.iconset - DESTINATION "Resources" - COMPONENT ${GITTYUP_NAME}) + FILES ${RSRC_DIR}/Gittyup.iconset/gittyup_logo.svg + DESTINATION share/icons/hicolor/scalable/apps + COMPONENT ${GITTYUP_NAME} + RENAME ${GITTYUP_EXECUTABLE_NAME}.svg) endif() # Sign bundle on macOS. @@ -204,7 +220,7 @@ if(APPLE AND CODESIGN_IDENTITY) CODE "execute_process(COMMAND codesign --deep --timestamp --options runtime -s \"${CODESIGN_IDENTITY}\" - \${CMAKE_INSTALL_PREFIX}/${GITTYUP_NAME}.app + \${CMAKE_INSTALL_PREFIX}/${GITTYUP_EXECUTABLE_NAME}.app )" COMPONENT ${GITTYUP_NAME}) endif() @@ -220,9 +236,10 @@ elseif(WIN32) set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \ \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${GITTYUP_NAME}.lnk\\\" \ - \\\"$INSTDIR\\\\${GITTYUP_NAME}.exe\\\"") - set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".") - set(CPACK_NSIS_MUI_FINISHPAGE_RUN ${GITTYUP_NAME}.exe) + \\\"$INSTDIR\\\\${CMAKE_INSTALL_BINDIR}\\\\${GITTYUP_EXECUTABLE_NAME}.exe\\\"" + ) + set(CPACK_NSIS_EXECUTABLES_DIRECTORY ${CMAKE_INSTALL_BINDIR}) + set(CPACK_NSIS_MUI_FINISHPAGE_RUN ${GITTYUP_EXECUTABLE_NAME}.exe) if(CMAKE_SIZEOF_VOID_P EQUAL 8) install( @@ -262,11 +279,11 @@ if(WIN32) set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "${CPACK_NSIS_EXTRA_INSTALL_COMMANDS} WriteRegStr HKCR 'Directory\\\\Background\\\\shell\\\\Gittyup' '' 'Open with Gittyup' - WriteRegStr HKCR 'Directory\\\\Background\\\\shell\\\\Gittyup' 'Icon' '\\\"$INSTDIR\\\\gittyup.exe\\\"' - WriteRegStr HKCR 'Directory\\\\Background\\\\shell\\\\Gittyup\\\\command' '' '\\\"$INSTDIR\\\\gittyup.exe\\\" \\\"%V\\\"' + WriteRegStr HKCR 'Directory\\\\Background\\\\shell\\\\Gittyup' 'Icon' '\\\"$INSTDIR\\\\${CMAKE_INSTALL_BINDIR}\\\\${GITTYUP_EXECUTABLE_NAME}.exe\\\"' + WriteRegStr HKCR 'Directory\\\\Background\\\\shell\\\\Gittyup\\\\command' '' '\\\"$INSTDIR\\\\${CMAKE_INSTALL_BINDIR}\\\\${GITTYUP_EXECUTABLE_NAME}.exe\\\" \\\"%V\\\"' WriteRegStr HKCR 'Directory\\\\shell\\\\Gittyup' '' 'Open with Gittyup' - WriteRegStr HKCR 'Directory\\\\shell\\\\Gittyup' 'Icon' '\\\"$INSTDIR\\\\gittyup.exe\\\"' - WriteRegStr HKCR 'Directory\\\\shell\\\\Gittyup\\\\command' '' '\\\"$INSTDIR\\\\gittyup.exe\\\" \\\"%L\\\"'" + WriteRegStr HKCR 'Directory\\\\shell\\\\Gittyup' 'Icon' '\\\"$INSTDIR\\\\${CMAKE_INSTALL_BINDIR}\\\\${GITTYUP_EXECUTABLE_NAME}.exe\\\"' + WriteRegStr HKCR 'Directory\\\\shell\\\\Gittyup\\\\command' '' '\\\"$INSTDIR\\\\${CMAKE_INSTALL_BINDIR}\\\\${GITTYUP_EXECUTABLE_NAME}.exe\\\" \\\"%L\\\"'" ) set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "${CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS} @@ -277,13 +294,18 @@ endif(WIN32) set(CPACK_PACKAGE_FILE_NAME ${PACKAGE_FILE_NAME}) set(CPACK_PACKAGE_DIRECTORY ${CMAKE_BINARY_DIR}/pack) set(CPACK_PACKAGE_INSTALL_DIRECTORY ${GITTYUP_NAME}) -set(CPACK_PACKAGE_VENDOR "Scientific Toolworks, Inc.") +set(CPACK_PACKAGE_VENDOR "Gittyup Contributors") set(CPACK_PACKAGE_VERSION_MAJOR ${GITTYUP_VERSION_MAJOR}) set(CPACK_PACKAGE_VERSION_MINOR ${GITTYUP_VERSION_MINOR}) set(CPACK_PACKAGE_VERSION_PATCH ${GITTYUP_VERSION_PATCH}) if(WIN32) set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE.md) +else() + install( + FILES ${CMAKE_SOURCE_DIR}/LICENSE.md + DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/Gittyup + RENAME LICENSE) endif() set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/pack/Readme.md b/pack/Readme.md index 0ff5df77..bdef8d58 100644 --- a/pack/Readme.md +++ b/pack/Readme.md @@ -1,2 +1,3 @@ Flatpak manifest can be found at: https://github.com/flathub/com.github.Murmele.Gittyup Arch PKGBUILD file can be found at: TODO (currently it is in #314) +Linux (Tested On Ubuntu 22.04LTS) version is available in the buildUbuntu.sh file included in this directory. diff --git a/pack/buildUbuntu.sh b/pack/buildUbuntu.sh new file mode 100755 index 00000000..2eff79de --- /dev/null +++ b/pack/buildUbuntu.sh @@ -0,0 +1,26 @@ +sudo apt install build-essential libgl1-mesa-dev +sudo apt install cmake +sudo apt install libgit2-dev +sudo apt install cmark +sudo apt install git +sudo apt install libssh2-1-dev +sudo apt install openssl +sudo apt install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools +sudo apt install qttools5-dev +sudo apt install ninja-build +cd ../../.. +git fetch +git submodule init +git submodule update +git pull +git checkout deps +cd dep/openssl/openssl/ +./config -fPIC +make +cd +mkdir -vp build/release +cd build/release +cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ../.. +ninja + + diff --git a/rsrc/Info.plist.in b/rsrc/Info.plist.in index 1d9a188b..8a6339fe 100644 --- a/rsrc/Info.plist.in +++ b/rsrc/Info.plist.in @@ -16,6 +16,8 @@ 6.0 CFBundleLongVersionString ${MACOSX_BUNDLE_LONG_VERSION_STRING} + CFBundleDisplayName + ${MACOSX_BUNDLE_BUNDLE_NAME} CFBundleName ${MACOSX_BUNDLE_BUNDLE_NAME} CFBundlePackageType diff --git a/rsrc/github-repository-open-graph-Gittyup.png.xmp b/rsrc/github-repository-open-graph-Gittyup.png.xmp new file mode 100644 index 00000000..40ca65b4 --- /dev/null +++ b/rsrc/github-repository-open-graph-Gittyup.png.xmp @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + diff --git a/rsrc/linux/com.github.Murmele.Gittyup.appdata.xml.in b/rsrc/linux/com.github.Murmele.Gittyup.appdata.xml.in index 16276861..268ba3f9 100644 --- a/rsrc/linux/com.github.Murmele.Gittyup.appdata.xml.in +++ b/rsrc/linux/com.github.Murmele.Gittyup.appdata.xml.in @@ -45,7 +45,7 @@ https://liberapay.com/Gittyup/donate - Gittyup + gittyup com.github.Murmele.Gittyup diff --git a/rsrc/linux/com.github.Murmele.Gittyup.desktop b/rsrc/linux/com.github.Murmele.Gittyup.desktop index bf2e3e71..07a8bc2a 100644 --- a/rsrc/linux/com.github.Murmele.Gittyup.desktop +++ b/rsrc/linux/com.github.Murmele.Gittyup.desktop @@ -2,11 +2,10 @@ Encoding=UTF-8 Name=Gittyup Comment=Graphical Git client for Windows, Linux and macOS -Exec=Gittyup -StartupWMClass=gittyup +Exec=gittyup +StartupWMClass=com.github.Murmele.Gittyup Icon=gittyup Terminal=false Type=Application Categories=Development; X-Desktop-File-Install-Version=0.1 -Name[de_DE]=com.github.Murmele.Gittyup.desktop diff --git a/rsrc/screenshots/ColorizedBadges.png b/rsrc/screenshots/ColorizedBadges.png new file mode 100644 index 00000000..42036c70 Binary files /dev/null and b/rsrc/screenshots/ColorizedBadges.png differ diff --git a/setup-env.sh b/setup-env.sh new file mode 100755 index 00000000..dde64c1e --- /dev/null +++ b/setup-env.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +cd "`dirname "$0"`" + +PRE_COMMIT=${SCRIPT_DIR}/.venv/bin/pre-commit + +pre_commit() { + # Set up pre-commit hook + if [ ! -f "${PRE_COMMIT}" ]; then + pushd ${SCRIPT_DIR} + python3 -m venv .venv + .venv/bin/pip install pre-commit + popd + fi + ${PRE_COMMIT} install +} + +remove_pre_commt() { + if [ -f "${PRE_COMMIT}" ]; then + ${PRE_COMMIT} uninstall + fi +} + +if [ $# -eq 0 ]; then + set -- --help +fi + +for arg in "$@"; do + case $arg in + pre_commit | pre-commit | install_pre_commit | install-pre-commit) + pre_commit + ;; + remove_pre_commit | remove-pre-commit | uninstall_pre_commit | uninstall-pre-commit) + remove_pre_commit + ;; + *) + echo "USAGE $0 [commands]" + echo " Commands:" + echo " install-pre-commit - installs pre-commit hooks" + echo " uninstall-pre-commit - removes pre-commit hooks" + ;; + esac +done diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ffd5c4fa..8e880c25 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,13 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +add_compile_options(-Werror=switch) +# Uncomment to compile with more warnings add_compile_options(-Wall) Uncomment +# to compile with even more warnings add_compile_options(-Wextra) TODO: +# currently there are too many unused parameters which overwhelms the warning +# output with `-Wall`. So let's leave fixing these for later. +add_compile_options(-Wno-unused-parameter) + +add_subdirectory(util) add_subdirectory(cli) add_subdirectory(conf) add_subdirectory(cred) @@ -13,7 +21,6 @@ add_subdirectory(plugins) add_subdirectory(tools) add_subdirectory(ui) add_subdirectory(update) -add_subdirectory(util) add_subdirectory(watcher) # Add executable last. diff --git a/src/app/Application.cpp b/src/app/Application.cpp index 64216bec..fc948333 100644 --- a/src/app/Application.cpp +++ b/src/app/Application.cpp @@ -16,6 +16,8 @@ #include "ui/RepoView.h" #include "ui/TabWidget.h" #include "update/Updater.h" +#include "languages.h" +#include "util/Debug.h" #include #include #include @@ -132,6 +134,18 @@ Application::Application(int &argc, char **argv, bool haltOnParseError) // Set debug menu option. MenuBar::setDebugMenuVisible(parser.isSet("debug-menu")); + Debug(QString("Root dir: %1").arg(Settings::rootDir().absolutePath())); + Debug(QString("App dir: %1").arg(Settings::appDir().absolutePath())); + Debug(QString("Doc dir: %1").arg(Settings::docDir().absolutePath())); + Debug(QString("Conf dir: %1").arg(Settings::confDir().absolutePath())); + Debug(QString("l10n dir: %1").arg(Settings::l10nDir().absolutePath())); + Debug(QString("dictionaries dir: %1") + .arg(Settings::dictionariesDir().absolutePath())); + Debug(QString("lexer dir: %1").arg(Settings::lexerDir().absolutePath())); + Debug(QString("themes dir: %1").arg(Settings::themesDir().absolutePath())); + Debug( + QString("pluginsDir dir: %1").arg(Settings::pluginsDir().absolutePath())); + // Set pathspec filter. mPathspec = parser.value("filter"); @@ -159,6 +173,12 @@ Application::Application(int &argc, char **argv, bool haltOnParseError) .toBool()) && (!parser.isSet("no-translation"))) { // Load translation files. + + const auto &language = + Settings::instance()->value(Setting::Id::Language).toString(); + if (language != Languages::system) + QLocale::setDefault(QLocale(language)); + QLocale locale; QDir l10n = Settings::l10nDir(); QString name = QString(GITTYUP_NAME).toLower(); @@ -310,9 +330,9 @@ static MainWindow *openOrSwitch(QDir repo) { } #if defined(Q_OS_LINUX) -#define DBUS_SERVICE_NAME "com.github.Murmele.Gittyup" -#define DBUS_INTERFACE_NAME "com.github.Murmele.Gittyup.Application" -#define DBUS_OBJECT_PATH "/com/github/Murmele/Gittyup/Application" +#define DBUS_SERVICE_NAME GITTYUP_IDENTIFIER +#define DBUS_INTERFACE_NAME GITTYUP_DBUS_INTERFACE_NAME +#define DBUS_OBJECT_PATH GITTYUP_DBUS_OBJECT_PATH DBusGittyup::DBusGittyup(QObject *parent) : QObject(parent) {} @@ -488,4 +508,4 @@ void Application::handleSslErrors(QNetworkReply *reply, reply->ignoreSslErrors(errors); settings.setValue("ssl/ignore", true); } -} \ No newline at end of file +} diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index bc1e8112..82bdc333 100755 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -18,7 +18,7 @@ file(GLOB CONFIG_FILES ${CONF_DIR}/*.lua) file(GLOB DICTIONARIES ${CONF_DIR}/dictionaries/*.aff ${CONF_DIR}/dictionaries/*.dic ${CONF_DIR}/dictionaries/*.txt) file(GLOB THEMES ${CONF_DIR}/themes/*.lua) -file(GLOB SCINTILLUA_LEXERS ${SCINTILLUA_LEXERS_DIR}/*.lua) +file(GLOB SCINTILLUA_LEXERS ${SRC_SCINTILLUA_LEXERS_DIR}/*.lua) file(GLOB LUA_PLUGINS ${CONF_DIR}/plugins/*.lua ${CONF_DIR}/plugins/*.txt) # Build resources. @@ -59,11 +59,22 @@ endif() target_compile_definitions( app - PUBLIC GITTYUP_NAME="${GITTYUP_NAME}" GITTYUP_VERSION="${GITTYUP_VERSION}" + PUBLIC GITTYUP_NAME="${GITTYUP_NAME}" + GITTYUP_VERSION="${GITTYUP_VERSION}" + GITTYUP_IDENTIFIER="${GITTYUP_IDENTIFIER}" + GITTYUP_DBUS_INTERFACE_NAME="${GITTYUP_IDENTIFIER}.Application" + GITTYUP_DBUS_OBJECT_PATH="/com/github/Murmele/Gittyup/Application" PRIVATE QT_TRANSLATIONS_DIR="${QT_TRANSLATIONS_DIR}" BUILD_DESCRIPTION="${BUILD_DESCRIPTION}") -target_link_libraries(app conf git ui update Qt5::Widgets) +target_link_libraries( + app + translation + conf + git + ui + update + Qt5::Widgets) set_target_properties(app PROPERTIES AUTOMOC ON) @@ -103,8 +114,10 @@ endif() target_link_libraries(gittyup app) set_target_properties( - gittyup PROPERTIES OUTPUT_NAME ${GITTYUP_NAME} RUNTIME_OUTPUT_DIRECTORY - ${CMAKE_BINARY_DIR}) + gittyup + PROPERTIES OUTPUT_NAME ${GITTYUP_EXECUTABLE_NAME} + MACOSX_BUNDLE_BUNDLE_NAME ${GITTYUP_NAME} + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) if(WIN32) target_link_libraries(app Dbghelp.lib) @@ -118,7 +131,7 @@ elseif(APPLE) MACOSX_BUNDLE_BUNDLE_VERSION ${GITTYUP_VERSION} MACOSX_BUNDLE_LONG_VERSION_STRING ${GITTYUP_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${GITTYUP_VERSION} - MACOSX_BUNDLE_GUI_IDENTIFIER "com.Murmele.Gittyup") + MACOSX_BUNDLE_GUI_IDENTIFIER ${GITTYUP_IDENTIFIER}) # Copy config files into bundle. set_source_files_properties( @@ -152,19 +165,10 @@ endif() add_dependencies(gittyup indexer relauncher) -if(FLATPAK) - # Install application. - install( - TARGETS gittyup - DESTINATION ./bin # otherwise the executable will not be found by flatpak - COMPONENT ${GITTYUP_NAME}) -else() - # Install application. - install( - TARGETS gittyup - DESTINATION . - COMPONENT ${GITTYUP_NAME}) -endif() +install( + TARGETS gittyup + DESTINATION $,.,${CMAKE_INSTALL_BINDIR}> + COMPONENT ${GITTYUP_NAME}) if(APPLE) get_target_property(QT_LIBRARY Qt5::Core LOCATION) @@ -172,7 +176,7 @@ if(APPLE) get_filename_component(RPATH ${QT_FRAMEWORK} DIRECTORY) # Fixup relauncher RPATH. - set(RELAUNCHER ${GITTYUP_NAME}.app/Contents/MacOS/relauncher) + set(RELAUNCHER ${CONTENTS_DIR}/MacOS/relauncher) install( CODE "execute_process(COMMAND ${CMAKE_INSTALL_NAME_TOOL} -delete_rpath \"${RPATH}\" @@ -189,7 +193,7 @@ execute_process(COMMAND COMPONENT ${GITTYUP_NAME}) # Fixup indexer RPATH. - set(INDEXER ${GITTYUP_NAME}.app/Contents/MacOS/indexer) + set(INDEXER ${CONTENTS_DIR}/MacOS/indexer) install( CODE "execute_process(COMMAND ${CMAKE_INSTALL_NAME_TOOL} -delete_rpath \"${RPATH}\" @@ -207,13 +211,16 @@ execute_process(COMMAND else() # Windows and UNIX must be ./ otherwise it is interpreted as absolute path if(UNIX) - set(RESOURCES_INSTALL_DIR - "${CMAKE_INSTALL_DATADIR}/gittyup/Resources" - CACHE STRING "The path for installing resource files") - else() - set(RESOURCES_INSTALL_DIR - "Resources" - CACHE STRING "The path for installing resource files") + install( + FILES ${CMAKE_SOURCE_DIR}/rsrc/linux/com.github.Murmele.Gittyup.desktop + DESTINATION ${CMAKE_INSTALL_DATADIR}/applications + RENAME ${GITTYUP_EXECUTABLE_NAME}.desktop) + if(${GENERATE_APPDATA}) + install( + FILES ${APPDATA} + DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo + RENAME ${GITTYUP_EXECUTABLE_NAME}.appdata.xml) + endif() endif() # Install config files. @@ -224,13 +231,13 @@ else() install( FILES ${CHANGELOG_HTML} ${ACKNOWLEDGMENTS_HTML} ${PRIVACY_HTML} ${PLUGIN_HTML} - DESTINATION ${RESOURCES_INSTALL_DIR} + DESTINATION ${RESOURCES_DIR} COMPONENT ${GITTYUP_NAME}) endif() install( FILES ${EMOJI} ${MERGETOOLS} - DESTINATION ${RESOURCES_INSTALL_DIR} + DESTINATION ${RESOURCES_DIR} COMPONENT ${GITTYUP_NAME}) execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${EMOJI} @@ -241,7 +248,7 @@ else() foreach(CONFIG_FILE ${CONFIG_FILES}) install( FILES ${CONFIG_FILE} - DESTINATION ${RESOURCES_INSTALL_DIR} + DESTINATION ${RESOURCES_DIR} COMPONENT ${GITTYUP_NAME}) file(RELATIVE_PATH CONFIG_FILE_DEST ${CONF_DIR} ${CONFIG_FILE}) @@ -252,7 +259,7 @@ else() install( FILES ${DICTIONARIES} - DESTINATION ${RESOURCES_INSTALL_DIR}/dictionaries + DESTINATION ${RESOURCES_DIR}/dictionaries COMPONENT ${GITTYUP_NAME}) foreach(DICTIONARY ${DICTIONARIES}) @@ -263,7 +270,7 @@ else() install( FILES ${THEMES} - DESTINATION ${RESOURCES_INSTALL_DIR}/themes + DESTINATION ${RESOURCES_DIR}/themes COMPONENT ${GITTYUP_NAME}) foreach(THEME ${THEMES}) @@ -274,7 +281,7 @@ else() install( FILES ${LUA_PLUGINS} - DESTINATION ${RESOURCES_INSTALL_DIR}/plugins + DESTINATION ${RESOURCES_DIR}/plugins COMPONENT ${GITTYUP_NAME}) foreach(LUA_PLUGIN ${LUA_PLUGINS}) @@ -286,7 +293,7 @@ else() foreach(SCINTILLUA_LEXER ${SCINTILLUA_LEXERS}) install( FILES ${SCINTILLUA_LEXER} - DESTINATION ${RESOURCES_INSTALL_DIR}/lexers + DESTINATION ${RESOURCES_DIR}/lexers COMPONENT ${GITTYUP_NAME}) get_filename_component(SCINTILLUA_LEXER_DEST ${SCINTILLUA_LEXER} NAME) diff --git a/src/app/CustomTheme.cpp b/src/app/CustomTheme.cpp index 679dc99e..b23138d5 100644 --- a/src/app/CustomTheme.cpp +++ b/src/app/CustomTheme.cpp @@ -354,6 +354,21 @@ QColor CustomTheme::badge(BadgeRole role, BadgeState state) { case BadgeState::Notification: stateKey = "notification"; break; + case BadgeState::Modified: + stateKey = "modified"; + break; + case BadgeState::Added: + stateKey = "added"; + break; + case BadgeState::Deleted: + stateKey = "deleted"; + break; + case BadgeState::Untracked: + stateKey = "untracked"; + break; + case BadgeState::Renamed: + stateKey = "renamed"; + break; } QVariantMap badge = mMap.value("badge").toMap(); @@ -421,6 +436,8 @@ QColor CustomTheme::commitEditor(CommitEditor color) { case CommitEditor::LengthWarning: return commitEditor.value("lengthwarning").value(); } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(color))); } QColor CustomTheme::diff(Diff color) { @@ -450,6 +467,8 @@ QColor CustomTheme::diff(Diff color) { case Diff::Error: return diff.value("error").value(); } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(color))); } QColor CustomTheme::heatMap(HeatMap color) { @@ -461,6 +480,8 @@ QColor CustomTheme::heatMap(HeatMap color) { case HeatMap::Cold: return QColor(heatmap.value("cold").toString()); } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(color))); } QColor CustomTheme::remoteComment(Comment color) { @@ -476,6 +497,8 @@ QColor CustomTheme::remoteComment(Comment color) { case Comment::Timestamp: return QColor(comment.value("timestamp").toString()); } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(color))); } QColor CustomTheme::star() { diff --git a/src/app/Theme.cpp b/src/app/Theme.cpp index 7a0f7b49..62884246 100644 --- a/src/app/Theme.cpp +++ b/src/app/Theme.cpp @@ -101,7 +101,14 @@ QColor Theme::badge(BadgeRole role, BadgeState state) { case BadgeState::Head: return QPalette().color(QPalette::HighlightedText); - default: + case BadgeState::Normal: // fall through + case BadgeState::Conflicted: // fall through + case BadgeState::Notification: // fall through + case BadgeState::Modified: // fall through + case BadgeState::Added: // fall through + case BadgeState::Deleted: // fall through + case BadgeState::Untracked: // fall through + case BadgeState::Renamed: // fall through return QPalette().color(QPalette::WindowText); } @@ -123,8 +130,20 @@ QColor Theme::badge(BadgeRole role, BadgeState state) { case BadgeState::Notification: return mDark ? "#8C2026" : "#FF0000"; + case BadgeState::Modified: + return mDark ? "#91973A" : "#FFEEDB"; + case BadgeState::Added: + return mDark ? "#394734" : "#DCFFDC"; + case BadgeState::Deleted: + return mDark ? "#5E3638" : "#FFDCDC"; + case BadgeState::Untracked: + return mDark ? "#2A4944" : "#C7FFF6"; + case BadgeState::Renamed: + return mDark ? "#23455E" : "#D2E8FC"; } } + assert(false); + return QStringLiteral(""); } QList Theme::branchTopologyEdges() { @@ -152,6 +171,8 @@ QColor Theme::commitEditor(CommitEditor color) { case CommitEditor::LengthWarning: return Qt::yellow; } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(color))); } QColor Theme::diff(Diff color) { @@ -180,6 +201,8 @@ QColor Theme::diff(Diff color) { case Diff::Error: return "#7E494B"; } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(color))); } switch (color) { @@ -206,6 +229,8 @@ QColor Theme::diff(Diff color) { case Diff::Error: return "#FF0000"; } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(color))); } QColor Theme::heatMap(HeatMap color) { @@ -216,6 +241,8 @@ QColor Theme::heatMap(HeatMap color) { return mDark ? QPalette().color(QPalette::Inactive, QPalette::Highlight) : QPalette().color(QPalette::Mid); } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(color))); } QColor Theme::remoteComment(Comment color) { @@ -229,6 +256,8 @@ QColor Theme::remoteComment(Comment color) { case Comment::Timestamp: return QPalette().color(QPalette::WindowText); } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(color))); } QColor Theme::star() { return QPalette().color(QPalette::Highlight); } diff --git a/src/app/Theme.h b/src/app/Theme.h index 79cf9ee3..25cadb68 100644 --- a/src/app/Theme.h +++ b/src/app/Theme.h @@ -22,7 +22,18 @@ class Theme { public: enum class BadgeRole { Foreground, Background }; - enum class BadgeState { Normal, Selected, Conflicted, Head, Notification }; + enum class BadgeState { + Normal, + Selected, + Conflicted, + Head, + Notification, + Modified, + Added, + Deleted, + Untracked, + Renamed + }; enum class CommitEditor { SpellError, SpellIgnore, LengthWarning }; diff --git a/src/conf/CMakeLists.txt b/src/conf/CMakeLists.txt index 41a8dd32..bbb0f2ce 100644 --- a/src/conf/CMakeLists.txt +++ b/src/conf/CMakeLists.txt @@ -1,18 +1,15 @@ add_library(conf ConfFile.cpp Settings.cpp Setting.cpp RecentRepositories.cpp RecentRepository.cpp) -target_link_libraries(conf lua Qt5::Core util) +target_link_libraries(conf lua Qt5::Core util translation) +# SRC_ definitions point to the source directly target_compile_definitions( - conf PRIVATE SCINTILLUA_LEXERS_DIR="${SCINTILLUA_LEXERS_DIR}") - -if(UNIX) - target_compile_definitions( - conf - PRIVATE CONF_DIR="${CMAKE_INSTALL_FULL_DATADIR}/gittyup/Resources" - L10N_DIR="${CMAKE_INSTALL_FULL_DATADIR}/gittyup/Resources/l10n") -else() - - target_compile_definitions(conf PRIVATE CONF_DIR="" L10N_DIR="") -endif() + conf + PRIVATE CONF_DIR="${RESOURCES_DIR}" + SRC_CONF_DIR="${CMAKE_SOURCE_DIR}/conf" + L10N_DIR="${L10N_INSTALL_DIR}" + SRC_L10N_DIR="${CMAKE_BINARY_DIR}/l10n" + SCINTILLUA_LEXERS_DIR="${SCINTILLUA_LEXERS_DIR}" + SRC_SCINTILLUA_LEXERS_DIR="${SRC_SCINTILLUA_LEXERS_DIR}") set_target_properties(conf PROPERTIES AUTOMOC ON) diff --git a/src/conf/RecentRepositories.cpp b/src/conf/RecentRepositories.cpp index e9e3623d..bfae9a74 100644 --- a/src/conf/RecentRepositories.cpp +++ b/src/conf/RecentRepositories.cpp @@ -50,16 +50,20 @@ void RecentRepositories::remove(int index) { emit repositoryRemoved(); } -void RecentRepositories::add(QString path) { +/*! + * gitpath: path to the git repository, does not neccesarly need to be the + * workdir + */ +void RecentRepositories::add(QString gitpath) { emit repositoryAboutToBeAdded(); auto end = mRepos.end(); - RecentRepository *repo = new RecentRepository(path, this); + RecentRepository *repo = new RecentRepository(gitpath, this); auto it = std::remove_if(mRepos.begin(), end, [repo](RecentRepository *rhs) { #ifdef Q_OS_WIN - return repo->path().compare(rhs->path(), Qt::CaseInsensitive) == 0; + return repo->gitpath().compare(rhs->gitpath(), Qt::CaseInsensitive) == 0; #else - return (repo->path() == rhs->path()); + return (repo->gitpath() == rhs->gitpath()); #endif }); @@ -82,7 +86,7 @@ RecentRepositories *RecentRepositories::instance() { void RecentRepositories::store() { QStringList paths; foreach (RecentRepository *repo, mRepos) - paths.append(repo->path()); + paths.append(repo->gitpath()); QSettings().setValue(kRecentKey, paths); @@ -125,6 +129,13 @@ void RecentRepositories::load() { qDeleteAll(mRepos); mRepos.clear(); + /* If two paths have the same name, increase the path segment so that they get + * unique For example: path1/anotherpath/repositoryname + * path2/anotherpath/repositoryname + * + * In this case the complete paths are shown and not only 'repositoryname', + * otherwise they are not distinguishable in the recent repository list: + */ foreach (const QString &path, paths) { RecentRepository *repo = new RecentRepository(path, this); auto functor = [repo](RecentRepository *rhs) { diff --git a/src/conf/RecentRepository.cpp b/src/conf/RecentRepository.cpp index 1248d26e..242886e1 100644 --- a/src/conf/RecentRepository.cpp +++ b/src/conf/RecentRepository.cpp @@ -9,13 +9,13 @@ #include "RecentRepository.h" -RecentRepository::RecentRepository(const QString &path, QObject *parent) - : QObject(parent), mPath(path) {} +RecentRepository::RecentRepository(const QString &gitpath, QObject *parent) + : QObject(parent), mGitPath(gitpath) {} -QString RecentRepository::path() const { return mPath; } +QString RecentRepository::gitpath() const { return mGitPath; } QString RecentRepository::name() const { - return mPath.section('/', -mSections); + return mGitPath.section('/', -mSections, -1); } void RecentRepository::increment() { ++mSections; } diff --git a/src/conf/RecentRepository.h b/src/conf/RecentRepository.h index 99fbec8d..2b48264d 100644 --- a/src/conf/RecentRepository.h +++ b/src/conf/RecentRepository.h @@ -16,15 +16,15 @@ class RecentRepository : public QObject { Q_OBJECT public: - RecentRepository(const QString &path, QObject *parent = nullptr); + RecentRepository(const QString &gitpath, QObject *parent = nullptr); - QString path() const; + QString gitpath() const; QString name() const; private: void increment(); - QString mPath; + QString mGitPath; int mSections = 1; friend class RecentRepositories; diff --git a/src/conf/Setting.cpp b/src/conf/Setting.cpp index ee0d4c29..4ff5b871 100644 --- a/src/conf/Setting.cpp +++ b/src/conf/Setting.cpp @@ -26,7 +26,7 @@ void Setting::initialize(QMap &keys) { keys[Id::TerminalName] = "terminal/name"; keys[Id::TerminalPath] = "terminal/path"; keys[Id::DontTranslate] = "translation/disable"; - keys[Id::StoreCredentials] = "credential/store"; + keys[Id::Language] = "translation/language"; keys[Id::AllowSingleInstanceOnly] = "singleInstance"; keys[Id::CheckForUpdatesAutomatically] = "update/check"; keys[Id::InstallUpdatesAutomatically] = "update/download"; @@ -35,8 +35,13 @@ void Setting::initialize(QMap &keys) { keys[Id::SshKeyFilePath] = "ssh/keyFilePath"; keys[Id::CommitMergeImmediately] = "merge/commit"; keys[Id::ShowCommitsInCompactMode] = "commit/compact"; + keys[Id::ShowCommitsAuthor] = "commit/author"; + keys[Id::ShowCommitsDate] = "commit/date"; + keys[Id::ShowCommitsId] = "commit/id"; keys[Id::ShowChangedFilesAsList] = "doubletreeview/listview"; keys[Id::ShowChangedFilesInSingleView] = "doubletreeview/single"; + keys[Id::ShowChangedFilesMultiColumn] = "doubletreeview/listviewmulticolumn"; + keys[Id::HideUntracked] = "untracked.hide"; } void Prompt::initialize(QMap &keys) { diff --git a/src/conf/Setting.h b/src/conf/Setting.h index f5b25f00..b3f9f125 100644 --- a/src/conf/Setting.h +++ b/src/conf/Setting.h @@ -50,7 +50,6 @@ public: TerminalName, TerminalPath, DontTranslate, - StoreCredentials, AllowSingleInstanceOnly, CheckForUpdatesAutomatically, InstallUpdatesAutomatically, @@ -59,8 +58,14 @@ public: SshKeyFilePath, CommitMergeImmediately, ShowCommitsInCompactMode, + ShowCommitsAuthor, + ShowCommitsDate, + ShowCommitsId, ShowChangedFilesAsList, + ShowChangedFilesMultiColumn, // For the list only ShowChangedFilesInSingleView, + HideUntracked, + Language, }; Q_ENUM(Id) diff --git a/src/conf/Settings.cpp b/src/conf/Settings.cpp index d03f9050..184703c3 100644 --- a/src/conf/Settings.cpp +++ b/src/conf/Settings.cpp @@ -9,13 +9,14 @@ #include "Settings.h" #include "ConfFile.h" +#include "Debug.h" +#include "qtsupport.h" +#include "languages.h" #include #include #include #include -#include - #ifdef Q_OS_WIN #define CS Qt::CaseInsensitive #else @@ -24,18 +25,20 @@ namespace { -const QString kIgnoreWsKey = "diff/whitespace/ignore"; -const QString kLastPathKey = "lastpath"; +const QString kIgnoreWsKey("diff/whitespace/ignore"); +const QString kLastPathKey("lastpath"); +const QString kTranslation("translation"); +const QString kTranslationLanguage("language"); // Look up variant at key relative to root. QVariant lookup(const QVariantMap &root, const QString &key) { - QStringList list = key.split("/", QString::SkipEmptyParts); + QStringList list(key.split("/", Qt::SkipEmptyParts)); if (list.isEmpty()) return root; - QVariantMap map = root; + QVariantMap map(root); while (map.contains(list.first())) { - QVariant result = map.value(list.takeFirst()); + QVariant result(map.value(list.takeFirst())); if (list.isEmpty()) return result; map = result.toMap(); @@ -45,24 +48,16 @@ QVariant lookup(const QVariantMap &root, const QString &key) { } QString promptKey(Prompt::Kind kind) { return Prompt::key(kind); } - -QDir rootDir() { - QDir dir(QCoreApplication::applicationDirPath()); - -#ifdef Q_OS_MAC - dir.cdUp(); // Contents -#endif - qDebug() << "Root dir: " << dir; - - return dir; -} - } // namespace Settings::Settings(QObject *parent) : QObject(parent) { foreach (const QFileInfo &file, confDir().entryInfoList(QStringList("*.lua"))) mDefaults[file.baseName()] = ConfFile(file.absoluteFilePath()).parse(); mDefaults[kLastPathKey] = QDir::homePath(); + QVariantMap map; + map[kTranslationLanguage] = QVariant(Languages::system); + mDefaults[kTranslation] = map; + mDefaults[kTranslation].toMap()[kTranslationLanguage] = Languages::system; mCurrentMap = mDefaults; } @@ -76,7 +71,7 @@ QVariant Settings::value(const QString &key, const QVariant &defaultValue) const { QSettings settings; settings.beginGroup(group()); - QVariant result = settings.value(key, defaultValue); + QVariant result(settings.value(key, defaultValue)); settings.endGroup(); return result; } @@ -120,13 +115,13 @@ QString Settings::lexer(const QString &filename) { return "null"; QFileInfo info(filename); - QString name = info.fileName(); - QString suffix = info.suffix().toLower(); + QString name(info.fileName()); + QString suffix(info.suffix().toLower()); // Try all patterns first. - QVariantMap lexers = mDefaults.value("lexers").toMap(); + QVariantMap lexers(mDefaults.value("lexers").toMap()); foreach (const QString &key, lexers.keys()) { - QVariantMap map = lexers.value(key).toMap(); + QVariantMap map(lexers.value(key).toMap()); if (map.contains("patterns")) { foreach (QString pattern, map.value("patterns").toString().split(",")) { QRegExp regExp(pattern, CS, QRegExp::Wildcard); @@ -138,7 +133,7 @@ QString Settings::lexer(const QString &filename) { // Try to match by extension. foreach (const QString &key, lexers.keys()) { - QVariantMap map = lexers.value(key).toMap(); + QVariantMap map(lexers.value(key).toMap()); if (map.contains("extensions")) { foreach (QString ext, map.value("extensions").toString().split(",")) { if (suffix == ext) @@ -151,8 +146,8 @@ QString Settings::lexer(const QString &filename) { } QString Settings::kind(const QString &filename) { - QString key = lexer(filename); - QVariantMap lexers = mDefaults.value("lexers").toMap(); + QString key(lexer(filename)); + QVariantMap lexers(mDefaults.value("lexers").toMap()); return lexers.value(key).toMap().value("name").toString(); } @@ -184,6 +179,8 @@ QString Settings::promptDescription(Prompt::Kind kind) const { case Prompt::Kind::LargeFiles: return tr("Prompt to stage large files"); } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(kind))); } void Settings::setHotkey(const QString &action, const QString &hotkey) { @@ -208,6 +205,13 @@ void Settings::setLastPath(const QString &lastPath) { setValue(kLastPathKey, lastPath); } +QDir Settings::rootDir() { + QDir dir(QCoreApplication::applicationDirPath()); + dir.cdUp(); + + return dir; +} + QDir Settings::appDir() { QDir dir(QCoreApplication::applicationDirPath()); @@ -223,48 +227,62 @@ QDir Settings::appDir() { QDir Settings::docDir() { return confDir(); } QDir Settings::confDir() { - QDir dir = rootDir(); - if (!dir.cd("Resources")) - dir = QDir(CONF_DIR); - qDebug() << "Conf dir: " << dir; + +#if !defined(NDEBUG) + QDir dir(SRC_CONF_DIR); +#else + QDir dir(rootDir()); + if (!dir.cd("Resources")) { + if (!dir.cd(CONF_DIR)) + dir.setPath(SRC_CONF_DIR); + } +#endif return dir; } QDir Settings::l10nDir() { - QDir dir = confDir(); - if (!dir.cd("l10n")) - dir = QDir(L10N_DIR); - - qDebug() << "l10n dir: " << dir; +#if !defined(NDEBUG) + QDir dir(QDir(SRC_L10N_DIR)); +#else + QDir dir(confDir()); + if (!dir.cd("l10n")) { + dir = rootDir(); + if (!dir.cd(L10N_DIR)) + dir.setPath(SRC_L10N_DIR); + } +#endif return dir; } QDir Settings::dictionariesDir() { - QDir dir = confDir(); + QDir dir(confDir()); dir.cd("dictionaries"); - qDebug() << "Dictionaries dir: " << dir; return dir; } QDir Settings::lexerDir() { - QDir dir = confDir(); - if (!dir.cd("lexers")) - dir = QDir(SCINTILLUA_LEXERS_DIR); - qDebug() << "Lexers dir: " << dir; +#if !defined(NDEBUG) + QDir dir(SRC_SCINTILLUA_LEXERS_DIR); +#else + QDir dir(confDir()); + if (!dir.cd("lexers")) { + dir = rootDir(); + if (!dir.cd(SCINTILLUA_LEXERS_DIR)) + dir.setPath(SRC_SCINTILLUA_LEXERS_DIR); + } +#endif return dir; } QDir Settings::themesDir() { - QDir dir = confDir(); + QDir dir(confDir()); dir.cd("themes"); - qDebug() << "Theme dir: " << dir; return dir; } QDir Settings::pluginsDir() { - QDir dir = confDir(); + QDir dir(confDir()); dir.cd("plugins"); - qDebug() << "Plugins dir: " << dir; return dir; } @@ -273,8 +291,8 @@ QDir Settings::userDir() { } QDir Settings::tempDir() { - QString name = QCoreApplication::applicationName(); - QDir dir = QDir::temp(); + QString name(QCoreApplication::applicationName()); + QDir dir(QDir::temp()); dir.mkpath(name); dir.cd(name); return dir; diff --git a/src/conf/Settings.h b/src/conf/Settings.h index 61b6662d..5ba059f9 100644 --- a/src/conf/Settings.h +++ b/src/conf/Settings.h @@ -45,6 +45,7 @@ public: void setLastPath(const QString &lastPath); // settings directories + static QDir rootDir(); static QDir appDir(); static QDir docDir(); static QDir confDir(); diff --git a/src/cred/CMakeLists.txt b/src/cred/CMakeLists.txt index ce778410..e3516b2a 100644 --- a/src/cred/CMakeLists.txt +++ b/src/cred/CMakeLists.txt @@ -1,10 +1,5 @@ -if(WIN32) - set(CREDENTIAL_IMPL_FILE WinCred.cpp) -endif() +add_library(cred Cache.cpp Store.cpp CredentialHelper.cpp GitCredential.cpp) -add_library(cred Cache.cpp CredentialHelper.cpp GitCredential.cpp - ${CREDENTIAL_IMPL_FILE}) - -target_link_libraries(cred conf Qt5::Core) +target_link_libraries(cred conf git Qt5::Core) set_target_properties(cred PROPERTIES AUTOMOC ON) diff --git a/src/cred/CredentialHelper.cpp b/src/cred/CredentialHelper.cpp index bda260ae..f9bc061c 100644 --- a/src/cred/CredentialHelper.cpp +++ b/src/cred/CredentialHelper.cpp @@ -10,8 +10,10 @@ #include "CredentialHelper.h" #include "Cache.h" #include "GitCredential.h" -#include "WinCred.h" +#include "qtsupport.h" +#include "Store.h" #include "conf/Settings.h" +#include "git/Config.h" #include #include #include @@ -22,27 +24,30 @@ namespace { const QString kLogKey = "credential/log"; +const QString cacheStoreName = "cache"; +const QString storeStoreName = "store"; +const QString osxKeyChainStoreName = "osxkeychain"; +const QString winCredStoreName = "wincred"; +const QString libSecretStoreName = "libsecret"; +const QString gnomeKeyringStoreName = "gnome-keyring"; + } // namespace CredentialHelper *CredentialHelper::instance() { static QPointer instance; if (!instance) { - if (Settings::instance()->value(Setting::Id::StoreCredentials).toBool()) { -#if defined(Q_OS_MAC) - instance = new GitCredential("osxkeychain"); -#elif defined(Q_OS_WIN) - // The git wincred helper fails for some users. - instance = new WinCred; -#else - QLibrary lib("secret-1", 0); - if (lib.load()) { - instance = new GitCredential("libsecret"); + git::Config config = git::Config::global(); + auto helperName = config.value("credential.helper"); + if (isHelperValid(helperName)) { + if (helperName == cacheStoreName) { + instance = new Cache; + } else if (helperName == storeStoreName) { + auto path = + QString::fromLocal8Bit(qgetenv("HOME") + "/.git-credentials"); + instance = new Store(path); } else { - QLibrary lib("gnome-keyring", 0); - if (lib.load()) - instance = new GitCredential("gnome-keyring"); + instance = new GitCredential(helperName); } -#endif } if (!instance) @@ -52,6 +57,31 @@ CredentialHelper *CredentialHelper::instance() { return instance; } +bool CredentialHelper::isHelperValid(const QString &name) { + return !name.isEmpty(); +} + +QStringList CredentialHelper::getAvailableHelperNames() { + QStringList list; + list.append(cacheStoreName); + list.append(storeStoreName); +#if defined(Q_OS_MAC) + list.append(osxKeyChainStoreName); +#elif defined(Q_OS_WIN) + list.append(winCredStoreName); +#else + QLibrary lib("secret-1", 0); + if (lib.load()) { + list.append(libSecretStoreName); + } + QLibrary lib2(gnomeKeyringStoreName, 0); + if (lib2.load()) { + list.append(gnomeKeyringStoreName); + } +#endif + return list; +} + bool CredentialHelper::isLoggingEnabled() { return QSettings().value(kLogKey).toBool(); } @@ -69,5 +99,5 @@ void CredentialHelper::log(const QString &text) { return; QString time = QTime::currentTime().toString(Qt::ISODateWithMs); - QTextStream(&file) << time << " - " << text << endl; + QTextStream(&file) << time << " - " << text << Qt::endl; } diff --git a/src/cred/CredentialHelper.h b/src/cred/CredentialHelper.h index 6ee86198..45a1b92f 100644 --- a/src/cred/CredentialHelper.h +++ b/src/cred/CredentialHelper.h @@ -33,6 +33,9 @@ public: static bool isLoggingEnabled(); static void setLoggingEnabled(bool enabled); + static QStringList getAvailableHelperNames(); + static bool isHelperValid(const QString &name); + protected: static void log(const QString &text); }; diff --git a/src/cred/GitCredential.cpp b/src/cred/GitCredential.cpp index b471f88a..43db5c70 100644 --- a/src/cred/GitCredential.cpp +++ b/src/cred/GitCredential.cpp @@ -8,6 +8,8 @@ // #include "GitCredential.h" +#include "qtsupport.h" +#include #include #include #include @@ -44,11 +46,11 @@ bool GitCredential::get(const QString &url, QString &username, return false; QTextStream out(&process); - out << "protocol=" << protocol(url) << endl; - out << "host=" << host(url) << endl; + out << "protocol=" << protocol(url) << Qt::endl; + out << "host=" << host(url) << Qt::endl; if (!username.isEmpty()) - out << "username=" << username << endl; - out << endl; + out << "username=" << username << Qt::endl; + out << Qt::endl; process.closeWriteChannel(); process.waitForFinished(); @@ -79,11 +81,11 @@ bool GitCredential::store(const QString &url, const QString &username, return false; QTextStream out(&process); - out << "protocol=" << protocol(url) << endl; - out << "host=" << host(url) << endl; - out << "username=" << username << endl; - out << "password=" << password << endl; - out << endl; + out << "protocol=" << protocol(url) << Qt::endl; + out << "host=" << host(url) << Qt::endl; + out << "username=" << username << Qt::endl; + out << "password=" << password << Qt::endl; + out << Qt::endl; process.closeWriteChannel(); process.waitForFinished(); @@ -92,6 +94,46 @@ bool GitCredential::store(const QString &url, const QString &username, } QString GitCredential::command() const { - QDir dir(QCoreApplication::applicationDirPath()); - return dir.filePath(QString("git-credential-%1").arg(mName)); + QString name = QString("git-credential-%1").arg(mName); + QDir appDir = QCoreApplication::applicationDirPath(); + appDir.cd("credential-helpers"); + + // Prefer credential helpers directly installed into Gittyup's app dir + QString candidate = + QStandardPaths::findExecutable(name, QStringList(appDir.path())); + if (!candidate.isEmpty()) { + return candidate; + } + + candidate = QStandardPaths::findExecutable(name); + if (!candidate.isEmpty()) { + return candidate; + } + +#ifdef Q_OS_WIN + // Look for GIT CLI installation path + QString gitPath = QStandardPaths::findExecutable("git"); + if (!gitPath.isEmpty()) { + QDir gitDir = QFileInfo(gitPath).dir(); + if (gitDir.dirName() == "cmd" || gitDir.dirName() == "bin") { + gitDir.cdUp(); + +#ifdef Q_OS_WIN64 + gitDir.cd("mingw64"); +#else + gitDir.cd("mingw32"); +#endif + + gitDir.cd("bin"); + + candidate = + QStandardPaths::findExecutable(name, QStringList(gitDir.path())); + if (!candidate.isEmpty()) { + return candidate; + } + } + } +#endif + + return name; } diff --git a/src/cred/Store.cpp b/src/cred/Store.cpp new file mode 100644 index 00000000..65f1f849 --- /dev/null +++ b/src/cred/Store.cpp @@ -0,0 +1,111 @@ +// +// Copyright (c) 2022, Gittyup Community +// +// This software is licensed under the MIT License. The LICENSE.md file +// describes the conditions under which this software may be distributed. +// +// Author: Hessamoddin Hediehloo(H-4ND-H) +// + +#include "Store.h" +#include +#include +#include + +namespace { + +QString host(const QString &url) { + QString host = QUrl(url).host(); + if (!host.isEmpty()) + return host; + + // Extract hostname from SSH URL. + int end = url.indexOf(':'); + int begin = url.indexOf('@') + 1; + return url.mid(begin, end - begin); +} + +QString protocol(const QString &url) { + QString scheme = QUrl(url).scheme(); + return !scheme.isEmpty() ? scheme : "ssh"; +} + +} // namespace + +Store::Store(const QString &path) { mPath = path; } + +QMap>> Store::readCredFile() { + QMap>> store; + + QFile file(mPath); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) + return store; + + while (!file.atEnd()) { + auto line = file.readLine(); + auto urlStr = QUrl::fromPercentEncoding(line); + auto urlObj = QUrl::fromUserInput(urlStr); + store[urlObj.scheme()][urlObj.host()][urlObj.userName()] = + urlObj.password(); + } + + file.close(); + + return store; +} + +bool Store::extractUserPass(const QMap &map, + QString &username, QString &password) { + if (map.isEmpty()) + return false; + + if (username.isEmpty()) + username = map.keys().first(); + + if (!map.contains(username)) + return false; + + password = map.value(username); + + return !username.isEmpty() && !password.isEmpty(); +} + +bool Store::get(const QString &url, QString &username, QString &password) { + + auto store = readCredFile(); + const QMap &map = store[protocol(url)][host(url)]; + return extractUserPass(map, username, password); +} + +bool Store::store(const QString &url, const QString &username, + const QString &password) { + auto store = readCredFile(); + store[protocol(url)][host(url)][username] = password; + + QFile file(mPath); + if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text)) + return false; + + foreach (const auto &protocolKey, store.keys()) { + auto protocol = store[protocolKey]; + foreach (const auto &hostKey, protocol.keys()) { + auto host = protocol[hostKey]; + foreach (const auto &usernameKey, host.keys()) { + QUrl temp; + temp.setScheme(protocolKey); + temp.setHost(hostKey); + temp.setUserName(usernameKey); + temp.setPassword(host[usernameKey]); + auto encoded = QUrl::toPercentEncoding(temp.toString(), "@:/"); + QTextStream fout(&file); + fout << encoded << "\n"; + } + } + } + + file.close(); + + return true; +} + +QString Store::command() const { return ""; } diff --git a/src/cred/Store.h b/src/cred/Store.h new file mode 100644 index 00000000..88679f24 --- /dev/null +++ b/src/cred/Store.h @@ -0,0 +1,34 @@ +// +// Copyright (c) 2022, Gittyup Community +// +// This software is licensed under the MIT License. The LICENSE.md file +// describes the conditions under which this software may be distributed. +// +// Author: Hessamoddin Hediehloo(H-4ND-H) +// + +#ifndef STORE_H +#define STORE_H + +#include "CredentialHelper.h" +#include + +class Store : public CredentialHelper { +public: + Store(const QString &path); + + bool get(const QString &url, QString &username, QString &password) override; + + bool store(const QString &url, const QString &username, + const QString &password) override; + +private: + QString command() const; + QMap>> readCredFile(); + bool extractUserPass(const QMap &map, QString &username, + QString &password); + + QString mPath; +}; + +#endif diff --git a/src/cred/WinCred.cpp b/src/cred/WinCred.cpp deleted file mode 100644 index 02e30867..00000000 --- a/src/cred/WinCred.cpp +++ /dev/null @@ -1,128 +0,0 @@ -// -// Copyright (c) 2018, Scientific Toolworks, Inc. -// -// This software is licensed under the MIT License. The LICENSE.md file -// describes the conditions under which this software may be distributed. -// -// Author: Jason Haslam -// - -#include "WinCred.h" -#include -#include -#include -#include - -// Attempt to be compatible with the git wincred helper by matching -// the target name and encoding the password in UTF-16. - -namespace { - -const QString kNameFmt = "%1@%2"; -const QString kTargetFmt = "git:https://%1"; - -QString buildTarget(const QString &host, const QString &name) { - return kTargetFmt.arg(name.isEmpty() ? host : kNameFmt.arg(name, host)); -} - -QString host(const QString &url) { - QString host = QUrl(url).host(); - if (!host.isEmpty()) - return host; - - // Extract hostname from SSH URL. - int end = url.indexOf(':'); - int begin = url.indexOf('@') + 1; - return url.mid(begin, end - begin); -} - -} // namespace - -WinCred::WinCred() {} - -bool WinCred::get(const QString &url, QString &username, QString &password) { - log(QString("get: %1 %2").arg(url, username)); - - PCREDENTIAL cred; - QString target = buildTarget(host(url), username); - if (!CredRead(target.toUtf8(), CRED_TYPE_GENERIC, 0, &cred)) { - switch (DWORD error = GetLastError()) { - case ERROR_NOT_FOUND: - log(QString("get: credential not found for '%1'").arg(target)); - break; - - case ERROR_NO_SUCH_LOGON_SESSION: - log("get: no such logon session"); - break; - - case ERROR_INVALID_FLAGS: - log("get: invalid flags"); - break; - - default: - log(QString("get: unknown error '%1'").arg(error)); - break; - } - - return false; - } - - username = cred->UserName; - int size = cred->CredentialBlobSize / sizeof(ushort); - password = QString::fromUtf16((ushort *)cred->CredentialBlob, size); - - CredFree(cred); - - return true; -} - -bool WinCred::store(const QString &url, const QString &username, - const QString &password) { - log(QString("store: %1 %2").arg(url, username)); - - bool result = false; - QByteArray name = username.toUtf8(); - QStringList names = {QString(), username}; - foreach (const QString &tmp, names) { - QByteArray target = buildTarget(host(url), tmp).toUtf8(); - - CREDENTIAL cred; - cred.Flags = 0; - cred.Type = CRED_TYPE_GENERIC; - cred.TargetName = target.data(); - cred.Comment = "Written by GitAhead"; - cred.CredentialBlobSize = password.length() * sizeof(ushort); - cred.CredentialBlob = (LPBYTE)password.utf16(); - cred.Persist = CRED_PERSIST_LOCAL_MACHINE; - cred.AttributeCount = 0; - cred.Attributes = nullptr; - cred.TargetAlias = nullptr; - cred.UserName = name.data(); - if (CredWrite(&cred, 0)) { - result = true; - } else { - switch (DWORD error = GetLastError()) { - case ERROR_NO_SUCH_LOGON_SESSION: - log("store: no such logon session"); - break; - - case ERROR_INVALID_PARAMETER: - log("store: invalid parameter"); - - case ERROR_INVALID_FLAGS: - log("store: invalid flags"); - break; - - case ERROR_BAD_USERNAME: - log(QString("store: bad username '%1'").arg(username)); - break; - - default: - log(QString("store: unknown error '%1'").arg(error)); - break; - } - } - } - - return result; -} diff --git a/src/cred/WinCred.h b/src/cred/WinCred.h deleted file mode 100644 index a93e2f94..00000000 --- a/src/cred/WinCred.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// Copyright (c) 2018, Scientific Toolworks, Inc. -// -// This software is licensed under the MIT License. The LICENSE.md file -// describes the conditions under which this software may be distributed. -// -// Author: Jason Haslam -// - -#ifndef WINCRED_H -#define WINCRED_H - -#include "CredentialHelper.h" - -class WinCred : public CredentialHelper { -public: - WinCred(); - - bool get(const QString &url, QString &username, QString &password) override; - - bool store(const QString &url, const QString &username, - const QString &password) override; -}; - -#endif diff --git a/src/dialogs/AboutDialog.cpp b/src/dialogs/AboutDialog.cpp index af3868b3..ac202c7e 100644 --- a/src/dialogs/AboutDialog.cpp +++ b/src/dialogs/AboutDialog.cpp @@ -42,7 +42,9 @@ const QString kSubtitleFmt = "

%2

"; const QString kTextFmt = "

%1 v%2 " - "- %3 - %4
Copyright © 2021-2022 Gittyup contributors" + "- %3 - %4
Copyright © 2021-" + + QString::number(CURR_YEAR) + + " Gittyup contributors" "
Copyright © 2016-2020 Scientific Toolworks, Inc. and " "contributors

If you have a question that might benefit the " "community, consider asking it on Stack Overflow by " diff --git a/src/dialogs/AmendDialog.cpp b/src/dialogs/AmendDialog.cpp index d7e8f970..dc225d1f 100644 --- a/src/dialogs/AmendDialog.cpp +++ b/src/dialogs/AmendDialog.cpp @@ -172,7 +172,8 @@ AmendDialog::AmendDialog(const git::Signature &author, l->addWidget(m_committerInfo, Row::Committer, 0, 1, 2); auto *lMessage = new QLabel(tr("Commit Message:"), this); - m_commitMessage = new QTextEdit(commitMessage, this); + m_commitMessage = new QTextEdit(this); + m_commitMessage->setPlainText(commitMessage); m_commitMessage->setObjectName("Textlabel Commit Message"); l->addWidget(lMessage, Row::CommitMessageLabel, 0); l->addWidget(m_commitMessage, Row::CommitMessage, 0, 1, 2); diff --git a/src/dialogs/CMakeLists.txt b/src/dialogs/CMakeLists.txt index bcb82b87..0295257e 100644 --- a/src/dialogs/CMakeLists.txt +++ b/src/dialogs/CMakeLists.txt @@ -24,6 +24,7 @@ add_library( RebaseConflictDialog.cpp RemoteDialog.cpp RemoteTableModel.cpp + RenameBranchDialog.cpp SettingsDialog.cpp StartDialog.cpp SubmoduleDelegate.cpp diff --git a/src/dialogs/ConfigDialog.cpp b/src/dialogs/ConfigDialog.cpp index eeb21b6c..7327532f 100644 --- a/src/dialogs/ConfigDialog.cpp +++ b/src/dialogs/ConfigDialog.cpp @@ -100,17 +100,17 @@ public: // Connect signals after initializing fields. connect(mName, &QLineEdit::textChanged, this, [this](const QString &text) { - git::Config config = mRepo.config(); + git::Config config = mRepo.gitConfig(); config.setValue("user.name", text); }); connect(mEmail, &QLineEdit::textChanged, this, [this](const QString &text) { - git::Config config = mRepo.config(); + git::Config config = mRepo.gitConfig(); config.setValue("user.email", text); }); connect(mFetch, &QCheckBox::toggled, view, [this, view](bool checked) { - git::Config config = mRepo.config(); + git::Config config = mRepo.appConfig(); config.setValue("autofetch.enable", checked); view->startFetchTimer(); }); @@ -118,28 +118,28 @@ public: using Signal = void (QSpinBox::*)(int); auto signal = static_cast(&QSpinBox::valueChanged); connect(mFetchMinutes, signal, this, [this](int value) { - git::Config config = mRepo.config(); + git::Config config = mRepo.appConfig(); config.setValue("autofetch.minutes", value); }); connect(mPushCommit, &QCheckBox::toggled, this, [this](bool checked) { - git::Config config = mRepo.config(); + git::Config config = mRepo.appConfig(); config.setValue("autopush.enable", checked); }); connect(mPullUpdate, &QCheckBox::toggled, this, [this](bool checked) { - git::Config config = mRepo.config(); + git::Config config = mRepo.appConfig(); config.setValue("autoupdate.enable", checked); }); connect(mAutoPrune, &QCheckBox::toggled, this, [this](bool checked) { - git::Config config = mRepo.config(); + git::Config config = mRepo.appConfig(); config.setValue("autoprune.enable", checked); }); } void init() { - git::Config config = mRepo.config(); + git::Config config = mRepo.gitConfig(); mName->setText(config.value("user.name")); mEmail->setText(config.value("user.email")); @@ -158,6 +158,7 @@ public: git::Config app = mRepo.appConfig(); mFetch->setChecked(app.value("autofetch.enable", fetch)); mFetchMinutes->setValue(app.value("autofetch.minutes", minutes)); + mFetchMinutes->setEnabled(mFetch->isChecked()); mPushCommit->setChecked(app.value("autopush.enable", push)); mPullUpdate->setChecked(app.value("autoupdate.enable", update)); mAutoPrune->setChecked(app.value("autoprune.enable", prune)); @@ -605,7 +606,7 @@ public: QLineEdit *urlLineEdit = new QLineEdit(map.value("Endpoint").section(" ", 0, 0)); connect(urlLineEdit, &QLineEdit::textChanged, [repo](const QString &text) { - git::Config config = repo.config(); + git::Config config = repo.gitConfig(); config.setValue("lfs.url", text); }); @@ -614,7 +615,7 @@ public: pruneOffsetDays->setValue(map.value("PruneOffsetDays").toInt()); auto signal = QOverload::of(&QSpinBox::valueChanged); connect(pruneOffsetDays, signal, [repo](int value) { - git::Config config = repo.config(); + git::Config config = repo.gitConfig(); config.setValue("lfs.pruneoffsetdays", value); }); QHBoxLayout *pruneOffsetLayout = new QHBoxLayout; @@ -628,7 +629,7 @@ public: bool fetchRecentEnabled = map.value("FetchRecentAlways").contains("true"); fetchRecentAlways->setChecked(fetchRecentEnabled); connect(fetchRecentAlways, &QCheckBox::toggled, [repo](bool checked) { - git::Config config = repo.config(); + git::Config config = repo.gitConfig(); config.setValue("lfs.fetchrecentalways", checked); }); @@ -637,7 +638,7 @@ public: fetchRecentRefsDays->setValue(map.value("FetchRecentRefsDays").toInt()); fetchRecentRefsDays->setEnabled(fetchRecentEnabled); connect(fetchRecentRefsDays, signal, [repo](int value) { - git::Config config = repo.config(); + git::Config config = repo.gitConfig(); config.setValue("lfs.fetchrecentrefsdays", value); }); connect(fetchRecentAlways, &QCheckBox::toggled, this, @@ -655,7 +656,7 @@ public: map.value("FetchRecentCommitsDays").toInt()); fetchRecentCommitsDays->setEnabled(fetchRecentEnabled); connect(fetchRecentCommitsDays, signal, [repo](int value) { - git::Config config = repo.config(); + git::Config config = repo.gitConfig(); config.setValue("lfs.fetchrecentcommitsdays", value); }); connect(fetchRecentAlways, &QCheckBox::toggled, this, diff --git a/src/dialogs/DeleteBranchDialog.cpp b/src/dialogs/DeleteBranchDialog.cpp index 97573241..20741b0c 100644 --- a/src/dialogs/DeleteBranchDialog.cpp +++ b/src/dialogs/DeleteBranchDialog.cpp @@ -47,7 +47,7 @@ DeleteBranchDialog::DeleteBranchDialog(const git::Branch &branch, QString name = upstream.name().section('/', 1); QString key = kBranchMergeFmt.arg(branch.name()); - QString upstreamName = repo.config().value(key); + QString upstreamName = repo.gitConfig().value(key); git::Remote remote = upstream.remote(); QString remoteName = remote.name(); diff --git a/src/dialogs/DiffPanel.cpp b/src/dialogs/DiffPanel.cpp index f2183cac..ddf55827 100644 --- a/src/dialogs/DiffPanel.cpp +++ b/src/dialogs/DiffPanel.cpp @@ -24,7 +24,8 @@ #include DiffPanel::DiffPanel(const git::Repository &repo, QWidget *parent) - : QWidget(parent), mConfig(repo ? repo.config() : git::Config::global()) { + : QWidget(parent), + mConfig(repo ? repo.gitConfig() : git::Config::global()) { // diff context QSpinBox *context = new QSpinBox(this); QLabel *contextLabel = new QLabel(tr("lines"), this); diff --git a/src/dialogs/ExternalToolsDialog.cpp b/src/dialogs/ExternalToolsDialog.cpp index 9e81575f..20efa76b 100644 --- a/src/dialogs/ExternalToolsDialog.cpp +++ b/src/dialogs/ExternalToolsDialog.cpp @@ -85,7 +85,7 @@ QVBoxLayout *ExternalToolsDialog::createUserDefinedLayout(const QString &type) { table->resizeColumnsToContents(); }); - connect(footer, &Footer::minusClicked, [this, table, model] { + connect(footer, &Footer::minusClicked, [table, model] { QModelIndexList indexes = table->selectionModel()->selectedRows(0); foreach (const QModelIndex &index, indexes) model->remove(index.data(Qt::DisplayRole).toString()); diff --git a/src/dialogs/RemoteDialog.cpp b/src/dialogs/RemoteDialog.cpp index ca4c4a7e..579f768f 100644 --- a/src/dialogs/RemoteDialog.cpp +++ b/src/dialogs/RemoteDialog.cpp @@ -90,7 +90,7 @@ RemoteDialog::RemoteDialog(Kind kind, RepoView *parent) : QDialog(parent) { if (ref.isValid()) { QString key = QString("branch.%1.merge").arg(ref.name()); git::Config config = - RepoView::parentView(this)->repo().config(); + RepoView::parentView(this)->repo().gitConfig(); value = config.value(key); } mRemoteRef->setText(value); diff --git a/src/dialogs/RenameBranchDialog.cpp b/src/dialogs/RenameBranchDialog.cpp new file mode 100644 index 00000000..b7580ed4 --- /dev/null +++ b/src/dialogs/RenameBranchDialog.cpp @@ -0,0 +1,58 @@ +// This software is licensed under the MIT License. The LICENSE.md file +// describes the conditions under which this software may be distributed. +// +// Author: Michael WERLE +// + +#include "RenameBranchDialog.h" +#include "git/Branch.h" +#include "ui/ExpandButton.h" +#include "ui/ReferenceList.h" +#include "ui/RepoView.h" +#include +#include +#include +#include +#include +#include +#include + +RenameBranchDialog::RenameBranchDialog(const git::Repository &repo, + const git::Branch &branch, + QWidget *parent) + : QDialog(parent) { + Q_ASSERT(branch.isValid() && branch.isLocalBranch()); + setAttribute(Qt::WA_DeleteOnClose); + + mName = new QLineEdit(branch.name(), this); + mName->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); + mName->setMinimumWidth(QFontMetrics(mName->font()).averageCharWidth() * 40); + + QFormLayout *form = new QFormLayout; + form->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); + form->addRow(tr("Name:"), mName); + + QDialogButtonBox *buttons = new QDialogButtonBox(this); + buttons->addButton(QDialogButtonBox::Cancel); + QPushButton *rename = + buttons->addButton(tr("Rename Branch"), QDialogButtonBox::AcceptRole); + rename->setEnabled(false); + connect(buttons, &QDialogButtonBox::accepted, this, &QDialog::accept); + connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject); + + QVBoxLayout *layout = new QVBoxLayout(this); + layout->addLayout(form); + layout->addWidget(buttons); + + // Update button when name text changes. + connect(mName, &QLineEdit::textChanged, [repo, rename](const QString &text) { + rename->setEnabled(git::Branch::isNameValid(text) && + !repo.lookupBranch(text, GIT_BRANCH_LOCAL).isValid()); + }); + + // Perform the rename when the button is clicked + connect(rename, &QPushButton::clicked, + [this, branch] { git::Branch(branch).rename(mName->text()); }); +} + +QString RenameBranchDialog::name() const { return mName->text(); } diff --git a/src/dialogs/RenameBranchDialog.h b/src/dialogs/RenameBranchDialog.h new file mode 100644 index 00000000..5aa4538c --- /dev/null +++ b/src/dialogs/RenameBranchDialog.h @@ -0,0 +1,33 @@ +// This software is licensed under the MIT License. The LICENSE.md file +// describes the conditions under which this software may be distributed. +// +// Author: Michael WERLE +// + +#ifndef RENAMEBRANCHDIALOG_H +#define RENAMEBRANCHDIALOG_H + +#include "git/Branch.h" +#include + +class QLineEdit; + +namespace git { +class Reference; +class Repository; +} // namespace git + +class RenameBranchDialog : public QDialog { + Q_OBJECT + +public: + RenameBranchDialog(const git::Repository &repo, const git::Branch &branch, + QWidget *parent = nullptr); + + QString name() const; + +private: + QLineEdit *mName; +}; + +#endif diff --git a/src/dialogs/SettingsDialog.cpp b/src/dialogs/SettingsDialog.cpp index 6fe3eb8f..81dc303f 100644 --- a/src/dialogs/SettingsDialog.cpp +++ b/src/dialogs/SettingsDialog.cpp @@ -25,6 +25,7 @@ #include "ui/MainWindow.h" #include "ui/MenuBar.h" #include "ui/RepoView.h" +#include "languages.h" #include "update/Updater.h" #include #include @@ -105,17 +106,23 @@ public: new QCheckBox(tr("Update submodules after pull and clone"), this); mAutoPrune = new QCheckBox(tr("Prune when fetching"), this); mNoTranslation = new QCheckBox(tr("No translation"), this); + mLanguages = new QComboBox(this); + + QMapIterator i(Languages::languages); + while (i.hasNext()) { + i.next(); + mLanguages->addItem(tr(i.key()), QVariant(i.value())); + } mStoreCredentials = new QCheckBox(tr("Store credentials in secure storage"), this); + mAvailableStores = new QComboBox(this); + QLabel *privacy = new QLabel(tr("View privacy policy")); connect(privacy, &QLabel::linkActivated, [] { AboutDialog::openSharedInstance(AboutDialog::Privacy); }); - mSingleInstance = - new QCheckBox(tr("Only allow a single running instance"), this); - QFormLayout *form = new QFormLayout; form->addRow(tr("User name:"), mName); form->addRow(tr("User email:"), mEmail); @@ -124,11 +131,18 @@ public: form->addRow(QString(), mPullUpdate); form->addRow(QString(), mAutoPrune); form->addRow(tr("Language:"), mNoTranslation); + form->addRow(tr("Language:"), mLanguages); form->addRow(tr("Credentials:"), mStoreCredentials); + form->addRow(tr("Credential store type:"), mAvailableStores); form->addRow(QString(), privacy); + mSingleInstance = + new QCheckBox(tr("Only allow a single running instance"), this); + #if defined(Q_OS_LINUX) || defined(Q_OS_WIN) form->addRow(tr("Single instance:"), mSingleInstance); +#elif defined(Q_OS_MACX) + mSingleInstance->setVisible(false); #endif QVBoxLayout *layout = new QVBoxLayout(this); @@ -179,11 +193,33 @@ public: Settings::instance()->setValue(Setting::Id::DontTranslate, checked); }); - connect(mStoreCredentials, &QCheckBox::toggled, [](bool checked) { - Settings::instance()->setValue(Setting::Id::StoreCredentials, checked); + connect(mLanguages, QOverload::of(&QComboBox::currentIndexChanged), + [this]() { + const auto &language = mLanguages->currentData().toString(); + Settings::instance()->setValue(Setting::Id::Language, language); + }); + + connect(mStoreCredentials, &QCheckBox::toggled, [this](bool checked) { + git::Config config = git::Config::global(); + mAvailableStores->setEnabled(checked); + if (checked) { + auto store = mAvailableStores->currentText(); + config.setValue("credential.helper", store); + } else { + config.remove("credential.helper"); + } + delete CredentialHelper::instance(); }); + connect(mAvailableStores, &QComboBox::currentTextChanged, + [](const QString &text) { + git::Config config = git::Config::global(); + config.setValue("credential.helper", text); + + delete CredentialHelper::instance(); + }); + connect(mSingleInstance, &QCheckBox::toggled, [](bool checked) { Settings::instance()->setValue(Setting::Id::AllowSingleInstanceOnly, checked); @@ -196,6 +232,7 @@ public: mEmail->setText(config.value("user.email")); Settings *settings = Settings::instance(); + mFetch->setChecked( settings->value(Setting::Id::FetchAutomatically).toBool()); mFetchMinutes->setValue( @@ -211,8 +248,25 @@ public: mNoTranslation->setChecked( settings->value(Setting::Id::DontTranslate).toBool()); - mStoreCredentials->setChecked( - settings->value(Setting::Id::StoreCredentials).toBool()); + + const auto &l = settings->value(Setting::Id::Language).toString(); + for (int i = 0; i < mLanguages->count(); i++) { + if (mLanguages->itemData(i).toString() == l) { + mLanguages->setCurrentIndex(i); + break; + } + } + + auto currentHelper = config.value("credential.helper"); + auto checked = CredentialHelper::isHelperValid(currentHelper); + mStoreCredentials->setChecked(checked); + + auto availableHelpers = CredentialHelper::getAvailableHelperNames(); + foreach (auto helper, availableHelpers) { + mAvailableStores->addItem(helper); + } + mAvailableStores->setEditable(true); + mAvailableStores->setCurrentText(currentHelper); mSingleInstance->setChecked( settings->value(Setting::Id::AllowSingleInstanceOnly).toBool()); @@ -228,7 +282,9 @@ private: QCheckBox *mPullUpdate; QCheckBox *mAutoPrune; QCheckBox *mNoTranslation; + QComboBox *mLanguages; QCheckBox *mStoreCredentials; + QComboBox *mAvailableStores; QCheckBox *mSingleInstance; }; diff --git a/src/dialogs/StartDialog.cpp b/src/dialogs/StartDialog.cpp index 0504259f..88931b6a 100644 --- a/src/dialogs/StartDialog.cpp +++ b/src/dialogs/StartDialog.cpp @@ -117,10 +117,10 @@ public: RecentRepository *repo = repos->repository(index.row()); switch (role) { case Qt::DisplayRole: - return mShowFullPath ? repo->path() : repo->name(); + return mShowFullPath ? repo->gitpath() : repo->name(); case Qt::UserRole: - return repo->path(); + return repo->gitpath(); } return QVariant(); @@ -698,7 +698,7 @@ void StartDialog::updateButtons() { open->setEnabled(false); } else { Account *account = parent.data(AccountRole).value(); - if (Repository *repo = index.data(RepositoryRole).value()) { + if (nullptr != index.data(RepositoryRole).value()) { if (account->repositoryPath(index.row()).isEmpty()) clone = true; } else { diff --git a/src/dialogs/ThemeDialog.cpp b/src/dialogs/ThemeDialog.cpp index c5ca00cb..58fcb45b 100644 --- a/src/dialogs/ThemeDialog.cpp +++ b/src/dialogs/ThemeDialog.cpp @@ -62,7 +62,7 @@ public: case Theme::Dark: Settings::instance()->setValue(Setting::Id::ColorTheme, "Dark"); break; - default: + case Theme::Default: Settings::instance()->setValue(Setting::Id::ColorTheme, "Default"); break; } diff --git a/src/editor/LexLPeg.cpp b/src/editor/LexLPeg.cpp index 662dceac..af3c9991 100644 --- a/src/editor/LexLPeg.cpp +++ b/src/editor/LexLPeg.cpp @@ -413,7 +413,7 @@ public: virtual ~LexerLPeg() {} /** Destroys the lexer object. */ - void SCI_METHOD Release() { + void SCI_METHOD Release() override { lua_getfield(L, LUA_REGISTRYINDEX, "sci_lexers"); lua_pushlightuserdata(L, reinterpret_cast(this)); lua_pushnil(L), lua_settable(L, -3), lua_pop(L, 1); // sci_lexers @@ -429,7 +429,7 @@ public: * @param buffer The document interface. */ void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, - int initStyle, IDocument *buffer) { + int initStyle, IDocument *buffer) override { lua_pushlightuserdata(L, reinterpret_cast(&props)); lua_setfield(L, LUA_REGISTRYINDEX, "sci_props"); lua_pushlightuserdata(L, reinterpret_cast(buffer)); @@ -515,7 +515,7 @@ public: * @param buffer The document interface. */ void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, - int initStyle, IDocument *buffer) { + int initStyle, IDocument *buffer) override { lua_pushlightuserdata(L, reinterpret_cast(&props)); lua_setfield(L, LUA_REGISTRYINDEX, "sci_props"); lua_pushlightuserdata(L, reinterpret_cast(buffer)); @@ -552,7 +552,8 @@ public: * @param key The string keyword. * @param val The string value. */ - Sci_Position SCI_METHOD PropertySet(const char *key, const char *value) { + Sci_Position SCI_METHOD PropertySet(const char *key, + const char *value) override { const char *val = *value ? value : " "; props.Set(key, val, strlen(key), strlen(val)); // ensure property is cleared return -1; // no need to re-lex @@ -566,7 +567,7 @@ public: * @param arg The argument. * @return void *data */ - void *SCI_METHOD PrivateCall(int code, void *arg) { + void *SCI_METHOD PrivateCall(int code, void *arg) override { switch (code) { case SCI_GETDIRECTFUNCTION: fn = reinterpret_cast(arg); @@ -603,12 +604,12 @@ public: } } - int SCI_METHOD Version() const { return 0; } - const char *SCI_METHOD PropertyNames() { return ""; } - int SCI_METHOD PropertyType(const char *) { return 0; } - const char *SCI_METHOD DescribeProperty(const char *) { return ""; } - const char *SCI_METHOD DescribeWordListSets() { return ""; } - Sci_Position SCI_METHOD WordListSet(int, const char *) { return -1; } + int SCI_METHOD Version() const override { return 0; } + const char *SCI_METHOD PropertyNames() override { return ""; } + int SCI_METHOD PropertyType(const char *) override { return 0; } + const char *SCI_METHOD DescribeProperty(const char *) override { return ""; } + const char *SCI_METHOD DescribeWordListSets() override { return ""; } + Sci_Position SCI_METHOD WordListSet(int, const char *) override { return -1; } int SCI_METHOD LineEndTypesSupported() noexcept override { return SC_LINE_END_TYPE_UNICODE; @@ -636,7 +637,7 @@ public: int SCI_METHOD GetIdentifier() override { return 0; } - const char *SCI_METHOD PropertyGet(const char *key) { return ""; } + const char *SCI_METHOD PropertyGet(const char *key) override { return ""; } /** Constructs a new instance of the lexer. */ static ILexer5 *LexerFactoryLPeg() { return new LexerLPeg(); } diff --git a/src/editor/PlatQt.cpp b/src/editor/PlatQt.cpp index 5d866e2d..e054f5ce 100644 --- a/src/editor/PlatQt.cpp +++ b/src/editor/PlatQt.cpp @@ -128,7 +128,7 @@ void SurfaceImpl::Polygon(Point *pts, size_t npts, ColourDesired fore, PenColour(fore); QVarLengthArray qpts(npts); - for (int i = 0; i < npts; i++) + for (size_t i = 0; i < npts; i++) qpts[i] = QPoint(pts[i].x, pts[i].y); QPainter *painter = GetPainter(); @@ -306,7 +306,7 @@ void SurfaceImpl::MeasureWidths(Font &font, std::string_view s, QTextLine tl = tlay.createLine(); tlay.endLayout(); - int i = 0; + size_t i = 0; int ui = 0; int fit = su.size(); const unsigned char *us = reinterpret_cast(s.data()); @@ -468,9 +468,6 @@ void Window::SetCursor(Cursor curs) { case cursorText: shape = Qt::IBeamCursor; break; - case cursorArrow: - shape = Qt::ArrowCursor; - break; case cursorUp: shape = Qt::UpArrowCursor; break; diff --git a/src/editor/ScintillaQt.cpp b/src/editor/ScintillaQt.cpp index 82f580f7..5df0cc9f 100644 --- a/src/editor/ScintillaQt.cpp +++ b/src/editor/ScintillaQt.cpp @@ -185,7 +185,7 @@ void ScintillaQt::paintEvent(QPaintEvent *event) { } void ScintillaQt::wheelEvent(QWheelEvent *event) { - if (event->orientation() == Qt::Horizontal) { + if (event->angleDelta().x() != 0) { if (horizontalScrollBarPolicy() == Qt::ScrollBarAlwaysOff) event->ignore(); else @@ -194,7 +194,7 @@ void ScintillaQt::wheelEvent(QWheelEvent *event) { if (QApplication::keyboardModifiers() & Qt::ControlModifier) { // Zoom! We play with the font sizes in the styles. // Number of steps/line is ignored, we just care if sizing up or down - if (event->delta() > 0) { + if (event->angleDelta().y() > 0) { KeyCommand(SCI_ZOOMIN); } else { KeyCommand(SCI_ZOOMOUT); @@ -327,8 +327,7 @@ void ScintillaQt::keyPressEvent(QKeyEvent *event) { QString text = event->text(); if (input && !text.isEmpty() && text[0].isPrint()) { - QByteArray utext = text.toUtf8(); - AddCharUTF(utext.data(), utext.size()); + InsertCharacter(text.toStdString(), CharacterSource::directInput); } else { event->ignore(); } @@ -355,7 +354,7 @@ static int modifierTranslated(int sciModifier) { void ScintillaQt::mousePressEvent(QMouseEvent *event) { Point pos = PointFromQPoint(event->pos()); - if (event->button() == Qt::MidButton && + if (event->button() == Qt::MiddleButton && QApplication::clipboard()->supportsSelection()) { SelectionPosition selPos = SPositionFromLocation(pos, false, false, UserVirtualSpace()); @@ -440,6 +439,7 @@ void ScintillaQt::dragEnterEvent(QDragEnterEvent *event) { } void ScintillaQt::dragLeaveEvent(QDragLeaveEvent *event) { + Q_UNUSED(event); SetDragPosition(SelectionPosition(Sci::invalidPosition)); } @@ -520,9 +520,8 @@ void ScintillaQt::inputMethodEvent(QInputMethodEvent *event) { const unsigned int ucWidth = commitStr.at(i).isHighSurrogate() ? 2 : 1; const QString oneCharUTF16 = commitStr.mid(i, ucWidth); const QByteArray oneChar = oneCharUTF16.toUtf8(); - const int oneCharLen = oneChar.length(); - AddCharUTF(oneChar.data(), oneCharLen); + InsertCharacter(oneChar.toStdString(), CharacterSource::directInput); i += ucWidth; } @@ -568,7 +567,7 @@ void ScintillaQt::inputMethodEvent(QInputMethodEvent *event) { indicator = SC_INDICATOR_CONVERTED; break; - default: + case QTextCharFormat::DashDotDotLine: indicator = SC_INDICATOR_UNKNOWN; } @@ -605,7 +604,7 @@ void ScintillaQt::inputMethodEvent(QInputMethodEvent *event) { numBytes += oneCharLen; imeCharPos[i + 1] = numBytes; - AddCharUTF(oneChar.data(), oneCharLen); + InsertCharacter(oneChar.toStdString(), CharacterSource::directInput); #ifdef Q_OS_LINUX // Segment marked with imeCaretPos is for target input. @@ -642,7 +641,7 @@ QVariant ScintillaQt::inputMethodQuery(Qt::InputMethodQuery query) const { int line = send(SCI_LINEFROMPOSITION, pos); switch (query) { - case Qt::ImMicroFocus: { + case Qt::ImCursorRectangle: { int startPos = (preeditPos >= 0) ? preeditPos : pos; Point pt = const_cast(this)->LocationFromPosition(startPos); @@ -691,9 +690,23 @@ QVariant ScintillaQt::inputMethodQuery(Qt::InputMethodQuery query) const { return buffer.constData(); } - default: - return QVariant(); + case Qt::ImEnabled: // fall through + case Qt::ImAnchorPosition: // fall through + case Qt::ImHints: // fall through + case Qt::ImMaximumTextLength: // fall through + case Qt::ImPreferredLanguage: // fall through + case Qt::ImAbsolutePosition: // fall through + case Qt::ImTextBeforeCursor: // fall through + case Qt::ImTextAfterCursor: // fall through + case Qt::ImEnterKeyType: // fall through + case Qt::ImAnchorRectangle: // fall through + case Qt::ImInputItemClipRectangle: // fall through + case Qt::ImPlatformData: // fall through + case Qt::ImQueryInput: // fall through + case Qt::ImQueryAll: // fall through + break; } + return QVariant(); } void ScintillaQt::PasteFromMode(QClipboard::Mode clipboardMode) { diff --git a/src/editor/TextEditor.cpp b/src/editor/TextEditor.cpp index c53c0bb5..1a4b8773 100644 --- a/src/editor/TextEditor.cpp +++ b/src/editor/TextEditor.cpp @@ -43,7 +43,9 @@ QPixmap stagedUnstagedIcon(const bool &checked, const QColor &background, QRect(QPoint(0, 0), QSize(fontHeight - 2, fontHeight - 2))); } +#if defined(FLATPAK) const float textHeightFactorCheckBoxSize = 2.0; +#endif } // namespace diff --git a/src/editor/TextEditor.h b/src/editor/TextEditor.h index 6d45dfb5..0ae8b7b4 100644 --- a/src/editor/TextEditor.h +++ b/src/editor/TextEditor.h @@ -105,7 +105,7 @@ public: QList diagnostics(int line); void addDiagnostic(int line, const Diagnostic &diag); - sptr_t WndProc(unsigned int message, uptr_t wParam, sptr_t lParam); + sptr_t WndProc(unsigned int message, uptr_t wParam, sptr_t lParam) override; // Make wheel event public. // FIXME: This should be an event filter? @@ -154,7 +154,7 @@ private: int diagnosticMarker(int line); void loadMarkerIcon(Marker marker, const QIcon &icon); void loadMarkerPixmap(Marker marker, const QPixmap &pixmap); - void AddToPopUp(const char *label, int cmd = 0, bool enabled = true); + void AddToPopUp(const char *label, int cmd = 0, bool enabled = true) override; void ContextMenu(Scintilla::Point pt); QString mPath; diff --git a/src/git/Branch.cpp b/src/git/Branch.cpp index 024c12ae..68e5cd0f 100644 --- a/src/git/Branch.cpp +++ b/src/git/Branch.cpp @@ -129,11 +129,11 @@ void Branch::remove(bool force) { } bool Branch::isRebase() const { - return repo().config().value(kRebaseFmt.arg(name())); + return repo().gitConfig().value(kRebaseFmt.arg(name())); } void Branch::setRebase(bool checked) { - repo().config().setValue(kRebaseFmt.arg(name()), checked); + repo().gitConfig().setValue(kRebaseFmt.arg(name()), checked); } AnnotatedCommit Branch::annotatedCommitFromFetchHead() const { diff --git a/src/git/Commit.cpp b/src/git/Commit.cpp index 771dbccb..334120c5 100644 --- a/src/git/Commit.cpp +++ b/src/git/Commit.cpp @@ -251,7 +251,8 @@ bool Commit::amend(const Signature &author, const Signature &committer, return !error; } -bool Commit::reset(git_reset_t type, const QStringList &paths) const { +bool Commit::reset(git_reset_t type, const QStringList &paths, + bool triggerReferenceUpdated) const { QVector rawPaths; QVector storage; git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT; @@ -271,7 +272,9 @@ bool Commit::reset(git_reset_t type, const QStringList &paths) const { Repository repo = this->repo(); int state = repo.state(); int error = git_reset(repo, d.data(), type, &opts); - emit repo.notifier()->referenceUpdated(repo.head()); + if (triggerReferenceUpdated) + emit repo.notifier()->referenceUpdated(repo.head(), + type == git_reset_t::GIT_RESET_HARD); if (repo.state() != state) { Patch::clearConflictResolutions(repo); emit repo.notifier()->stateChanged(); diff --git a/src/git/Commit.h b/src/git/Commit.h index 1a30d7b9..51d02be5 100644 --- a/src/git/Commit.h +++ b/src/git/Commit.h @@ -70,7 +70,8 @@ public: // Reset HEAD to this commit. bool reset(git_reset_t type = GIT_RESET_MIXED, - const QStringList &paths = QStringList()) const; + const QStringList &paths = QStringList(), + bool triggerReferenceUpdated = true) const; // favorite commits bool isStarred() const; diff --git a/src/git/Diff.cpp b/src/git/Diff.cpp index 5a6b167a..a85ae545 100644 --- a/src/git/Diff.cpp +++ b/src/git/Diff.cpp @@ -9,9 +9,9 @@ #include "Diff.h" #include "Patch.h" +#include "Debug.h" #include "git2/patch.h" #include -#include bool containsPath(QString &str, QString &occurence, Qt::CaseSensitivity cs) { if (str.contains(occurence, cs)) { @@ -108,13 +108,13 @@ QByteArray Diff::print() { QByteArray diff; for (auto file : data.files) { for (auto hunk : file.hunks) { - diff.append(hunk.header); + diff.append(hunk.header.toUtf8()); for (auto line : hunk.lines) - diff.append(line); + diff.append(line.toUtf8()); } } - qDebug() << QString(diff); + Debug(QString(diff)); return diff; } @@ -173,6 +173,9 @@ void Diff::findSimilar(bool untracked) { if (untracked) opts.flags = GIT_DIFF_FIND_FOR_UNTRACKED; + if (!isValid()) + return; + git_diff_find_similar(d->diff, &opts); d->resetMap(); } @@ -195,6 +198,8 @@ void Diff::sort(SortRole role, Qt::SortOrder order) { : (rhsStatus < lhsStatus); } } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(role))); }); } diff --git a/src/git/Index.cpp b/src/git/Index.cpp index 0e07af4c..b80b8187 100644 --- a/src/git/Index.cpp +++ b/src/git/Index.cpp @@ -363,7 +363,10 @@ Id Index::headId(const QString &path, uint32_t *mode) const { return Id(); git_tree_entry *entry = nullptr; - if (git_tree_entry_bypath(&entry, commit.tree(), path.toUtf8())) + const auto tree = commit.tree(); + if (!tree.isValid()) + return Id(); // broken repository? + if (git_tree_entry_bypath(&entry, tree, path.toUtf8())) return Id(); if (mode) diff --git a/src/git/Patch.cpp b/src/git/Patch.cpp index 0543c5ae..913104e4 100644 --- a/src/git/Patch.cpp +++ b/src/git/Patch.cpp @@ -195,7 +195,7 @@ QByteArray Patch::header(int hidx) const { const git_diff_hunk *hunk = nullptr; int result = git_patch_get_hunk(&hunk, nullptr, d.data(), hidx); - return !result ? hunk->header : QByteArray(); + return (GIT_OK == result) ? hunk->header : QByteArray(); } const git_diff_hunk *Patch::header_struct(int hidx) const { @@ -204,7 +204,7 @@ const git_diff_hunk *Patch::header_struct(int hidx) const { const git_diff_hunk *hunk = nullptr; int result = git_patch_get_hunk(&hunk, nullptr, d.data(), hidx); - return hunk; + return (GIT_OK == result) ? hunk : nullptr; } int Patch::lineCount(int hidx) const { @@ -235,7 +235,7 @@ char Patch::lineOrigin(int hidx, int ln) const { const git_diff_line *line = nullptr; int result = git_patch_get_line_in_hunk(&line, d.data(), hidx, ln); - return !result ? line->origin : GIT_DIFF_LINE_CONTEXT; + return (GIT_OK == result) ? line->origin : GIT_DIFF_LINE_CONTEXT; } int Patch::lineNumber(int hidx, int ln, Diff::File file) const { @@ -256,7 +256,7 @@ git_off_t Patch::contentOffset(int hidx) const { const git_diff_line *line = nullptr; int result = git_patch_get_line_in_hunk(&line, d.data(), hidx, 0); // TODO: line index 0? - return result == 0 ? line->content_offset : 0; + return (GIT_OK == result) ? line->content_offset : 0; } QByteArray Patch::lineContent(int hidx, int ln) const { @@ -265,7 +265,8 @@ QByteArray Patch::lineContent(int hidx, int ln) const { const git_diff_line *line = nullptr; int result = git_patch_get_line_in_hunk(&line, d.data(), hidx, ln); - return !result ? QByteArray(line->content, line->content_len) : QByteArray(); + return (GIT_OK == result) ? QByteArray(line->content, line->content_len) + : QByteArray(); } Patch::ConflictResolution Patch::conflictResolution(int hidx) { @@ -435,6 +436,7 @@ void Patch::apply(QList> &image, int hidx, int start_line, break; default: + // no-op break; } } diff --git a/src/git/Rebase.cpp b/src/git/Rebase.cpp index c323ae89..a19574f6 100644 --- a/src/git/Rebase.cpp +++ b/src/git/Rebase.cpp @@ -36,8 +36,8 @@ const git_rebase_operation *Rebase::operation(size_t index) { } bool Rebase::hasNext() const { - int index = currentIndex(); - int count = git_rebase_operation_entrycount(d.data()); + size_t index = currentIndex(); + size_t count = git_rebase_operation_entrycount(d.data()); return (count > 0 && (index == GIT_REBASE_NO_OPERATION || index < count - 1)); } diff --git a/src/git/Remote.cpp b/src/git/Remote.cpp index 4095556b..dfd1013b 100644 --- a/src/git/Remote.cpp +++ b/src/git/Remote.cpp @@ -11,6 +11,7 @@ #include "Branch.h" #include "Config.h" #include "Id.h" +#include "qtsupport.h" #include "TagRef.h" #include "git2/buffer.h" #include "git2/clone.h" @@ -423,7 +424,7 @@ int Remote::Callbacks::certificate(git_cert *cert, int valid, const char *host, return 0; Repository repo = reinterpret_cast(payload)->repo(); - Config config = repo.isValid() ? repo.config() : Config::global(); + Config config = repo.isValid() ? repo.gitConfig() : Config::global(); if (!config.value("http.sslVerify", true)) return 0; @@ -444,9 +445,10 @@ int Remote::Callbacks::transfer(const git_indexer_progress *stats, case Resolve: return cbs->resolve(stats->total_deltas, stats->indexed_deltas) ? 0 : -1; - default: + case Update: return 0; } + return 0; } int Remote::Callbacks::update(const char *name, const git_oid *a, @@ -596,7 +598,7 @@ Result Remote::push(Callbacks *callbacks, const Reference &src, refspec += ":" + dst; } else { QString key = QString("branch.%1.merge").arg(src.name()); - QString upstream = repo.config().value(key); + QString upstream = repo.gitConfig().value(key); if (!upstream.isEmpty()) refspec += ":" + upstream; } @@ -674,7 +676,7 @@ void Remote::log(const QString &text) { return; QString time = QTime::currentTime().toString(Qt::ISODateWithMs); - QTextStream(&file) << time << " - " << text << endl; + QTextStream(&file) << time << " - " << text << Qt::endl; } } // namespace git diff --git a/src/git/Repository.cpp b/src/git/Repository.cpp index cd0d9692..3004501d 100644 --- a/src/git/Repository.cpp +++ b/src/git/Repository.cpp @@ -18,6 +18,7 @@ #include "FilterList.h" #include "Index.h" #include "Patch.h" +#include "qtsupport.h" #include "Rebase.h" #include "Reference.h" #include "Remote.h" @@ -151,7 +152,14 @@ Repository::Repository(git_repository *repo) : d(registerRepository(repo)) {} Repository::operator git_repository *() const { return d->repo; } -QDir Repository::dir() const { return QDir(git_repository_path(d->repo)); } +QDir Repository::dir(bool includeGitFolder) const { + QDir dir(git_repository_path(d->repo)); + if (!includeGitFolder) { + assert(dir.dirName() == ".git"); + assert(dir.cdUp()); + } + return dir; +} QDir Repository::workdir() const { return isBare() ? dir() : QDir(git_repository_workdir(d->repo)); @@ -173,12 +181,16 @@ QString Repository::message() const { return QString::fromUtf8(buf.ptr, buf.size); } -Config Repository::config() const { +// Config file used for git specific configs +// config file in /.git/config +Config Repository::gitConfig() const { git_config *config = nullptr; git_repository_config(&config, d->repo); return Config(config); } +// Config file used for app specific configs +// config file in /.git/gittyup/config Config Repository::appConfig() const { Config config = Config::appGlobal(); QString path = appDir().filePath(kConfigFile); @@ -305,8 +317,11 @@ Diff Repository::status(const Index &index, Diff::Callbacks *callbacks, Diff Repository::diffTreeToIndex(const Tree &tree, const Index &index, bool ignoreWhitespace) const { git_diff_options opts = GIT_DIFF_OPTIONS_INIT; - opts.flags |= GIT_DIFF_INCLUDE_UNTRACKED | GIT_DIFF_RECURSE_UNTRACKED_DIRS | - GIT_DIFF_INCLUDE_TYPECHANGE; + opts.flags |= GIT_DIFF_INCLUDE_TYPECHANGE; + + if (!appConfig().value("untracked.hide", false)) + opts.flags |= GIT_DIFF_INCLUDE_UNTRACKED | GIT_DIFF_RECURSE_UNTRACKED_DIRS; + if (ignoreWhitespace) opts.flags |= GIT_DIFF_IGNORE_WHITESPACE; @@ -319,8 +334,11 @@ Diff Repository::diffIndexToWorkdir(const Index &index, Diff::Callbacks *callbacks, bool ignoreWhitespace) const { git_diff_options opts = GIT_DIFF_OPTIONS_INIT; - opts.flags |= (GIT_DIFF_INCLUDE_UNTRACKED | GIT_DIFF_RECURSE_UNTRACKED_DIRS | - GIT_DIFF_DISABLE_MMAP | GIT_DIFF_INCLUDE_TYPECHANGE); + opts.flags |= (GIT_DIFF_DISABLE_MMAP | GIT_DIFF_INCLUDE_TYPECHANGE); + + if (!appConfig().value("untracked.hide", false)) + opts.flags |= GIT_DIFF_INCLUDE_UNTRACKED | GIT_DIFF_RECURSE_UNTRACKED_DIRS; + if (ignoreWhitespace) opts.flags |= GIT_DIFF_IGNORE_WHITESPACE; @@ -477,7 +495,7 @@ QStringList Repository::existingTags() const { QStringList list; - for (int i = 0; i < array.count; i++) { + for (size_t i = 0; i < array.count; i++) { list.append(array.strings[i]); } @@ -618,6 +636,7 @@ Commit Repository::commit(const Signature &author, const Signature &committer, break; default: + // no-op break; } @@ -734,7 +753,7 @@ QList Repository::remotes() const { return QList(); QList remotes; - for (int i = 0; i < names.count; ++i) { + for (size_t i = 0; i < names.count; ++i) { if (Remote remote = lookupRemote(names.strings[i])) remotes.append(remote); } @@ -889,8 +908,10 @@ void Repository::rebase(const AnnotatedCommit &mergeHead, git_rebase_init(&r, d->repo, nullptr, mergeHead, nullptr, &opts); auto rebase = git::Rebase(d->repo, r, overrideUser, overrideEmail); - if (!rebase.isValid()) + if (!rebase.isValid()) { emit d->notifier->rebaseInitError(); + return; + } // start rebasing rebaseContinue(QStringLiteral("")); @@ -920,7 +941,6 @@ void Repository::rebaseContinue(const QString &commitMessage) { } } // Loop over rebase operations. - int count = r.count(); while (r.hasNext()) { git::Commit before = r.next(); if (!before.isValid()) { @@ -1010,7 +1030,7 @@ void Repository::cleanupState() { } QTextCodec *Repository::codec() const { - QString encoding = config().value("gui.encoding"); + QString encoding = gitConfig().value("gui.encoding"); QTextCodec *codec = QTextCodec::codecForName(encoding.toUtf8()); return codec ? codec : QTextCodec::codecForLocale(); } @@ -1040,7 +1060,7 @@ QStringList Repository::lfsEnvironment() { Repository::LfsTracking Repository::lfsTracked() { QString output = lfsExecute({"track"}); - QStringList lines = output.split('\n', QString::SkipEmptyParts); + QStringList lines = output.split('\n', Qt::SkipEmptyParts); if (!lines.isEmpty()) lines.removeFirst(); diff --git a/src/git/Repository.h b/src/git/Repository.h index b8baa1bb..0abb2779 100644 --- a/src/git/Repository.h +++ b/src/git/Repository.h @@ -71,7 +71,7 @@ public: RepositoryNotifier *notifier() const { return d->notifier; } - QDir dir() const; + QDir dir(bool includeGitFolder = true) const; QDir workdir() const; QDir appDir() const; @@ -81,7 +81,7 @@ public: QString message() const; // config - Config config() const; + Config gitConfig() const; Config appConfig() const; // bare @@ -316,7 +316,7 @@ signals: void referenceAdded(const Reference &ref); void referenceAboutToBeRemoved(const Reference &ref); void referenceRemoved(const QString &name); - void referenceUpdated(const Reference &ref); + void referenceUpdated(const Reference &ref, bool restoreSelection = false); void remoteAboutToBeAdded(const QString &name); void remoteAdded(const Remote &remote); diff --git a/src/git/Submodule.cpp b/src/git/Submodule.cpp index 65068591..f31e642c 100644 --- a/src/git/Submodule.cpp +++ b/src/git/Submodule.cpp @@ -26,7 +26,7 @@ Submodule::operator git_submodule *() const { return d.data(); } bool Submodule::isInitialized() const { Repository repo(git_submodule_owner(d.data())); QString key = QString("submodule.%1.url").arg(name()); - return !repo.config().value(key).isEmpty(); + return !repo.gitConfig().value(key).isEmpty(); } void Submodule::initialize() const { git_submodule_init(d.data(), false); } @@ -34,7 +34,7 @@ void Submodule::initialize() const { git_submodule_init(d.data(), false); } void Submodule::deinitialize() const { // Remove git config entry. Repository repo(git_submodule_owner(d.data())); - Config config = repo.config(); + Config config = repo.gitConfig(); QString regex = QString("submodule\\.%1\\..*").arg(name()); Config::Iterator it = config.glob(regex); while (Config::Entry entry = it.next()) diff --git a/src/host/Account.cpp b/src/host/Account.cpp index 3c7d5310..0e2af703 100644 --- a/src/host/Account.cpp +++ b/src/host/Account.cpp @@ -30,8 +30,8 @@ const QString kThemeIconFmt = ":/%1_%2.png"; } // namespace Account::Account(const QString &username) - : mMgr(new QNetworkAccessManager()), mUsername(username), - mError(new AccountError(this)), mProgress(new AccountProgress(this)) { + : mUsername(username), mError(new AccountError(this)), + mProgress(new AccountProgress(this)), mMgr(new QNetworkAccessManager()) { QObject::connect( mMgr, &QNetworkAccessManager::sslErrors, [this](QNetworkReply *reply, const QList &errors) { @@ -204,6 +204,8 @@ QString Account::helpText(Kind kind) { case Beanstalk: return QString(); } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(kind))); } QString Account::defaultUrl(Kind kind) { @@ -219,6 +221,8 @@ QString Account::defaultUrl(Kind kind) { case GitLab: return GitLab::defaultUrl(); } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(kind))); } Account::Kind Account::kindFromString(const QString &kind, bool *ok) { @@ -258,6 +262,8 @@ QString Account::kindToString(Kind kind) { case GitLab: return "gitlab"; } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(kind))); } void Account::startProgress() { diff --git a/src/index/CMakeLists.txt b/src/index/CMakeLists.txt index 207a9e18..26b91175 100644 --- a/src/index/CMakeLists.txt +++ b/src/index/CMakeLists.txt @@ -35,16 +35,8 @@ else() set_target_properties(indexer PROPERTIES INSTALL_RPATH "$ORIGIN") endif() - if(FLATPAK) - # Install application. - install( - TARGETS indexer - DESTINATION ./bin # otherwise the executable will not be found by flatpak - COMPONENT ${GITTYUP_NAME}) - else() - install( - TARGETS indexer - DESTINATION . - COMPONENT ${GITTYUP_NAME}) - endif() + install( + TARGETS indexer + DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT ${GITTYUP_NAME}) endif() diff --git a/src/index/GenericLexer.cpp b/src/index/GenericLexer.cpp index 6851e910..d0ea3dc2 100644 --- a/src/index/GenericLexer.cpp +++ b/src/index/GenericLexer.cpp @@ -93,7 +93,19 @@ Lexer::Lexeme GenericLexer::next() { } break; - default: + case Comment: // fall through + case Keyword: // fall through + case Operator: // fall through + case Error: // fall through + case Preprocessor: // fall through + case Constant: // fall through + case Variable: // fall through + case Function: // fall through + case Class: // fall through + case Type: // fall through + case Label: // fall through + case Regex: // fall through + case Embedded: // fall through Q_ASSERT(false); } } diff --git a/src/index/Index.cpp b/src/index/Index.cpp index 362162d6..d48ad5d8 100644 --- a/src/index/Index.cpp +++ b/src/index/Index.cpp @@ -182,7 +182,7 @@ bool Index::write(PostingMap map) { quint32 postCount = readVInt(postIn); bool end = (newIt == newEnd || newIt.key() != it->key); postings.reserve(postCount + (!end ? newIt.value().size() : 0)); - for (int i = 0; i < postCount; ++i) { + for (quint32 i = 0; i < postCount; ++i) { quint32 proxPos; Posting posting; posting.id = readVInt(postIn); @@ -243,7 +243,7 @@ QList Index::commits(const QString &filter) const { // Sort by commit date. QList commits = query->commits(this); std::sort(commits.begin(), commits.end(), - [this](const git::Commit &lhs, const git::Commit &rhs) { + [](const git::Commit &lhs, const git::Commit &rhs) { return (lhs.committer().date() > rhs.committer().date()); }); @@ -288,7 +288,7 @@ QList Index::postings(const Term &term, bool positional) const { // Read list. QList postings; quint32 postCount = readVInt(in); - for (int i = 0; i < postCount; ++i) { + for (quint32 i = 0; i < postCount; ++i) { quint32 proxPos; Posting posting; posting.id = readVInt(in); @@ -331,7 +331,7 @@ QList Index::postings(const Predicate &pred, // Read list. quint32 postCount = readVInt(in); - for (int i = 0; i < postCount; ++i) { + for (quint32 i = 0; i < postCount; ++i) { quint32 proxPos; Posting posting; posting.id = readVInt(in); @@ -373,7 +373,7 @@ QMap Index::fieldMap(const QString &prefix) const { // Read list. QString name = it->key; quint32 postCount = readVInt(in); - for (int i = 0; i < postCount; ++i) { + for (quint32 i = 0; i < postCount; ++i) { quint8 field; quint32 proxPos; readVInt(in); // Discard id. @@ -443,6 +443,8 @@ QByteArray Index::fieldName(Index::Field field) { case Index::Pathspec: return "pathspec"; } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(field))); } QDir Index::indexDir(const git::Repository &repo) { @@ -506,7 +508,7 @@ void Index::readPositions(QDataStream &in, QVector &positions) { quint32 prev = 0; quint32 count = readVInt(in); positions.reserve(count); - for (int i = 0; i < count; ++i) { + for (quint32 i = 0; i < count; ++i) { // Convert to absolute from delta. quint32 position = prev + readVInt(in); positions.append(position); diff --git a/src/index/Query.cpp b/src/index/Query.cpp index 0fbee542..11d14308 100644 --- a/src/index/Query.cpp +++ b/src/index/Query.cpp @@ -182,16 +182,24 @@ public: QList rhs = mRhs->commits(index); QList commits = mLhs->commits(index); if (mKind == And) { - // Remove commits that don't match the right hand side. +// Remove commits that don't match the right hand side. +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + QSet set(rhs.begin(), rhs.end()); +#else QSet set = QSet::fromList(rhs); +#endif QMutableListIterator it(commits); while (it.hasNext()) { if (!set.contains(it.next())) it.remove(); } } else { - // Add commits that aren't already in the result set. +// Add commits that aren't already in the result set. +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + QSet set(commits.begin(), commits.end()); +#else QSet set = QSet::fromList(commits); +#endif foreach (const git::Commit &commit, rhs) { if (!set.contains(commit)) commits.append(commit); diff --git a/src/index/indexer.cpp b/src/index/indexer.cpp index 2910f0df..b6473a17 100644 --- a/src/index/indexer.cpp +++ b/src/index/indexer.cpp @@ -10,6 +10,7 @@ #include "Index.h" #include "GenericLexer.h" #include "LPegLexer.h" +#include "qtsupport.h" #include "conf/Settings.h" #include "git/Config.h" #include "git/Index.h" @@ -105,7 +106,7 @@ void log(QFile *out, const QString &text) { return; QString time = QTime::currentTime().toString(Qt::ISODateWithMs); - QTextStream(out) << time << " - " << text << endl; + QTextStream(out) << time << " - " << text << Qt::endl; } void log(QFile *out, const QString &fmt, const git::Id &id) { @@ -148,7 +149,22 @@ void index(const Lexer::Lexeme &lexeme, Intermediate::FieldMap &fields, case Lexer::Comment: field |= Index::Comment; break; - default: + case Lexer::Nothing: // fall through + case Lexer::Whitespace: // fall through + case Lexer::Number: // fall through + case Lexer::Keyword: // fall through + case Lexer::Identifier: // fall through + case Lexer::Operator: // fall through + case Lexer::Error: // fall through + case Lexer::Preprocessor: // fall through + case Lexer::Constant: // fall through + case Lexer::Variable: // fall through + case Lexer::Function: // fall through + case Lexer::Class: // fall through + case Lexer::Type: // fall through + case Lexer::Label: // fall through + case Lexer::Regex: // fall through + case Lexer::Embedded: // fall through break; } @@ -172,7 +188,13 @@ void index(const Lexer::Lexeme &lexeme, Intermediate::FieldMap &fields, break; // Ignore everything else. - default: + case Lexer::Nothing: // fall through + case Lexer::Whitespace: // fall through + case Lexer::Number: // fall through + case Lexer::Operator: // fall through + case Lexer::Error: // fall through + case Lexer::Regex: // fall through + case Lexer::Embedded: // fall through break; } } @@ -331,7 +353,7 @@ private: QFile *mOut; int mContextLines = 3; - int mTermLimit = 1000000; + quint32 mTermLimit = 1000000; }; class Reduce { @@ -405,7 +427,12 @@ public: int count = 0; QList commits; git::Commit commit = mWalker.next(); + +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + QSet ids(mIndex.ids().begin(), mIndex.ids().end()); +#else QSet ids = QSet::fromList(mIndex.ids()); +#endif while (commit.isValid() && count < 8192) { // Don't index merge commits. if (!commit.isMerge() && !ids.contains(commit.id())) { @@ -440,7 +467,7 @@ public: // Write to disk. log(mOut, "start write"); if (mIndex.write(mWatcher.result()) && mNotify) - QTextStream(stdout) << "write" << endl; + QTextStream(stdout) << "write" << Qt::endl; log(mOut, "end write"); // Restart. @@ -450,10 +477,14 @@ public: bool nativeEventFilter(const QByteArray &type, void *message, long *result) override { + Q_UNUSED(result); #ifdef Q_OS_WIN MSG *msg = static_cast(message); if (msg->message == WM_CLOSE) cancel(); +#else + Q_UNUSED(type); + Q_UNUSED(message); #endif return false; diff --git a/src/index/lexer_test.cpp b/src/index/lexer_test.cpp index 4b5881a4..4bfaba09 100644 --- a/src/index/lexer_test.cpp +++ b/src/index/lexer_test.cpp @@ -9,6 +9,7 @@ #include "GenericLexer.h" #include "LPegLexer.h" +#include "qtsupport.h" #include "conf/Settings.h" #include #include @@ -29,7 +30,7 @@ void print(QTextStream &out, const Lexer::Lexeme &lexeme, int indent = 0) { out << lexeme.text << " - " << lexeme.token; if (lexeme.token < kStyleNames.length()) out << " (" << kStyleNames.at(lexeme.token) << ")"; - out << endl; + out << Qt::endl; } void print(QTextStream &out, Lexer *lexer, int indent = 0) { @@ -65,7 +66,13 @@ void print(QTextStream &out, Lexer *lexer, int indent = 0) { break; // Ignore everything else. - default: + case Lexer::Whitespace: // fall through + case Lexer::Nothing: // fall through + case Lexer::Number: // fall through + case Lexer::Operator: // fall through + case Lexer::Error: // fall through + case Lexer::Regex: // fall through + case Lexer::Embedded: break; } } @@ -102,7 +109,7 @@ int main(int argc, char *argv[]) { // Lex buffer. Lexer *lexer = lexers.value(name); if (lexer->lex(buffer)) { - out << name << " - " << arg << ":" << endl; + out << name << " - " << arg << ":" << Qt::endl; print(out, lexer); } } diff --git a/src/log/LogDelegate.cpp b/src/log/LogDelegate.cpp index 527917be..d461a598 100644 --- a/src/log/LogDelegate.cpp +++ b/src/log/LogDelegate.cpp @@ -79,7 +79,9 @@ void LogDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, QRect rect = decorationRect(option, index); if (static_cast(variant.type()) == QMetaType::QChar) { - Badge::paint(painter, {Badge::Label(variant.toChar())}, rect, &opt); + Badge::paint(painter, + {Badge::Label(Badge::Label::Type::Log, variant.toChar())}, + rect, &opt); } else if (variant.canConvert()) { int progress = variant.toInt(); ProgressIndicator::paint(painter, rect, "#808080", progress, opt.widget); @@ -126,7 +128,9 @@ void LogDelegate::initStyleOption(QStyleOptionViewItem *option, QStyledItemDelegate::initStyleOption(option, index); QVariant variant = index.data(Qt::DecorationRole); if (static_cast(variant.type()) == QMetaType::QChar) { - option->decorationSize = Badge::size(option->font) - ADJUSTMENT_SIZE; + option->decorationSize = + Badge::size(option->font, Badge::Label(Badge::Label::Type::Log)) - + ADJUSTMENT_SIZE; } else if (variant.canConvert()) { option->decorationSize = ProgressIndicator::size(); } diff --git a/src/log/LogModel.cpp b/src/log/LogModel.cpp index 4b0bdb8a..66e4c82f 100644 --- a/src/log/LogModel.cpp +++ b/src/log/LogModel.cpp @@ -9,6 +9,7 @@ #include "LogModel.h" #include "LogEntry.h" +#include #include namespace { @@ -74,8 +75,8 @@ QVariant LogModel::data(const QModelIndex &index, int role) const { QDateTime date = entry->timestamp(); QString timestamp = (date.date() == QDate::currentDate()) - ? date.time().toString(Qt::DefaultLocaleShortDate) - : date.toString(Qt::DefaultLocaleShortDate); + ? QLocale().toString(date.time(), QLocale::ShortFormat) + : QLocale().toString(date, QLocale::ShortFormat); text = kTimeFmt.arg(timestamp, text); } } diff --git a/src/plugins/Plugin.cpp b/src/plugins/Plugin.cpp index 53f48e34..54190c1f 100644 --- a/src/plugins/Plugin.cpp +++ b/src/plugins/Plugin.cpp @@ -8,6 +8,7 @@ // #include "Plugin.h" +#include "qtsupport.h" #include "conf/Settings.h" #include "editor/TextEditor.h" #include "git/Config.h" @@ -491,7 +492,7 @@ Plugin::Plugin(const QString &file, const git::Repository &repo, // Print error messages to the console. connect(this, &Plugin::error, [](const QString &msg) { - QTextStream(stderr) << "plugin error: " << msg << endl; + QTextStream(stderr) << "plugin error: " << msg << Qt::endl; }); // Load libraries. @@ -613,6 +614,8 @@ QVariant Plugin::optionValue(const QString &key) const { case String: return config().value(kKeyFmt.arg(mName, key), value.toString()); } + throw std::runtime_error("unreachable; value=" + + std::to_string(static_cast(optionKind(key)))); } Plugin::OptionKind Plugin::optionKind(const QString &key) const { diff --git a/src/qtsupport.h b/src/qtsupport.h new file mode 100644 index 00000000..43b56c77 --- /dev/null +++ b/src/qtsupport.h @@ -0,0 +1,17 @@ +/// Backwards compatibility for older versions of QT +/// Several symbols have been deprecated in QT5.14 and moved to new +/// namespaces. This file provides support for older versions of QT. + +#include +#include + +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +namespace Qt { +static auto endl = ::endl; +static auto KeepEmptyParts = QString::KeepEmptyParts; +static auto SkipEmptyParts = QString::SkipEmptyParts; +} // namespace Qt + +// QButtonGroup::buttonClicked is deprecated in favor of QButtonGroup::idClicked +#define idClicked buttonClicked +#endif \ No newline at end of file diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt index a9e6a499..6c2dd805 100644 --- a/src/tools/CMakeLists.txt +++ b/src/tools/CMakeLists.txt @@ -1,6 +1,6 @@ add_library(tools DiffTool.cpp EditTool.cpp ExternalTool.cpp MergeTool.cpp ShowTool.cpp) -target_link_libraries(tools conf git Qt5::Gui) +target_link_libraries(tools conf git Qt5::Gui util) set_target_properties(tools PROPERTIES AUTOMOC ON) diff --git a/src/tools/DiffTool.cpp b/src/tools/DiffTool.cpp index 60230590..67019a67 100644 --- a/src/tools/DiffTool.cpp +++ b/src/tools/DiffTool.cpp @@ -12,6 +12,7 @@ #include "git/Repository.h" #include #include +#include DiffTool::DiffTool(const QString &file, const git::Blob &localBlob, const git::Blob &remoteBlob, QObject *parent) @@ -59,8 +60,25 @@ bool DiffTool::start() { // Destroy this after process finishes. QProcess *process = new QProcess(this); + process->setProcessChannelMode( + QProcess::ProcessChannelMode::ForwardedChannels); auto signal = QOverload::of(&QProcess::finished); - QObject::connect(process, signal, this, &ExternalTool::deleteLater); + QObject::connect(process, signal, [this, process] { + qDebug() << "Merge Process Exited!"; + qDebug() << "Stdout: " << process->readAllStandardOutput(); + qDebug() << "Stderr: " << process->readAllStandardError(); + deleteLater(); + }); + +#if defined(FLATPAK) || defined(DEBUG_FLATPAK) + QStringList arguments = {"--host", "--env=LOCAL=" + local->fileName(), + "--env=REMOTE=" + remotePath, + "--env=MERGED=" + mFile, "--env=BASE=" + mFile}; + arguments.append("sh"); + arguments.append("-c"); + arguments.append(command); + process->start("flatpak-spawn", arguments); +#else QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); env.insert("LOCAL", local->fileName()); @@ -78,9 +96,12 @@ bool DiffTool::start() { emit error(BashNotFound); return false; } +#endif - if (!process->waitForStarted()) + if (!process->waitForStarted()) { + qDebug() << "DiffTool starting failed"; return false; + } // Detach from parent. setParent(nullptr); diff --git a/src/tools/MergeTool.cpp b/src/tools/MergeTool.cpp index c310c0f0..677f679b 100644 --- a/src/tools/MergeTool.cpp +++ b/src/tools/MergeTool.cpp @@ -12,12 +12,12 @@ #include "git/Config.h" #include "git/Index.h" #include "git/Repository.h" +#include "Debug.h" #include #include #include #include #include -#include MergeTool::MergeTool(const QString &file, const git::Blob &localBlob, const git::Blob &remoteBlob, const git::Blob &baseBlob, @@ -78,11 +78,15 @@ bool MergeTool::start() { // Destroy this after process finishes. QProcess *process = new QProcess(this); + process->setProcessChannelMode( + QProcess::ProcessChannelMode::ForwardedChannels); git::Repository repo = mLocalBlob.repo(); auto signal = QOverload::of(&QProcess::finished); QObject::connect(process, signal, [this, repo, backupPath, process] { - // qDebug() << "Merge Process Exited!"; - // FIXME: Trust exit code? + Debug("Merge Process Exited!"); + Debug("Stdout: " << process->readAllStandardOutput()); + Debug("Stderr: " << process->readAllStandardError()); + QFileInfo merged(mFile); QFileInfo backup(backupPath); git::Config config = git::Config::global(); @@ -105,19 +109,18 @@ bool MergeTool::start() { env.insert("BASE", basePath); process->setProcessEnvironment(env); -#define TEST_FLATPAK_SPAWN 0 -#if defined(FLATPAK) || TEST_FLATPAK_SPAWN +#if defined(FLATPAK) || defined(DEBUG_FLATPAK) QStringList arguments = {"--host", "--env=LOCAL=" + local->fileName(), "--env=REMOTE=" + remote->fileName(), "--env=MERGED=" + mFile, "--env=BASE=" + basePath}; arguments.append("sh"); arguments.append("-c"); arguments.append(command); - // qDebug() << "Command: " << "flatpak-spawn"; + // Debug("Command: " << "flatpak-spawn"); process->start("flatpak-spawn", arguments); - // qDebug() << "QProcess Arguments: " << process->arguments(); + // Debug("QProcess Arguments: " << process->arguments()); if (!process->waitForStarted()) { - qDebug() << "MergeTool starting failed"; + Debug("MergeTool starting failed"); return false; } #else diff --git a/src/trace.h b/src/trace.h new file mode 100644 index 00000000..6da841c3 --- /dev/null +++ b/src/trace.h @@ -0,0 +1,39 @@ +#ifndef TRACE_H +#define TRACE_H + +#include +#include +#include + +// copied from labplot project +// Thank you Alex ;) +class PerfTracer { +public: + explicit PerfTracer(QString m) { + msg = m.toStdString(); + start = std::chrono::high_resolution_clock::now(); + }; + ~PerfTracer() { + auto end = std::chrono::high_resolution_clock::now(); + auto diff = + std::chrono::duration_cast(end - start) + .count(); + std::cout << msg << ": " << diff << " ms" << std::endl; + } + +private: + std::chrono::high_resolution_clock::time_point start; + std::string msg; +}; + +#define PERFTRACE_ENABLED + +#ifdef PERFTRACE_ENABLED +#define PERFTRACE(msg) PerfTracer tracer(QString(Q_FUNC_INFO) + msg) +#else +#define PERFTRACE(msg) +#endif + +#define PERFTRACE_DETAILVIEW 0 + +#endif // TRACE_H diff --git a/src/ui/Badge.cpp b/src/ui/Badge.cpp index 1ae4de96..702e730a 100644 --- a/src/ui/Badge.cpp +++ b/src/ui/Badge.cpp @@ -49,7 +49,9 @@ QSize Badge::sizeHint() const { } QSize Badge::minimumSizeHint() const { - return !mLabels.isEmpty() ? size(font(), kEllipsis) : QSize(); + return !mLabels.isEmpty() + ? size(font(), Label(mLabels.first().type, kEllipsis)) + : QSize(); } QSize Badge::size(const QFont &font, const QList