Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/Resources/Locales/de_DE.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,8 @@
<x:String x:Key="Text.Push.Revision.Title" xml:space="preserve">Revision zu Remote-Branch pushen</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">Push</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">Remote-Branch:</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">Benutzerdefinierten Branch-Namen verwenden</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">Benutzerdefinierten Branch-Namen eingeben...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">Remote-Branch verfolgen</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">Alle Tags pushen</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">Tag zum Remote pushen</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/en_US.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,8 @@
<x:String x:Key="Text.Push.Revision.Title" xml:space="preserve">Push Revision To Remote</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">Push Changes To Remote</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">Remote Branch:</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">Use custom branch name</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">Enter custom branch name...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">Set as tracking branch</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">Push all tags</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">Push Tag To Remote</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/es_ES.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -635,6 +635,8 @@
<x:String x:Key="Text.Push.Revision.Title" xml:space="preserve">Push Revisión al Remoto</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">Push Cambios al Remoto</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">Rama Remota:</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">Usar nombre de rama personalizado</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">Ingrese nombre de rama personalizado...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">Establecer como rama de seguimiento</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">Push todas las etiquetas</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">Push Etiqueta al Remoto</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/fr_FR.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -498,6 +498,8 @@
<x:String x:Key="Text.Push.Remote" xml:space="preserve">Dépôt distant :</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">Pousser les changements vers le dépôt distant</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">Branche distante :</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">Utiliser un nom de branche personnalisé</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">Saisir un nom de branche personnalisé...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">Définir comme branche de suivi</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">Pousser tous les tags</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">Pousser les tags vers le dépôt distant</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/it_IT.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,8 @@
<x:String x:Key="Text.Push.Revision.Title" xml:space="preserve">Invia Revisione Al Remoto</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">Invia modifiche al remoto</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">Branch Remoto:</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">Usa nome branch personalizzato</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">Inserisci nome branch personalizzato...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">Imposta come branch di tracciamento</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">Invia tutti i tag</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">Invia Tag al Remoto</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/ja_JP.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -497,6 +497,8 @@
<x:String x:Key="Text.Push.Remote" xml:space="preserve">リモート:</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">変更をリモートにプッシュ</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">リモート ブランチ:</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">カスタムブランチ名を使用</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">カスタムブランチ名を入力...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">追跡ブランチとして設定</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">すべてのタグをプッシュ</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">リモートにタグをプッシュ</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/pt_BR.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -457,6 +457,8 @@
<x:String x:Key="Text.Push.Remote" xml:space="preserve">Remoto:</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">Empurrar Alterações para o Remoto</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">Branch Remoto:</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">Usar nome de branch personalizado</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">Digite o nome do branch personalizado...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">Definir como branch de rastreamento</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">Empurrar todas as tags</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">Empurrar Tag para o Remoto</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/ru_RU.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -635,6 +635,8 @@
<x:String x:Key="Text.Push.Revision.Title" xml:space="preserve">Выложить ревизию на удалёную</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">Выложить изменения на внешний репозиторий</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">Ветка внешнего репозитория:</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">Использовать пользовательское имя ветки</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">Введите пользовательское имя ветки...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">Отслеживать ветку</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">Выложить все метки</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">Выложить метку на внешний репозиторий</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/ta_IN.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -497,6 +497,8 @@
<x:String x:Key="Text.Push.Remote" xml:space="preserve">தொலை:</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">மாற்றங்களை தொலைக்கு தள்ளு</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">தொலை கிளை:</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">தனிப்பயன் கிளைப் பெயரைப் பயன்படுத்து</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">தனிப்பயன் கிளைப் பெயரை உள்ளிடவும்...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">கண்காணிப்பு கிளையாக அமை</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">அனைத்து குறிச்சொற்களையும் தள்ளு</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">தொலைக்கு குறிச்சொல்லை தள்ளு</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/uk_UA.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,8 @@
<x:String x:Key="Text.Push.Remote" xml:space="preserve">Віддалене сховище:</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">Надіслати зміни на віддалене сховище</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">Віддалена гілка:</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">Використовувати користувацьку назву гілки</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">Введіть користувацьку назву гілки...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">Встановити як відстежувану гілку</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">Надіслати всі теги</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">Надіслати тег на віддалене сховище</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/zh_CN.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -635,6 +635,8 @@
<x:String x:Key="Text.Push.Revision.Title" xml:space="preserve">推送指定修订到远程仓库</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">推送到远程仓库</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">远程分支 :</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">使用自定义分支名称</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">输入自定义分支名称...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">跟踪远程分支</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">同时推送标签</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">推送标签到远程仓库</x:String>
Expand Down
2 changes: 2 additions & 0 deletions src/Resources/Locales/zh_TW.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -635,6 +635,8 @@
<x:String x:Key="Text.Push.Revision.Title" xml:space="preserve">推送修訂到遠端存放庫</x:String>
<x:String x:Key="Text.Push.Title" xml:space="preserve">推送到遠端存放庫</x:String>
<x:String x:Key="Text.Push.To" xml:space="preserve">遠端分支:</x:String>
<x:String x:Key="Text.Push.To.CustomBranch" xml:space="preserve">使用自訂分支名稱</x:String>
<x:String x:Key="Text.Push.To.CustomBranch.Placeholder" xml:space="preserve">輸入自訂分支名稱...</x:String>
<x:String x:Key="Text.Push.Tracking" xml:space="preserve">追蹤遠端分支</x:String>
<x:String x:Key="Text.Push.WithAllTags" xml:space="preserve">同時推送標籤</x:String>
<x:String x:Key="Text.PushTag" xml:space="preserve">推送標籤到遠端存放庫</x:String>
Expand Down
75 changes: 69 additions & 6 deletions src/ViewModels/Push.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,66 @@ public Models.Branch SelectedRemoteBranch
set
{
if (SetProperty(ref _selectedRemoteBranch, value, true))
{
if (value != null)
{
CustomRemoteBranchName = value.Name;
}

IsSetTrackOptionVisible = value != null && _selectedLocalBranch.Upstream != value.FullName;
}
}
}

