diff --git a/src/Resources/Locales/de_DE.axaml b/src/Resources/Locales/de_DE.axaml index 7a3da2944..c1d6dd1a9 100644 --- a/src/Resources/Locales/de_DE.axaml +++ b/src/Resources/Locales/de_DE.axaml @@ -178,6 +178,8 @@ <x:String x:Key="Text.ConfigureWorkspace.Color" xml:space="preserve">Farbe</x:String> <x:String x:Key="Text.ConfigureWorkspace.Name" xml:space="preserve">Name</x:String> <x:String x:Key="Text.ConfigureWorkspace.Restore" xml:space="preserve">Zuletzt geöffnete Tabs beim Starten wiederherstellen</x:String> + <x:String x:Key="Text.ConflictDialog.Title">Nicht aufgelöste Konflikte</x:String> + <x:String x:Key="Text.ConflictDialog.Message">In Ihrer Arbeitskopie befinden sich nicht aufgelöste Konflikte!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Konventionelle Commit-Hilfe</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">Breaking Change:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">Geschlossenes Ticket:</x:String> diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml index 20a70f22f..5e867a12e 100644 --- a/src/Resources/Locales/en_US.axaml +++ b/src/Resources/Locales/en_US.axaml @@ -186,6 +186,8 @@ <x:String x:Key="Text.ConfirmEmptyCommit.NoLocalChanges" xml:space="preserve">Empty commit detected! Do you want to continue (--allow-empty)?</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.StageAllThenCommit" xml:space="preserve">STAGE ALL & COMMIT</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.WithLocalChanges" xml:space="preserve">Empty commit detected! Do you want to continue (--allow-empty) or stage all then commit?</x:String> + <x:String x:Key="Text.ConflictDialog.Title">Unresolved Conflicts</x:String> + <x:String x:Key="Text.ConflictDialog.Message">There are unresolved conflicts in your working copy!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Conventional Commit Helper</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">Breaking Change:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">Closed Issue:</x:String> diff --git a/src/Resources/Locales/es_ES.axaml b/src/Resources/Locales/es_ES.axaml index 204cfc1a1..6f133eca6 100644 --- a/src/Resources/Locales/es_ES.axaml +++ b/src/Resources/Locales/es_ES.axaml @@ -187,6 +187,8 @@ <x:String x:Key="Text.ConfirmEmptyCommit.NoLocalChanges" xml:space="preserve">¡Commit vacío detectado! ¿Quieres continuar (--allow-empty)?</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.StageAllThenCommit" xml:space="preserve">HACER STAGE A TODO & COMMIT</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.WithLocalChanges" xml:space="preserve">¡Commit vacío detectado! ¿Quieres continuar (--allow-empty) o hacer stage a todo y después commit?</x:String> + <x:String x:Key="Text.ConflictDialog.Title">Conflictos sin resolver</x:String> + <x:String x:Key="Text.ConflictDialog.Message">¡Hay conflictos sin resolver en tu copia de trabajo!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Asistente de Commit Convencional</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">Cambio Importante:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">Incidencia Cerrada:</x:String> diff --git a/src/Resources/Locales/fr_FR.axaml b/src/Resources/Locales/fr_FR.axaml index f45a83d9a..e1b564248 100644 --- a/src/Resources/Locales/fr_FR.axaml +++ b/src/Resources/Locales/fr_FR.axaml @@ -181,6 +181,8 @@ <x:String x:Key="Text.ConfigureWorkspace.Color" xml:space="preserve">Couleur</x:String> <x:String x:Key="Text.ConfigureWorkspace.Name" xml:space="preserve">Nom</x:String> <x:String x:Key="Text.ConfigureWorkspace.Restore" xml:space="preserve">Restaurer les onglets au démarrage</x:String> + <x:String x:Key="Text.ConflictDialog.Title">Conflits non résolus</x:String> + <x:String x:Key="Text.ConflictDialog.Message">Il y a des conflits non résolus dans votre copie de travail !</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Assistant Commits Conventionnels</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">Changement Radical :</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">Incident Clos :</x:String> diff --git a/src/Resources/Locales/it_IT.axaml b/src/Resources/Locales/it_IT.axaml index b7d2568a9..9e4b23c8f 100644 --- a/src/Resources/Locales/it_IT.axaml +++ b/src/Resources/Locales/it_IT.axaml @@ -181,6 +181,8 @@ <x:String x:Key="Text.ConfigureWorkspace.Color" xml:space="preserve">Colore</x:String> <x:String x:Key="Text.ConfigureWorkspace.Name" xml:space="preserve">Nome</x:String> <x:String x:Key="Text.ConfigureWorkspace.Restore" xml:space="preserve">Ripristina schede all'avvio</x:String> + <x:String x:Key="Text.ConflictDialog.Title">Conflitti non risolti</x:String> + <x:String x:Key="Text.ConflictDialog.Message">Ci sono conflitti non risolti nella tua copia di lavoro!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Guida Commit Convenzionali</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">Modifica Sostanziale:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">Issue Chiusa:</x:String> diff --git a/src/Resources/Locales/ja_JP.axaml b/src/Resources/Locales/ja_JP.axaml index c50504e1a..e64eebc65 100644 --- a/src/Resources/Locales/ja_JP.axaml +++ b/src/Resources/Locales/ja_JP.axaml @@ -181,6 +181,8 @@ <x:String x:Key="Text.ConfigureWorkspace.Color" xml:space="preserve">色</x:String> <x:String x:Key="Text.ConfigureWorkspace.Name" xml:space="preserve">名前</x:String> <x:String x:Key="Text.ConfigureWorkspace.Restore" xml:space="preserve">起動時にタブを復元</x:String> + <x:String x:Key="Text.ConflictDialog.Title">未解決の競合</x:String> + <x:String x:Key="Text.ConflictDialog.Message">作業コピーに未解決の競合があります!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Conventional Commitヘルパー</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">破壊的変更:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">閉じたIssue:</x:String> diff --git a/src/Resources/Locales/pt_BR.axaml b/src/Resources/Locales/pt_BR.axaml index a4e9d8837..c5eda07ae 100644 --- a/src/Resources/Locales/pt_BR.axaml +++ b/src/Resources/Locales/pt_BR.axaml @@ -163,6 +163,8 @@ <x:String x:Key="Text.ConfigureWorkspace.Color" xml:space="preserve">Cor</x:String> <x:String x:Key="Text.ConfigureWorkspace.Name" xml:space="preserve">Nome</x:String> <x:String x:Key="Text.ConfigureWorkspace.Restore" xml:space="preserve">Restaurar abas ao inicializar</x:String> + <x:String x:Key="Text.ConflictDialog.Title">Conflitos não resolvidos</x:String> + <x:String x:Key="Text.ConflictDialog.Message">Há conflitos não resolvidos na sua cópia de trabalho!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Assistente de Conventional Commit</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">Breaking Change:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">Ticket encerrado:</x:String> diff --git a/src/Resources/Locales/ru_RU.axaml b/src/Resources/Locales/ru_RU.axaml index b8c864153..507a2b7b1 100644 --- a/src/Resources/Locales/ru_RU.axaml +++ b/src/Resources/Locales/ru_RU.axaml @@ -186,6 +186,8 @@ <x:String x:Key="Text.ConfirmEmptyCommit.NoLocalChanges" xml:space="preserve">Обнаружена пустая ревизия! Вы хотите продолжить (--allow-empty)?</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.StageAllThenCommit" xml:space="preserve">Подготовить все и зафиксировать ревизию</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.WithLocalChanges" xml:space="preserve">Обнаружена пустая ревизия! Вы хотите продолжить (--allow-empty) или отложить все, затем зафиксировать ревизию?</x:String> + <x:String x:Key="Text.ConflictDialog.Title">Неразрешённые конфликты</x:String> + <x:String x:Key="Text.ConflictDialog.Message">В вашей рабочей копии есть неразрешённые конфликты!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Общепринятый помощник по ревизии</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">Кардинальные изменения:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">Закрытая тема:</x:String> diff --git a/src/Resources/Locales/ta_IN.axaml b/src/Resources/Locales/ta_IN.axaml index b4e4d939c..8de9237a4 100644 --- a/src/Resources/Locales/ta_IN.axaml +++ b/src/Resources/Locales/ta_IN.axaml @@ -181,6 +181,8 @@ <x:String x:Key="Text.ConfigureWorkspace.Color" xml:space="preserve">நிறம்</x:String> <x:String x:Key="Text.ConfigureWorkspace.Name" xml:space="preserve">பெயர்</x:String> <x:String x:Key="Text.ConfigureWorkspace.Restore" xml:space="preserve">தாவல்களை மீட்டமை</x:String> + <x:String x:Key="Text.ConflictDialog.Title">தீர்க்கப்படாத மோதல்கள்</x:String> + <x:String x:Key="Text.ConflictDialog.Message">உங்கள் வேலை நகலில் தீர்க்கப்படாத மோதல்கள் உள்ளன!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">வழக்கமான உறுதிமொழி உதவியாளர்</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">உடைக்கும் மாற்றம்:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">மூடப்பட்ட வெளியீடு சிக்கல்:</x:String> diff --git a/src/Resources/Locales/uk_UA.axaml b/src/Resources/Locales/uk_UA.axaml index a3b63bde4..3dd6bda3d 100644 --- a/src/Resources/Locales/uk_UA.axaml +++ b/src/Resources/Locales/uk_UA.axaml @@ -185,6 +185,8 @@ <x:String x:Key="Text.ConfirmEmptyCommit.NoLocalChanges" xml:space="preserve">Виявлено порожній коміт! Продовжити (--allow-empty)?</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.StageAllThenCommit" xml:space="preserve">ІНДЕКСУВАТИ ВСЕ ТА ЗАКОМІТИТИ</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.WithLocalChanges" xml:space="preserve">Виявлено порожній коміт! Продовжити (--allow-empty) чи індексувати все та закомітити?</x:String> + <x:String x:Key="Text.ConflictDialog.Title">Невирішені конфлікти</x:String> + <x:String x:Key="Text.ConflictDialog.Message">У вашій робочій копії є невирішені конфлікти!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">Допомога Conventional Commit</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">Зворотньо несумісні зміни:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">Закрите завдання:</x:String> diff --git a/src/Resources/Locales/zh_CN.axaml b/src/Resources/Locales/zh_CN.axaml index 3d41bccd6..30843b7e7 100644 --- a/src/Resources/Locales/zh_CN.axaml +++ b/src/Resources/Locales/zh_CN.axaml @@ -190,6 +190,8 @@ <x:String x:Key="Text.ConfirmEmptyCommit.NoLocalChanges" xml:space="preserve">提交未包含变更文件!是否继续(--allow-empty)?</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.StageAllThenCommit" xml:space="preserve">自动暂存并提交</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.WithLocalChanges" xml:space="preserve">提交未包含变更文件!是否继续(--allow-empty)或是自动暂存所有变更并提交?</x:String> + <x:String x:Key="Text.ConflictDialog.Title">未解决的冲突</x:String> + <x:String x:Key="Text.ConflictDialog.Message">您的工作副本中存在未解决的冲突!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">规范化提交信息生成</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">破坏性更新:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">关闭的ISSUE:</x:String> diff --git a/src/Resources/Locales/zh_TW.axaml b/src/Resources/Locales/zh_TW.axaml index 3a10f6ca9..d1ac983a6 100644 --- a/src/Resources/Locales/zh_TW.axaml +++ b/src/Resources/Locales/zh_TW.axaml @@ -190,6 +190,8 @@ <x:String x:Key="Text.ConfirmEmptyCommit.NoLocalChanges" xml:space="preserve">未包含任何檔案變更! 您是否仍要提交 (--allow-empty)?</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.StageAllThenCommit" xml:space="preserve">自动暂存并提交</x:String> <x:String x:Key="Text.ConfirmEmptyCommit.WithLocalChanges" xml:space="preserve">未包含任何檔案變更! 您是否仍要提交 (--allow-empty)或者自動暫存全部變更並提交?</x:String> + <x:String x:Key="Text.ConflictDialog.Title">未解決的衝突</x:String> + <x:String x:Key="Text.ConflictDialog.Message">您的工作副本中有未解決的衝突!</x:String> <x:String x:Key="Text.ConventionalCommit" xml:space="preserve">產生約定式提交訊息</x:String> <x:String x:Key="Text.ConventionalCommit.BreakingChanges" xml:space="preserve">破壞性變更:</x:String> <x:String x:Key="Text.ConventionalCommit.ClosedIssue" xml:space="preserve">關閉的 Issue:</x:String> diff --git a/src/ViewModels/WorkingCopy.cs b/src/ViewModels/WorkingCopy.cs index 10544970c..634e271c0 100644 --- a/src/ViewModels/WorkingCopy.cs +++ b/src/ViewModels/WorkingCopy.cs @@ -9,6 +9,8 @@ using CommunityToolkit.Mvvm.ComponentModel; +using SourceGit.Views; + namespace SourceGit.ViewModels { public class WorkingCopy : ObservableObject @@ -300,6 +302,15 @@ public void SetData(List<Models.Change> changes) Dispatcher.UIThread.Invoke(() => { + if((visibleUnstaged.Count > 0) && (hasConflict)) + { + _repo.RefreshBranches(); + _repo.RefreshCommits(); + _repo.SelectedViewIndex = 1; + selectedUnstaged.Add(visibleUnstaged[0]); + App.OpenDialog(new ConflictDialog()); + } + _isLoadingData = true; HasUnsolvedConflicts = hasConflict; VisibleUnstaged = visibleUnstaged; @@ -310,8 +321,8 @@ public void SetData(List<Models.Change> changes) SelectedStaged = selectedStaged; _isLoadingData = false; - UpdateDetail(); UpdateInProgressState(); + UpdateDetail(); }); } diff --git a/src/Views/Conflict.axaml b/src/Views/Conflict.axaml index f2d7bdec3..cf2e25a07 100644 --- a/src/Views/Conflict.axaml +++ b/src/Views/Conflict.axaml @@ -111,7 +111,7 @@ <TextBlock Margin="6,0,0,0" Text="{DynamicResource Text.WorkingCopy.Conflicts.UseTheirs}" VerticalAlignment="Center"/> </StackPanel> </Button> - <Button Classes="flat" Margin="8,0,0,0" Command="{Binding UseMine}" ToolTip.Tip="git checkout --theirs"> + <Button Classes="flat" Margin="8,0,0,0" Command="{Binding UseMine}" ToolTip.Tip="git checkout --ours"> <StackPanel Orientation="Horizontal"> <Path Width="12" Height="12" Data="{StaticResource Icons.Local}"/> <TextBlock Margin="6,0,0,0" Text="{DynamicResource Text.WorkingCopy.Conflicts.UseMine}" VerticalAlignment="Center"/> diff --git a/src/Views/ConflictDialog.axaml b/src/Views/ConflictDialog.axaml new file mode 100644 index 000000000..783d4d520 --- /dev/null +++ b/src/Views/ConflictDialog.axaml @@ -0,0 +1,54 @@ +<v:ChromelessWindow xmlns="https://github.com/avaloniaui" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:v="using:SourceGit.Views" + mc:Ignorable="d" + x:Class="SourceGit.Views.ConflictDialog" + x:Name="ThisControl" + Icon="/App.ico" + Title="{DynamicResource Text.ConflictDialog.Title}" + Width="420" Height="160" + CanResize="False" + WindowStartupLocation="CenterOwner"> + + <Grid RowDefinitions="Auto,*"> + <!-- Custom title bar --> + <Grid Grid.Row="0" Height="28" IsVisible="{Binding !#ThisControl.UseSystemWindowFrame}"> + <Border Background="{DynamicResource Brush.TitleBar}" + BorderThickness="0,0,0,1" + BorderBrush="{DynamicResource Brush.Border0}" + PointerPressed="BeginMoveWindow"/> + + <Path Width="14" Height="14" + Margin="10,0,0,0" + HorizontalAlignment="Left" + Data="{StaticResource Icons.Warn}"/> + + <TextBlock Classes="bold" + Text="{DynamicResource Text.ConflictDialog.Title}" + HorizontalAlignment="Center" VerticalAlignment="Center" + IsHitTestVisible="False"/> + + <v:CaptionButtons HorizontalAlignment="Right" + IsCloseButtonOnly="True"/> + </Grid> + + <!-- Content --> + <StackPanel Grid.Row="1" Margin="20" Spacing="16" VerticalAlignment="Center"> + <TextBlock x:Name="MessageText" + TextWrapping="Wrap" + FontSize="14" + Foreground="{DynamicResource Brush.FG1}" + Text="{DynamicResource Text.ConflictDialog.Message}" /> + + <Button Width="80" + HorizontalAlignment="Center" + HorizontalContentAlignment="Center" + VerticalContentAlignment="Center" + Classes="primary" + Content="{DynamicResource Text.Sure}" + Click="OnOK"/> + </StackPanel> + </Grid> +</v:ChromelessWindow> diff --git a/src/Views/ConflictDialog.axaml.cs b/src/Views/ConflictDialog.axaml.cs new file mode 100644 index 000000000..8af8b805e --- /dev/null +++ b/src/Views/ConflictDialog.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia.Controls; +using Avalonia.Interactivity; + +namespace SourceGit.Views +{ + public partial class ConflictDialog : ChromelessWindow + { + public ConflictDialog() + { + InitializeComponent(); + } + + private void OnOK(object sender, RoutedEventArgs e) + { + Close(); + } + } +}