mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-06-03 10:04:59 +00:00
refactor<*>: rewrite all codes...
This commit is contained in:
parent
89ff8aa744
commit
30ab8ae954
342 changed files with 17208 additions and 19633 deletions
108
src/Views/Popups/Push.xaml.cs
Normal file
108
src/Views/Popups/Push.xaml.cs
Normal file
|
@ -0,0 +1,108 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace SourceGit.Views.Popups {
|
||||
/// <summary>
|
||||
/// 推送
|
||||
/// </summary>
|
||||
public partial class Push : Controls.PopupWidget {
|
||||
private Models.Repository repo = null;
|
||||
|
||||
public Push(Models.Repository repo, Models.Branch localBranch) {
|
||||
this.repo = repo;
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
var localBranches = repo.Branches.Where(x => x.IsLocal).ToList();
|
||||
cmbLocalBranches.ItemsSource = localBranches;
|
||||
if (localBranch != null) cmbLocalBranches.SelectedItem = localBranch;
|
||||
else cmbLocalBranches.SelectedItem = localBranches.Find(x => x.IsCurrent);
|
||||
}
|
||||
|
||||
public override string GetTitle() {
|
||||
return App.Text("Push.Title");
|
||||
}
|
||||
|
||||
public override Task<bool> Start() {
|
||||
var localBranch = cmbLocalBranches.SelectedItem as Models.Branch;
|
||||
if (localBranch == null) return null;
|
||||
|
||||
var remoteBranch = cmbRemoteBranches.SelectedItem as Models.Branch;
|
||||
if (remoteBranch == null) return null;
|
||||
|
||||
var withTags = chkAllTags.IsChecked == true;
|
||||
var force = chkForce.IsChecked == true;
|
||||
var track = string.IsNullOrEmpty(localBranch.Upstream);
|
||||
|
||||
return Task.Run(() => {
|
||||
Models.Watcher.SetEnabled(repo.Path, false);
|
||||
var succ = new Commands.Push(
|
||||
repo.Path,
|
||||
localBranch.Name,
|
||||
remoteBranch.Remote,
|
||||
remoteBranch.Name.Replace(" (new)", ""),
|
||||
withTags,
|
||||
force,
|
||||
track,
|
||||
UpdateProgress).Exec();
|
||||
Models.Watcher.SetEnabled(repo.Path, true);
|
||||
return succ;
|
||||
});
|
||||
}
|
||||
|
||||
private void OnLocalSelectionChanged(object sender, SelectionChangedEventArgs e) {
|
||||
var local = cmbLocalBranches.SelectedItem as Models.Branch;
|
||||
if (local == null) return;
|
||||
|
||||
cmbRemotes.ItemsSource = null;
|
||||
cmbRemotes.ItemsSource = repo.Remotes;
|
||||
|
||||
if (!string.IsNullOrEmpty(local.Upstream)) {
|
||||
cmbRemotes.SelectedItem = repo.Remotes.Find(x => local.Upstream.StartsWith($"refs/remotes/{x.Name}/"));
|
||||
} else {
|
||||
cmbRemotes.SelectedItem = repo.Remotes[0];
|
||||
}
|
||||
}
|
||||
|
||||
private void OnRemoteSelectionChanged(object sender, SelectionChangedEventArgs e) {
|
||||
var local = cmbLocalBranches.SelectedItem as Models.Branch;
|
||||
if (local == null) return;
|
||||
|
||||
var remote = cmbRemotes.SelectedItem as Models.Remote;
|
||||
if (remote == null) return;
|
||||
|
||||
var remoteBranches = new List<Models.Branch>();
|
||||
remoteBranches.AddRange(repo.Branches.Where(x => x.Remote == remote.Name));
|
||||
cmbRemoteBranches.ItemsSource = null;
|
||||
|
||||
if (!string.IsNullOrEmpty(local.Upstream)) {
|
||||
foreach (var b in remoteBranches) {
|
||||
if (b.FullName == local.Upstream) {
|
||||
cmbRemoteBranches.ItemsSource = remoteBranches;
|
||||
cmbRemoteBranches.SelectedItem = b;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var match = $"refs/remotes/{remote.Name}/{local.Name}";
|
||||
foreach (var b in remoteBranches) {
|
||||
if (b.FullName == match) {
|
||||
cmbRemoteBranches.ItemsSource = remoteBranches;
|
||||
cmbRemoteBranches.SelectedItem = b;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var prefer = new Models.Branch() {
|
||||
Remote = remote.Name,
|
||||
Name = $"{local.Name} (new)"
|
||||
};
|
||||
remoteBranches.Add(prefer);
|
||||
cmbRemoteBranches.ItemsSource = remoteBranches;
|
||||
cmbRemoteBranches.SelectedItem = prefer;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue