feature<FileHistory>: add button to use selected revision of file

This commit is contained in:
leo 2023-08-18 14:13:32 +08:00
parent 9d6ac9c449
commit 7e1b1d7324
5 changed files with 44 additions and 1 deletions

View file

@ -37,6 +37,11 @@ namespace SourceGit.Commands {
return Exec();
}
public bool FileWithRevision(string file, string revision) {
Args = $"checkout {revision} -- \"{file}\"";
return Exec();
}
public bool Files(List<string> files) {
StringBuilder builder = new StringBuilder();
builder.Append("checkout -f -q --");

View file

@ -259,6 +259,7 @@
<sys:String x:Key="Text.Fetch.Prune">Prune remote dead branches</sys:String>
<sys:String x:Key="Text.FileHistory">File History</sys:String>
<sys:String x:Key="Text.FileHistory.UseThisVersion">USE THIS VERSION</sys:String>
<sys:String x:Key="Text.ChangeDisplayMode">CHANGE DISPLAY MODE</sys:String>
<sys:String x:Key="Text.ChangeDisplayMode.Grid">Show as Grid</sys:String>

View file

@ -258,6 +258,7 @@
<sys:String x:Key="Text.Fetch.Prune">自动清理远程已删除分支</sys:String>
<sys:String x:Key="Text.FileHistory">文件历史</sys:String>
<sys:String x:Key="Text.FileHistory.UseThisVersion">使用该版本</sys:String>
<sys:String x:Key="Text.ChangeDisplayMode">切换变更显示模式</sys:String>
<sys:String x:Key="Text.ChangeDisplayMode.Grid">网格模式</sys:String>

View file

@ -131,7 +131,24 @@
<GridSplitter Grid.Column="1" Width="1" HorizontalAlignment="Center" VerticalAlignment="Stretch" Background="Transparent"/>
<!-- Diff Viewer -->
<widgets:DiffViewer Grid.Column="2" x:Name="diffViewer" Padding="4"/>
<Grid Grid.Column="2" Margin="4,4,4,0">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="36"/>
</Grid.RowDefinitions>
<widgets:DiffViewer Grid.Row="0" x:Name="diffViewer" />
<Button
Grid.Row="1"
Height="30"
Padding="8,0"
FontWeight="Bold"
HorizontalAlignment="Center" VerticalAlignment="Center"
Background="{DynamicResource Brush.Accent1}"
Content="{DynamicResource Text.FileHistory.UseThisVersion}"
Click="UseSelectedVersion"/>
</Grid>
</Grid>
</Grid>
</controls:Window>

View file

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
@ -60,6 +61,24 @@ namespace SourceGit.Views {
Models.Watcher.Get(repo).NavigateTo(e.Uri.OriginalString);
e.Handled = true;
}
private async void UseSelectedVersion(object sender, RoutedEventArgs e) {
var commit = commitList.SelectedItem as Models.Commit;
if (commit == null) return;
loading.IsAnimating = true;
loading.Visibility = Visibility.Visible;
await Task.Run(() => {
Models.Watcher.SetEnabled(repo, false);
new Commands.Checkout(repo).FileWithRevision(file, commit.SHA);
Models.Watcher.SetEnabled(repo, true);
});
loading.IsAnimating = false;
loading.Visibility = Visibility.Collapsed;
e.Handled = true;
}
#endregion
}
}