[Required(ErrorMessage = "Remote branch name is required!!!")]
public string CustomRemoteBranchName
{
get => _customRemoteBranchName;
set
{
if (SetProperty(ref _customRemoteBranchName, value, true))
{
if (UseCustomBranchName)
{
var expectedUpstream = $"refs/remotes/{_selectedRemote.Name}/{value}";
IsSetTrackOptionVisible = !string.IsNullOrEmpty(value) &&
_selectedLocalBranch.Upstream != expectedUpstream;
}
}
}
}

public bool UseCustomBranchName
{
get => _useCustomBranchName;
set
{
if (SetProperty(ref _useCustomBranchName, value))
{
if (value)
{
// When switching to custom mode, pre-fill with the selected branch name if available
if (_selectedRemoteBranch != null && string.IsNullOrEmpty(_customRemoteBranchName))
_customRemoteBranchName = _selectedRemoteBranch.Name;

// Update tracking visibility for custom branch
if (_selectedLocalBranch != null && _selectedRemote != null && !string.IsNullOrEmpty(_customRemoteBranchName))
{
var expectedUpstream = $"refs/remotes/{_selectedRemote.Name}/{_customRemoteBranchName}";
IsSetTrackOptionVisible = _selectedLocalBranch.Upstream != expectedUpstream;
}
}
else
{
// When switching back to dropdown, update tracking visibility based on selected branch
if (_selectedRemoteBranch != null)
{
IsSetTrackOptionVisible =
_selectedRemoteBranch != null &&
_selectedLocalBranch.Upstream != _selectedRemoteBranch.FullName;
}
}
}
}
}

Expand Down Expand Up @@ -155,14 +214,20 @@ public Push(Repository repo, Models.Branch localBranch)

public override bool CanStartDirectly()
{
if (UseCustomBranchName)
return !string.IsNullOrEmpty(_customRemoteBranchName);

return !string.IsNullOrEmpty(_selectedRemoteBranch?.Head);
}

public override async Task<bool> Sure()
{
using var lockWatcher = _repo.LockWatcher();

var remoteBranchName = _selectedRemoteBranch.Name;
var remoteBranchName =
UseCustomBranchName ?
_customRemoteBranchName :
_selectedRemoteBranch.Name;
ProgressDescription = $"Push {_selectedLocalBranch.Name} -> {_selectedRemote.Name}/{remoteBranchName} ...";

var log = _repo.CreateLog("Push");
Expand Down Expand Up @@ -218,11 +283,7 @@ private void AutoSelectBranchByRemote()
}

// Add a fake new branch.
var fake = new Models.Branch()
{
Name = _selectedLocalBranch.Name,
Remote = _selectedRemote.Name,
};
var fake = new Models.Branch { Name = _selectedLocalBranch.Name, Remote = _selectedRemote.Name };
branches.Add(fake);
RemoteBranches = branches;
SelectedRemoteBranch = fake;
Expand All @@ -233,6 +294,8 @@ private void AutoSelectBranchByRemote()
private Models.Remote _selectedRemote = null;
private List<Models.Branch> _remoteBranches = [];
private Models.Branch _selectedRemoteBranch = null;
private string _customRemoteBranchName = string.Empty;
private bool _useCustomBranchName = false;
private bool _isSetTrackOptionVisible = false;
}
}
Loading