diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index e973c1ab..074c9544 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -7,8 +7,8 @@ on: required: true type: string jobs: - windows-portable: - name: Package portable Windows app + windows: + name: Package Windows runs-on: ubuntu-latest strategy: matrix: @@ -25,7 +25,7 @@ jobs: env: VERSION: ${{ inputs.version }} RUNTIME: ${{ matrix.runtime }} - run: ./build/scripts/package.windows-portable.sh + run: ./build/scripts/package.windows.sh - name: Upload package artifact uses: actions/upload-artifact@v4 with: @@ -36,7 +36,7 @@ jobs: with: name: sourcegit.${{ matrix.runtime }} osx-app: - name: Package OSX app + name: Package macOS runs-on: macos-latest strategy: matrix: diff --git a/README.md b/README.md index 2172c1f7..7e4db671 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ ## Translation Status -[![en_US](https://img.shields.io/badge/en__US-100%25-brightgreen)](TRANSLATION.md) [![de__DE](https://img.shields.io/badge/de__DE-100.00%25-brightgreen)](TRANSLATION.md) [![es__ES](https://img.shields.io/badge/es__ES-97.78%25-yellow)](TRANSLATION.md) [![fr__FR](https://img.shields.io/badge/fr__FR-95.00%25-yellow)](TRANSLATION.md) [![it__IT](https://img.shields.io/badge/it__IT-95.56%25-yellow)](TRANSLATION.md) [![pt__BR](https://img.shields.io/badge/pt__BR-96.81%25-yellow)](TRANSLATION.md) [![ru__RU](https://img.shields.io/badge/ru__RU-100.00%25-brightgreen)](TRANSLATION.md) [![zh__CN](https://img.shields.io/badge/zh__CN-100.00%25-brightgreen)](TRANSLATION.md) [![zh__TW](https://img.shields.io/badge/zh__TW-100.00%25-brightgreen)](TRANSLATION.md) +[![en_US](https://img.shields.io/badge/en__US-100%25-brightgreen)](TRANSLATION.md) [![de__DE](https://img.shields.io/badge/de__DE-100.00%25-brightgreen)](TRANSLATION.md) [![es__ES](https://img.shields.io/badge/es__ES-100.00%25-brightgreen)](TRANSLATION.md) [![fr__FR](https://img.shields.io/badge/fr__FR-95.00%25-yellow)](TRANSLATION.md) [![it__IT](https://img.shields.io/badge/it__IT-95.56%25-yellow)](TRANSLATION.md) [![pt__BR](https://img.shields.io/badge/pt__BR-96.81%25-yellow)](TRANSLATION.md) [![ru__RU](https://img.shields.io/badge/ru__RU-100.00%25-brightgreen)](TRANSLATION.md) [![zh__CN](https://img.shields.io/badge/zh__CN-100.00%25-brightgreen)](TRANSLATION.md) [![zh__TW](https://img.shields.io/badge/zh__TW-100.00%25-brightgreen)](TRANSLATION.md) ## How to Use @@ -64,7 +64,7 @@ This software creates a folder `$"{System.Environment.SpecialFolder.ApplicationD | macOS | `${HOME}/Library/Application Support/SourceGit` | > [!TIP] -> You can open the app data dir from the main menu. +> You can open this data storage directory from the main menu. For **Windows** users: @@ -80,7 +80,8 @@ For **Windows** users: scoop bucket add extras scoop install sourcegit ``` -* Portable versions can be found in [Releases](https://github.com/sourcegit-scm/sourcegit/releases/latest) +* Pre-built binaries can be found in [Releases](https://github.com/sourcegit-scm/sourcegit/releases/latest) +* You can run `dotnet publish -c Release -r win-x64 -p:EnablePortable=true -o $YOUR_PUBLISH_DIR .\src\SourceGit.csproj` to build a portable version. For **macOS** users: @@ -159,7 +160,7 @@ This app supports open repository in external tools listed in the table below. > [!NOTE] > This app will try to find those tools based on some pre-defined or expected locations automatically. If you are using one portable version of these tools, it will not be detected by this app. -> To solve this problem you can add a file named `external_editors.json` in app data dir and provide the path directly. For example: +> To solve this problem you can add a file named `external_editors.json` in app data storage directory and provide the path directly. For example: ```json { "tools": { diff --git a/SourceGit.sln b/SourceGit.sln index 3eeb8a54..88730204 100644 --- a/SourceGit.sln +++ b/SourceGit.sln @@ -81,7 +81,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{C54D build\scripts\localization-check.js = build\scripts\localization-check.js build\scripts\package.linux.sh = build\scripts\package.linux.sh build\scripts\package.osx-app.sh = build\scripts\package.osx-app.sh - build\scripts\package.windows-portable.sh = build\scripts\package.windows-portable.sh + build\scripts\package.windows.sh = build\scripts\package.windows.sh EndProjectSection EndProject Global diff --git a/TRANSLATION.md b/TRANSLATION.md index c50ce276..69962320 100644 --- a/TRANSLATION.md +++ b/TRANSLATION.md @@ -8,28 +8,13 @@ -### es_ES.axaml: 97.78% +### es_ES.axaml: 100.00%
Missing Keys -- Text.BranchCM.MergeMultiBranches -- Text.CommitCM.Merge -- Text.CommitCM.MergeMultiple -- Text.Diff.UseBlockNavigation -- Text.FileCM.ResolveUsing -- Text.Hotkeys.Global.Clone -- Text.InProgress.CherryPick.Head -- Text.InProgress.Merge.Operating -- Text.InProgress.Rebase.StoppedAt -- Text.InProgress.Revert.Head -- Text.Merge.Source -- Text.MergeMultiple -- Text.MergeMultiple.CommitChanges -- Text.MergeMultiple.Strategy -- Text.MergeMultiple.Targets -- Text.Repository.Skip +
diff --git a/VERSION b/VERSION index b6723375..b977bf8c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -8.44 \ No newline at end of file +8.45 \ No newline at end of file diff --git a/build/scripts/package.windows-portable.sh b/build/scripts/package.windows.sh similarity index 100% rename from build/scripts/package.windows-portable.sh rename to build/scripts/package.windows.sh diff --git a/src/Models/ExternalMerger.cs b/src/Models/ExternalMerger.cs index a09f808c..49d31df5 100644 --- a/src/Models/ExternalMerger.cs +++ b/src/Models/ExternalMerger.cs @@ -39,7 +39,7 @@ namespace SourceGit.Models new ExternalMerger(4, "tortoise_merge", "Tortoise Merge", "TortoiseMerge.exe;TortoiseGitMerge.exe", "-base:\"$BASE\" -theirs:\"$REMOTE\" -mine:\"$LOCAL\" -merged:\"$MERGED\"", "-base:\"$LOCAL\" -theirs:\"$REMOTE\""), new ExternalMerger(5, "kdiff3", "KDiff3", "kdiff3.exe", "\"$REMOTE\" -b \"$BASE\" \"$LOCAL\" -o \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""), new ExternalMerger(6, "beyond_compare", "Beyond Compare", "BComp.exe", "\"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"", "\"$LOCAL\" \"$REMOTE\""), - new ExternalMerger(7, "win_merge", "WinMerge", "WinMergeU.exe", "\"$MERGED\"", "-u -e \"$LOCAL\" \"$REMOTE\""), + new ExternalMerger(7, "win_merge", "WinMerge", "WinMergeU.exe", "\"$MERGED\"", "-u -e -sw \"$LOCAL\" \"$REMOTE\""), new ExternalMerger(8, "codium", "VSCodium", "VSCodium.exe", "-n --wait \"$MERGED\"", "-n --wait --diff \"$LOCAL\" \"$REMOTE\""), new ExternalMerger(9, "p4merge", "P4Merge", "p4merge.exe", "-tw 4 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"", "-tw 4 \"$LOCAL\" \"$REMOTE\""), }; diff --git a/src/Native/OS.cs b/src/Native/OS.cs index b53f81d9..ca56cdac 100644 --- a/src/Native/OS.cs +++ b/src/Native/OS.cs @@ -1,5 +1,8 @@ using System; using System.Collections.Generic; +#if ENABLE_PORTABLE +using System.Diagnostics; +#endif using System.IO; using Avalonia; @@ -55,6 +58,16 @@ namespace SourceGit.Native public static void SetupDataDir() { +#if ENABLE_PORTABLE + if (OperatingSystem.IsWindows()) + { + var execFile = Process.GetCurrentProcess().MainModule!.FileName; + DataDir = Path.Combine(Path.GetDirectoryName(execFile), "data"); + if (!Directory.Exists(DataDir)) + Directory.CreateDirectory(DataDir); + return; + } +#endif var osAppDataDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); if (string.IsNullOrEmpty(osAppDataDir)) DataDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".sourcegit"); diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml index befad68a..f2165f3f 100644 --- a/src/Resources/Locales/en_US.axaml +++ b/src/Resources/Locales/en_US.axaml @@ -355,8 +355,8 @@ SHA COMMIT TIME SELECTED {0} COMMITS - Holding 'Ctrl' or 'Shift' to select multiple commits. - Holding ⌘ or ⇧ to select multiple commits. + Hold 'Ctrl' or 'Shift' to select multiple commits. + Hold ⌘ or ⇧ to select multiple commits. TIPS: Keyboard Shortcuts Reference GLOBAL @@ -395,8 +395,8 @@ Path: Cherry-Pick in progress. Processing commit - Merge request in progress. - Operating + Merge in progress. + Merging Rebase in progress. Stopped at Revert in progress. diff --git a/src/Resources/Locales/es_ES.axaml b/src/Resources/Locales/es_ES.axaml index cf0f05b5..0853b896 100644 --- a/src/Resources/Locales/es_ES.axaml +++ b/src/Resources/Locales/es_ES.axaml @@ -61,6 +61,7 @@ Fetch ${0}$ en ${1}$... Git Flow - Finalizar ${0}$ Merge ${0}$ en ${1}$... + Hacer merge de las ramas {0} seleccionadas hacia la rama actual Pull ${0}$ Pull ${0}$ en ${1}$... Push ${0}$ @@ -113,8 +114,8 @@ Copiar SHA Acción personalizada Rebase Interactivo ${0}$ hasta Aquí - Abrir en el Navegador - Copiar Enlace + Merge a ${0}$ + Merge ... Rebase ${0}$ hasta Aquí Reset ${0}$ hasta Aquí Revertir Commit @@ -252,6 +253,7 @@ Intercambiar Resaltado de Sintaxis Ajuste de Línea + Habilitar navegación en bloque Abrir en Herramienta de Merge Mostrar Todas las Líneas Disminuir Número de Líneas Visibles @@ -283,6 +285,7 @@ Descartar {0} archivos... Descartar Cambios en Línea(s) Seleccionada(s) Abrir Herramienta de Merge Externa + Resolver usando ${0}$ Guardar Como Patch... Stage Stage {0} archivos @@ -361,6 +364,7 @@ Referencia de Atajos de Teclado GLOBAL Cancelar popup actual + Clonar repositorio nuevo Cerrar página actual Ir a la página anterior Ir a la siguiente página @@ -393,17 +397,28 @@ Inicializar Repositorio Ruta: Cherry-Pick en progreso. + Procesando commit Merge en progreso. + Haciendo merge Rebase en progreso. + Pausado en Revert en progreso. + Haciendo revert del commit Rebase Interactivo Rama Objetivo: En: + Abrir en el Navegador + Copiar Enlace ERROR AVISO Merge Rama En: Opción de Merge: + Rama Fuente: + Merge (Multiplo) + Commit todos los cambios + Estrategia: + Destino: Mover Nodo del Repositorio Seleccionar nodo padre para: Nombre: @@ -570,6 +585,7 @@ Autor & Committer Rama Actual Mostrar Etiquetas como Árbol + OMITIR Estadísticas SUBMÓDULOS AÑADIR SUBMÓDULO diff --git a/src/Resources/Locales/ru_RU.axaml b/src/Resources/Locales/ru_RU.axaml index ca06d36a..be929d98 100644 --- a/src/Resources/Locales/ru_RU.axaml +++ b/src/Resources/Locales/ru_RU.axaml @@ -11,18 +11,18 @@ • Моноширинные шрифты взяты из • Исходный код можно найти по адресу Бесплатный графический клиент Git с исходным кодом - Добавить рабочее дерево + Добавить рабочий каталог Что проверить: Существующую ветку Создать новую ветку Расположение: - Путь к этому рабочему дереву. Поддерживается относительный путь. + Путь к рабочему каталогу. Поддерживается относительный путь. Имя ветки: - Необязательно. По умолчанию используется имя целевой папки. + Имя целевого каталога по умолчанию. (необязательно) Отслеживание ветки: Отслеживание внешней ветки OpenAI Ассистент - Использовать OpenAI для создания сообщения о фиксации + Использовать OpenAI для создания сообщения о ревизии Исправить Ошибка Выдает ошибки и отказывается применять исправление @@ -43,16 +43,16 @@ Ревизия: Архив Спросить разрешения SourceGit - ФАЙЛЫ СЧИТАЮТСЯ НЕИЗМЕНЕННЫМИ - НИ ОДИН ФАЙЛ НЕ СЧИТАЕТСЯ НЕИЗМЕНЕННЫМ + НЕОТСЛЕЖИВАЕМЫЕ ФАЙЛЫ + СПИСОК ПУСТ УДАЛИТЬ ДВОИЧНЫЙ ФАЙЛ НЕ ПОДДЕРЖИВАЕТСЯ!!! - Обвинение - ОБВИНЕНИЕ В ЭТОМ ФАЙЛЕ НЕ ПОДДЕРЖИВАЕТСЯ!!! + Расследование + РАССЛЕДОВАНИЕ В ЭТОМ ФАЙЛЕ НЕ ПОДДЕРЖИВАЕТСЯ!!! Проверить ${0}$... - Сравнить в веткой - Сравнить в заголовком - Сравнить в рабочим деревом + Сравнить с веткой + Сравнить с заголовком + Сравнить с рабочим каталогом Копировать имя ветки Удалить ${0}$... Удалить выбранные {0} ветки @@ -67,47 +67,47 @@ Выложить ${0}$ Переместить ${0}$ на ${1}$... Переименовать ${0}$... - Установить отслеживание ветки + Отслеживать ветку Отключить основной поток - Сравнение ветвей + Сравнение веток Байты ОТМЕНА Сбросить эту ревизию Сбросить родительскую ревизию - Произвести сообщение о фиксации + Произвести сообщение о ревизии ИЗМЕНИТЬ РЕЖИМ ОТОБРАЖЕНИЯ Показывать в виде списка файлов и каталогов Показывать в виде списка путей Показывать в виде дерева файловой системы Проверить ветку - Проверить фиксацию - Предупреждение: При выполнении проверки фиксации ваша голова будет отсоединена - Фиксация: + Проверить ревизию + Предупреждение: При выполнении проверки ревизии ваша голова будет отсоединена + Ревизия: Ветка: Локальные изменения: Отклонить Ничего не делать Отложить и примненить повторно Частичный выбор - Добавить источник для фиксации сообщения - Фиксация(и): + Добавить источник для ревизии сообщения + Ревизия(и): Фиксировать все изменения. Основной: Обычно вы не можете выделить слияние, потому что не знаете, какую сторону слияния следует считать основной. Эта опция позволяет отобразить изменение относительно указанного родительского элемента. Очистить отложенные - Вы пытаетесь очистить все отложенные. Вы уверены, что будете продолжать? + Вы пытаетесь очистить все отложенные. Вы уверены, что хотите продолжить? Клонировать внешнее хранилище Расширенные параметры: - Дополнительные аргументы для клонирования хранилища. Необязательно. + Дополнительные аргументы для клонирования хранилища. (необязательно). Локальное имя: - Имя хранилища. Необязательно. + Имя хранилища. (необязательно). Родительский каталог: Адрес хранилища: ЗАКРЫТЬ Редактор - Применить этот коммит (cherry-pick) - Применить несколько коммитов ... - Переключиться на этот коммит + Применить эту ревизию (cherry-pick) + Применить несколько ревизий ... + Переключиться на эту ревизию Сравнить c HEAD Сравнить с рабочим каталогом Копировать информацию @@ -118,11 +118,11 @@ Влить ветки... Переместить ${0}$ сюда Сбросить ${0}$ сюда - Отменить коммит + Отменить ревизию Изменить комментарий Сохранить как patch-файл... - Объединить с предыдущим коммитом - Объединить все следующие коммиты с этим + Объединить с предыдущей ревизией + Объединить все следующие ревизии с этим ИЗМЕНЕНИЯ Найти изменения.... ФАЙЛЫ @@ -134,36 +134,36 @@ ИЗМЕНЁННЫЙ ДОЧЕРНИЙ ИСПОЛНИТЕЛЬ - Найти все ветки с этим коммитом - ВЕТКИ С ЭТИМ КОММИТОМ + Найти все ветки с этой ревизией + ВЕТКИ С ЭТОЙ РЕВИЗИЕЙ Отображаются только первые 100 изменений. Смотрите все изменения на вкладке ИЗМЕНЕНИЯ. СООБЩЕНИЕ РОДИТЕЛИ ССЫЛКИ SHA Открыть в браузере - Введите тему фиксации + Введите тему ревизии Описание Настройка хранилища - ШАБЛОН КОММИТА + ШАБЛОН РЕВИЗИИ Название: Cодержание: ПОЛЬЗОВАТЕЛЬСКОЕ ДЕЙСТВИЕ Аргументы: - ${REPO} - Путь к репозиторию; ${SHA} - SHA коммитов + ${REPO} - Путь к репозиторию; ${SHA} - SHA ревизий Исполняемый файл: Имя: Диапазон: - Коммит + Ревизия Репозиторий Адрес электронной почты Адрес электронной почты GIT Автоматическое скачивание изменений Минут(а/ы) - Разрешить --signoff для коммита + Разрешить '--signoff' для ревизии Удалённое хранилище по-умолчанию - Разрешить --prune при скачивании + Разрешить '--prune' при скачивании ОТСЛЕЖИВАНИЕ ПРОБЛЕМ Добавить пример правила для Git Добавить пример правила Jira @@ -175,8 +175,8 @@ Адрес результата: Пожалуйста, используйте $1, $2 для доступа к значениям групп регулярных выражений. ОТКРЫТЬ ИИ - Предпочитаемый сервис: - Если «Предпочитаемый сервис» установлен, SourceGit будет использовать только этот хранилище. В противном случае, если доступно более одной услуги, будет отображено контекстное меню для выбора одной из них. + Предпочтительный сервис: + Если «Предпочтительный сервис» установлен, SourceGit будет использовать только этот хранилище. В противном случае, если доступно более одной услуги, будет отображено контекстное меню для выбора одной из них. HTTP-прокси HTTP-прокси, используемый этим хранилищем Имя пользователя @@ -185,12 +185,12 @@ Имя Цвет Восстанавливать вкладки при запуске - Общепринятый помощник по фиксации изменений + Общепринятый помощник по ревизии Кардинальные изменения: Закрытая тема: Детали изменений: Область: - Коротнкое описание: + Короткое описание: Тип изменения: Копировать Копировать весь текст @@ -208,7 +208,7 @@ Создать локальную ветку Создать метку... Новая метка у: - Подпись GPG + GPG подпись Сообщение с меткой: Необязательно. Имя метки: @@ -222,8 +222,8 @@ Вырезать Удалить ветку Ветка: - Вы собираетесь удалить удаленную ветку!!! - Также удалите удаленную ветку ${0}$ + Вы собираетесь удалить удалённую ветку!!! + Также удалите удалённую ветку ${0}$ Удаление нескольких веток Вы пытаетесь удалить несколько веток одновременно. Обязательно перепроверьте, прежде чем предпринимать какие-либо действия! Удалить внешнее хранилище @@ -357,10 +357,10 @@ ВРЕМЯ АВТОРА ГРАФ И СУБЪЕКТ SHA - ВРЕМЯ ФИКСАЦИИ - ВЫБРАННЫЕ {0} ФИКСАЦИИ - Удерживайте Ctrl или Shift, чтобы выбрать несколько фиксаций. - Удерживайте ⌘ или ⇧, чтобы выбрать несколько фиксаций. + ВРЕМЯ РЕВИЗИИ + ВЫБРАННЫЕ {0} РЕВИЗИИ + Удерживайте Ctrl или Shift, чтобы выбрать несколько ревизий. + Удерживайте ⌘ или ⇧, чтобы выбрать несколько ревизий. ПОДСКАЗКИ: Ссылка на сочетания клавиш ОБЩЕЕ @@ -379,11 +379,11 @@ Отклонить выбранные изменения Извлечение, запускается сразу Режим доски (по-умолчанию) - Принудительно перезагрузить этот хранилище + Принудительно перезагрузить хранилище Забрать, запускается сразу Выложить, запускается сразу Подготовленные/Неподготовленные выбранные изменения - Режим поиска фиксаций + Режим поиска ревизий Переключить на «Изменения» Переключить на «Истории» Переключить на «Отложенные» @@ -397,13 +397,13 @@ Отклонить Инициализировать хранилище Путь: - Выполняется частичный перенос коммитов (cherry-pick). - Обрабтка коммита. + Выполняется частичный перенос ревизий (cherry-pick). + Обрабтка ревизии. Выполняется слияние. - Работаем. + Выполяется. Выполняется перенос. Остановлен на - Выполняется отмена коммита. + Выполняется отмена ревизии. Выполняется отмена Интерактивное перемещение Целевая ветка: @@ -453,9 +453,9 @@ Имя: Сервер ВИД - Шрифт по-умолчанию + Шрифт по умолчанию Размер шрифта - По-умолчанию + По умолчанию Редактор Моноширный шрифт В текстовом редакторе используется только моноширный шрифт @@ -471,35 +471,35 @@ Проверить обновления при старте Язык Максимальная длина истории - Показывать время автора вместо времени коммита на графике + Показывать время автора вместо времени ревизии на графике Показать наследника в деталях комментария - Длина темы коммита + Длина темы ревизии GIT Включить автозавершение CRLF - Каталог клонирования по-умолчанию + Каталог клонирования по умолчанию Электроная почта пользователя Общая электроная почта пользователя git Путь установки Имя пользователя - общее имя пользователя git + Общее имя пользователя git Версия Git - Git (>= 2.23.0) требуется для этого приложения - ПОДПИСЬ GPG - Фиксация подписи GPG - Метка подписи GPG + Для работы программы требуется версия Git (>= 2.23.0) + GPG ПОДПИСЬ + GPG подпись ревизии + GPG подпись метки Формат GPG Путь установки программы Введите путь для установленной программы GPG Ключ подписи пользователя - Ключ подписи GPG пользователя + Ключ GPG подписи пользователя ВНЕДРЕНИЕ ОБОЛОЧКА/ТЕРМИНАЛ Оболочка/Терминал Путь Удалить внешнее хранилище Цель: - Удалить рабочее дерево - Информация об обрезке рабочего дерева в «$GIT_DIR/worktrees» + Удалить рабочий каталог + Информация об обрезке рабочего каталога в «$GIT_DIR/worktrees» Забрать Ветка: Извлечь все ветки @@ -519,7 +519,7 @@ Внешнее хранилище: Выложить изменения на внешнее хранилище Ветка внешнего хранилища: - Установить в качестве ветки отслеживания + Отслеживать ветку Выложить все метки Выложить метку на внешнее хранилище Выложить на все внешние хранилища @@ -543,7 +543,7 @@ Извлечь Открыть в браузере Удалить - Подтвердить удаление рабочего дерева + Подтвердить удаление рабочего каталога Включить опцию --force Цель: Переименовать ветку @@ -555,7 +555,7 @@ Очистить (Сбор мусора и удаление) Запустить команду «git gc» для данного хранилища. Очистить всё - Настройка этого хранилища + Настройка хранилища ПРОДОЛЖИТЬ Изменить действия Не изменять действия @@ -563,12 +563,12 @@ Открыть в файловом менеджере Поиск веток, меток и подмодулей Видимость на графике - Не установлен (По-умолчанию) - Скрыть в графе фиксации - Фильтр в графе фиксации + Не установлен (по умолчанию) + Скрыть в графе ревизии + Фильтр в графе ревизии ОТФИЛЬТРОВАНО: Переключить режим запроса - Дата фиксации (--date-order) + Дата ревизии (--date-order) Топологически (--topo-order) ЛОКАЛЬНЫЕ ВЕТКИ Навигация по заголовку @@ -579,13 +579,13 @@ Обновить ВНЕШНИЕ ХРАНИЛИЩА ДОБАВИТЬ ВНЕШНЕЕ ХРАНИЛИЩЕ - Поиск фиксации + Поиск ревизии Файл Сообщение SHA Автор и исполнитель Текущая ветка - Показывать метки как дерево + Показывать метки как катлог ПРОПУСТИТЬ Статистикa ПОДМОДУЛИ @@ -598,15 +598,15 @@ ДОБАВИТЬ РАБОЧИЙ КАТАЛОГ ОБРЕЗАТЬ Адрес репозитория Git - Сбросить текущую втеку до версии + Сбросить текущую ветку до версии Режим сброса: Переместить в: Текущая ветка: Открыть в файловом менеджере - Отменить коммит - Коммит: - Отмена коммита - Переформулировать сообщение коммита + Отменить ревизию + Ревизия: + Отмена ревизии + Переформулировать сообщение ревизии Использовать «Shift+Enter» для ввода новой строки. «Enter» - это горячая клавиша кнопки OK Запуск. Подождите пожалуйста... СОХРАНИТЬ @@ -617,43 +617,43 @@ Копировать SHA Перейти Проверка для обновления... - Доступна новая версия этого программного обеспечения: + Доступна новая версия программного обеспечения: Не удалось проверить наличие обновлений! Загрузка Пропустить эту версию Обновление ПО В настоящее время обновления недоступны. - Втиснуть фиксации + Втиснуть ревизии В: - Частный ключ SSH: - Путь хранения частного ключа SSH + Приватный ключ SSH: + Путь хранения приватного ключа SSH Только подготовленные изменения - Подготовленные так и подготовленные изменения выбранных файлов будут сохранены!!! + Подготовленные так и неподготовленные изменения выбранных файлов будут сохранены!!! ЗАПУСК Отложить Включить неотслеживаемые файлы Хранить отложенные файлы Сообщение: - Необязательно. Имя этого тайника + Имя тайника (необязательно) Отложить локальные изменения Принять Отбросить Применить - Отрбосить тайник + Отбросить тайник Отбросить: Отложенные ИЗМЕНЕНИЯ ОТЛОЖЕННЫЕ - Статистики - ФИКСАЦИИ + Статистика + РЕВИЗИИ ИСПОЛНИТЕЛИ МЕСЯЦ НЕДЕЛЯ - ФИКСАЦИИ: + РЕВИЗИИ: АВТОРЫ: ОБЗОР ПОДМОДУЛИ - Добавить подмодули + Добавить подмодули Копировать относительный путь Извлечение вложенных подмодулей Открыть подмодуль хранилища @@ -664,7 +664,7 @@ Копировать имя метки Копировать сообщение с метки Удалить ${0}$... - Слить ${0}$ в ${1}$... + Влить ${0}$ в ${1}$... Выложить ${0}$... Сетевой адрес: Обновление подмодулей @@ -672,7 +672,7 @@ Инициализировать по необходимости Рекурсивно Подмодуль: - Использовать опцию --remote + Использовать опцию '--remote' Предупреждение Приветствие Создать группу @@ -685,7 +685,7 @@ Открыть все хранилища Открыть хранилище Открыть терминал - Повторное сканирование хранилищ в каталоге клонирования по-умолчанию + Повторное сканирование хранилищ в каталоге клонирования по умолчанию Поиск хранилищ... Сортировка Изменения @@ -695,33 +695,33 @@ Игнорировать файлы в том же каталоге Игнорировать только эти файлы Изменить - Теперь вы можете подготовитть этот файл. + Теперь вы можете подготовить этот файл. ЗАФИКСИРОВАТЬ ЗАФИКСИРОВАТЬ и ОТПРАВИТЬ Шаблон/Истории Запустить событие щелчка Зафиксировать (Редактировать) Подготовить все изменения и зафиксировать - Обнаружена пустая фиксация! Вы хотите продолжить (--allow-empty)? + Обнаружена пустая ревизия! Вы хотите продолжить (--allow-empty)? ОБНАРУЖЕНЫ КОНФЛИКТЫ КОНФЛИКТЫ ФАЙЛОВ РАЗРЕШЕНЫ ВКЛЮЧИТЬ НЕОТСЛЕЖИВАЕМЫЕ ФАЙЛЫ НЕТ ПОСЛЕДНИХ ВХОДНЫХ СООБЩЕНИЙ - НЕТ ШАБЛОНОВ ФИКСАЦИИ + НЕТ ШАБЛОНОВ РЕВИЗИИ ПОДГОТОВЛЕННЫЕ СНЯТЬ ПОДГОТОВЛЕННЫЙ СНЯТЬ ВСЕ ПОДГОТОВЛЕННЫЕ НЕПОДГОТОВЛЕННЫЕ ПОДГОТОВИТЬ ВСЕ ПОДГОТОВИТЬ - ВИД ПРЕДПОЛАГАЕТСЯ НЕИЗМЕННЫМ + ОТКРЫТЬ СПИСОК НЕОТСЛЕЖИВАЕМЫХ ФАЙЛОВ Шаблон: ${0}$ - Щёлкните правой кнопкой мыши выбранный файл(ы) и сделайте свой выбор для разрешения конфликтов. + Щёлкните правой кнопкой мыши выбранный файл(ы) и разрешите конфликты. РАБОЧЕЕ ПРОСТРАНСТВО: Настройка рабочего пространства... - РАБОЧЕЕ ДЕРЕВО + РАБОЧИЙ КАТАЛОГ Копировать путь Заблокировать Удалить Разблокировать - + \ No newline at end of file diff --git a/src/SourceGit.csproj b/src/SourceGit.csproj index 497a518f..8e8c2b3f 100644 --- a/src/SourceGit.csproj +++ b/src/SourceGit.csproj @@ -30,6 +30,10 @@ $(DefineConstants);DISABLE_UPDATE_DETECTION + + $(DefineConstants);ENABLE_PORTABLE + + diff --git a/src/ViewModels/BranchTreeNode.cs b/src/ViewModels/BranchTreeNode.cs index a8232047..698dc7ad 100644 --- a/src/ViewModels/BranchTreeNode.cs +++ b/src/ViewModels/BranchTreeNode.cs @@ -58,6 +58,7 @@ namespace SourceGit.ViewModels { public List Locals => _locals; public List Remotes => _remotes; + public List InvalidExpandedNodes => _invalidExpandedNodes; public void SetExpandedNodes(List expanded) { @@ -98,6 +99,12 @@ namespace SourceGit.ViewModels } } + foreach (var path in _expanded) + { + if (!folders.ContainsKey(path)) + _invalidExpandedNodes.Add(path); + } + folders.Clear(); SortNodes(_locals); SortNodes(_remotes); @@ -188,6 +195,7 @@ namespace SourceGit.ViewModels private readonly List _locals = new List(); private readonly List _remotes = new List(); + private readonly List _invalidExpandedNodes = new List(); private readonly HashSet _expanded = new HashSet(); } } diff --git a/src/ViewModels/Repository.cs b/src/ViewModels/Repository.cs index 993597a5..82197bdf 100644 --- a/src/ViewModels/Repository.cs +++ b/src/ViewModels/Repository.cs @@ -2088,6 +2088,9 @@ namespace SourceGit.ViewModels { builder.SetExpandedNodes(_settings.ExpandedBranchNodesInSideBar); builder.Run(branches, remotes, false); + + foreach (var invalid in builder.InvalidExpandedNodes) + _settings.ExpandedBranchNodesInSideBar.Remove(invalid); } else { diff --git a/src/Views/ChangeCollectionView.axaml.cs b/src/Views/ChangeCollectionView.axaml.cs index a47988f0..d6982dda 100644 --- a/src/Views/ChangeCollectionView.axaml.cs +++ b/src/Views/ChangeCollectionView.axaml.cs @@ -42,7 +42,7 @@ namespace SourceGit.Views } } - if (!e.Handled && e.Key != Key.Space) + if (!e.Handled && e.Key != Key.Space && e.Key != Key.Enter) base.OnKeyDown(e); } }