enhance: Git LFS supports (#209)

* add a new context menu to push local LFS object to selected remote
* supports to choose remote for fetch/pull/push/lock/unlock actions
* auto select remote if there's only one remote
This commit is contained in:
leo 2024-06-26 11:49:56 +08:00
parent f18ecf53eb
commit 0c21bcd06a
No known key found for this signature in database
14 changed files with 359 additions and 59 deletions

37
src/ViewModels/LFSPush.cs Normal file
View file

@ -0,0 +1,37 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace SourceGit.ViewModels
{
public class LFSPush : Popup
{
public List<Models.Remote> Remotes => _repo.Remotes;
public Models.Remote SelectedRemote
{
get;
set;
}
public LFSPush(Repository repo)
{
_repo = repo;
SelectedRemote = _repo.Remotes[0];
View = new Views.LFSPush() { DataContext = this };
}
public override Task<bool> Sure()
{
_repo.SetWatcherEnabled(false);
ProgressDescription = $"Push LFS objects to remote ...";
return Task.Run(() =>
{
new Commands.LFS(_repo.FullPath).Push(SelectedRemote.Name, SetProgressDescription);
CallUIThread(() => _repo.SetWatcherEnabled(true));
return true;
});
}
private readonly Repository _repo = null;
}
}