mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-10-31 13:03:20 -07:00
refactor: use git update-ref $LOCAL_BRANCH $REMOTE_BRANCH
instead of git fetch $REMOTE $LOCAL_BRANCH $REMOTE_BRANCH
to fast-forward local branch without checkout it first.
This commit is contained in:
parent
00a2ec5abe
commit
3b1a54dffd
3 changed files with 24 additions and 11 deletions
|
@ -24,16 +24,6 @@ namespace SourceGit.Commands
|
||||||
Args += remote;
|
Args += remote;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Fetch(string repo, string remote, string localBranch, string remoteBranch, Action<string> outputHandler)
|
|
||||||
{
|
|
||||||
_outputHandler = outputHandler;
|
|
||||||
WorkingDirectory = repo;
|
|
||||||
Context = repo;
|
|
||||||
TraitErrorAsOutput = true;
|
|
||||||
SSHKey = new Config(repo).Get($"remote.{remote}.sshkey");
|
|
||||||
Args = $"fetch --progress --verbose {remote} {remoteBranch}:{localBranch}";
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnReadline(string line)
|
protected override void OnReadline(string line)
|
||||||
{
|
{
|
||||||
_outputHandler?.Invoke(line);
|
_outputHandler?.Invoke(line);
|
||||||
|
|
23
src/Commands/UpdateRef.cs
Normal file
23
src/Commands/UpdateRef.cs
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace SourceGit.Commands
|
||||||
|
{
|
||||||
|
public class UpdateRef : Command
|
||||||
|
{
|
||||||
|
public UpdateRef(string repo, string refName, string toRevision, Action<string> outputHandler)
|
||||||
|
{
|
||||||
|
_outputHandler = outputHandler;
|
||||||
|
|
||||||
|
WorkingDirectory = repo;
|
||||||
|
Context = repo;
|
||||||
|
Args = $"update-ref {refName} {toRevision}";
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnReadline(string line)
|
||||||
|
{
|
||||||
|
_outputHandler?.Invoke(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Action<string> _outputHandler;
|
||||||
|
}
|
||||||
|
}
|
|
@ -31,7 +31,7 @@ namespace SourceGit.ViewModels
|
||||||
|
|
||||||
return Task.Run(() =>
|
return Task.Run(() =>
|
||||||
{
|
{
|
||||||
new Commands.Fetch(_repo.FullPath, To.Remote, Local.Name, To.Name, SetProgressDescription).Exec();
|
new Commands.UpdateRef(_repo.FullPath, Local.FullName, To.FullName, SetProgressDescription).Exec();
|
||||||
CallUIThread(() => _repo.SetWatcherEnabled(true));
|
CallUIThread(() => _repo.SetWatcherEnabled(true));
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue