enhance: makes Create New Branch option as the default selected mode for adding new worktree

This commit is contained in:
leo 2024-06-28 14:11:13 +08:00
parent db8e534a0a
commit 3e54ab0227
No known key found for this signature in database
3 changed files with 30 additions and 29 deletions

View file

@ -62,7 +62,7 @@ namespace SourceGit.Commands
return worktrees;
}
public bool Add(string fullpath, string name, string tracking, Action<string> outputHandler)
public bool Add(string fullpath, string name, bool createNew, string tracking, Action<string> outputHandler)
{
Args = "worktree add ";
@ -70,7 +70,12 @@ namespace SourceGit.Commands
Args += "--track ";
if (!string.IsNullOrEmpty(name))
Args += $"-B {name} ";
{
if (createNew)
Args += $"-b {name} ";
else
Args += $"-B {name} ";
}
Args += $"\"{fullpath}\" ";

View file

@ -15,17 +15,17 @@ namespace SourceGit.ViewModels
set => SetProperty(ref _path, value);
}
public bool UseExistingBranch
public bool CreateNewBranch
{
get => _useExistingBranch;
get => _createNewBranch;
set
{
if (SetProperty(ref _useExistingBranch, value, true))
if (SetProperty(ref _createNewBranch, value, true))
{
if (value)
SelectedBranch = LocalBranches.Count > 0 ? LocalBranches[0] : string.Empty;
else
SelectedBranch = string.Empty;
else
SelectedBranch = LocalBranches.Count > 0 ? LocalBranches[0] : string.Empty;
}
}
}
@ -74,11 +74,6 @@ namespace SourceGit.ViewModels
RemoteBranches.Add($"{branch.Remote}/{branch.Name}");
}
if (LocalBranches.Count > 0)
SelectedBranch = LocalBranches[0];
else
SelectedBranch = string.Empty;
if (RemoteBranches.Count > 0)
SelectedTrackingBranch = RemoteBranches[0];
else
@ -114,11 +109,12 @@ namespace SourceGit.ViewModels
_repo.SetWatcherEnabled(false);
ProgressDescription = "Adding worktree ...";
var branchName = _selectedBranch;
var tracking = _setTrackingBranch ? SelectedTrackingBranch : string.Empty;
return Task.Run(() =>
{
var succ = new Commands.Worktree(_repo.FullPath).Add(_path, _selectedBranch, tracking, SetProgressDescription);
var succ = new Commands.Worktree(_repo.FullPath).Add(_path, branchName, _createNewBranch, tracking, SetProgressDescription);
CallUIThread(() => _repo.SetWatcherEnabled(true));
return succ;
});
@ -126,7 +122,7 @@ namespace SourceGit.ViewModels
private Repository _repo = null;
private string _path = string.Empty;
private bool _useExistingBranch = true;
private bool _createNewBranch = true;
private string _selectedBranch = string.Empty;
private bool _setTrackingBranch = false;
}

View file

@ -36,25 +36,32 @@
Margin="0,0,8,0"
Text="{DynamicResource Text.AddWorktree.WhatToCheckout}"/>
<StackPanel Grid.Row="1" Grid.Column="1" Height="32" Orientation="Horizontal">
<RadioButton Content="{DynamicResource Text.AddWorktree.WhatToCheckout.Existing}"
GroupName="LocalChanges"
IsChecked="{Binding UseExistingBranch, Mode=TwoWay}" />
<RadioButton Content="{DynamicResource Text.AddWorktree.WhatToCheckout.CreateNew}"
GroupName="LocalChanges"
Margin="8,0,0,0" />
GroupName="WhatToCheckout"
IsChecked="{Binding CreateNewBranch, Mode=TwoWay}"/>
<RadioButton Content="{DynamicResource Text.AddWorktree.WhatToCheckout.Existing}"
GroupName="WhatToCheckout"
Margin="8,0,0,0"/>
</StackPanel>
<TextBlock Grid.Row="2" Grid.Column="0"
HorizontalAlignment="Right" VerticalAlignment="Center"
Margin="0,0,8,0"
Text="{DynamicResource Text.AddWorktree.Name}"/>
<TextBox Grid.Row="2" Grid.Column="1"
Height="28"
CornerRadius="3"
Text="{Binding SelectedBranch, Mode=TwoWay}"
Watermark="{DynamicResource Text.AddWorktree.Name.Placeholder}"
IsEnabled="{Binding CreateNewBranch, Mode=OneWay}"
IsVisible="{Binding CreateNewBranch, Mode=OneWay}"/>
<ComboBox Grid.Row="2" Grid.Column="1"
Height="28" Padding="8,0"
VerticalAlignment="Center" HorizontalAlignment="Stretch"
ItemsSource="{Binding LocalBranches}"
SelectedItem="{Binding SelectedBranch, Mode=TwoWay}"
IsEnabled="{Binding UseExistingBranch, Mode=OneWay}"
IsVisible="{Binding UseExistingBranch, Mode=OneWay}">
IsEnabled="{Binding !CreateNewBranch, Mode=OneWay}"
IsVisible="{Binding !CreateNewBranch, Mode=OneWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="20" VerticalAlignment="Center">
@ -64,13 +71,6 @@
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBox Grid.Row="2" Grid.Column="1"
Height="28"
CornerRadius="3"
Text="{Binding SelectedBranch, Mode=TwoWay}"
Watermark="{DynamicResource Text.AddWorktree.Name.Placeholder}"
IsEnabled="{Binding !UseExistingBranch, Mode=OneWay}"
IsVisible="{Binding !UseExistingBranch, Mode=OneWay}"/>
<Border Grid.Row="3" Grid.Column="0"
Height="32"