mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-22 04:34:59 +00:00
feature(Submodule): supports git submodule
This commit is contained in:
parent
789231fdc4
commit
0132fc496b
8 changed files with 359 additions and 13 deletions
|
@ -55,7 +55,8 @@ namespace SourceGit.UI {
|
|||
opened.OnTagChanged = UpdateTags;
|
||||
opened.OnStashChanged = UpdateStashes;
|
||||
opened.OnBranchChanged = () => UpdateBranches(false);
|
||||
opened.OnCommitsChanged = UpdateHistories;
|
||||
opened.OnCommitsChanged = UpdateHistories;
|
||||
opened.OnSubmoduleChanged = UpdateSubmodules;
|
||||
opened.OnNavigateCommit = commit => {
|
||||
Dispatcher.Invoke(() => {
|
||||
workspace.SelectedItem = historiesSwitch;
|
||||
|
@ -70,11 +71,19 @@ namespace SourceGit.UI {
|
|||
histories.Repo = opened;
|
||||
commits.Repo = opened;
|
||||
|
||||
if (repo.Parent != null) {
|
||||
btnParent.Visibility = Visibility.Visible;
|
||||
txtParent.Content = repo.Parent.Name;
|
||||
} else {
|
||||
btnParent.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
UpdateBranches();
|
||||
UpdateHistories();
|
||||
UpdateLocalChanges();
|
||||
UpdateStashes();
|
||||
UpdateTags();
|
||||
UpdateSubmodules();
|
||||
}
|
||||
|
||||
#region DATA_UPDATE
|
||||
|
@ -270,6 +279,16 @@ namespace SourceGit.UI {
|
|||
});
|
||||
}
|
||||
|
||||
private void UpdateSubmodules() {
|
||||
Task.Run(() => {
|
||||
var submodules = repo.Submodules();
|
||||
Dispatcher.Invoke(() => {
|
||||
submoduleCount.Content = $"SUBMODULES ({submodules.Count})";
|
||||
submoduleList.ItemsSource = submodules;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private void Cleanup(object sender, RoutedEventArgs e) {
|
||||
localBranchTree.ItemsSource = null;
|
||||
remoteBranchTree.ItemsSource = null;
|
||||
|
@ -290,6 +309,12 @@ namespace SourceGit.UI {
|
|||
repo.Close();
|
||||
}
|
||||
|
||||
private void GotoParent(object sender, RoutedEventArgs e) {
|
||||
if (repo.Parent == null) return;
|
||||
repo.Parent.Open();
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private void OpenFetch(object sender, RoutedEventArgs e) {
|
||||
Fetch.Show(repo);
|
||||
}
|
||||
|
@ -897,6 +922,58 @@ namespace SourceGit.UI {
|
|||
}
|
||||
#endregion
|
||||
|
||||
#region SUBMODULES
|
||||
private void OpenAddSubmodule(object sender, RoutedEventArgs e) {
|
||||
AddSubmodule.Show(repo);
|
||||
}
|
||||
|
||||
private void SubmoduleLostFocus(object sender, RoutedEventArgs e) {
|
||||
(sender as DataGrid).UnselectAll();
|
||||
}
|
||||
|
||||
private void SubmoduleContextMenuOpening(object sender, ContextMenuEventArgs e) {
|
||||
var path = (sender as DataGrid).SelectedItem as string;
|
||||
if (path == null) return;
|
||||
|
||||
var open = new MenuItem();
|
||||
open.Header = "Open Submodule Repository";
|
||||
open.Click += (o, ev) => {
|
||||
var sub = new Git.Repository();
|
||||
sub.Path = Path.Combine(repo.Path, path);
|
||||
sub.Name = Path.GetFileName(path);
|
||||
sub.Parent = repo;
|
||||
sub.Open();
|
||||
|
||||
ev.Handled = true;
|
||||
};
|
||||
|
||||
var copy = new MenuItem();
|
||||
copy.Header = "Copy Relative Path";
|
||||
copy.Click += (o, ev) => {
|
||||
Clipboard.SetText(path);
|
||||
ev.Handled = true;
|
||||
};
|
||||
|
||||
var menu = new ContextMenu();
|
||||
menu.Items.Add(open);
|
||||
menu.Items.Add(copy);
|
||||
menu.IsOpen = true;
|
||||
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private void SubmoduleMouseDoubleClick(object sender, MouseButtonEventArgs e) {
|
||||
var path = (sender as DataGridRow).DataContext as string;
|
||||
if (path == null) return;
|
||||
|
||||
var sub = new Git.Repository();
|
||||
sub.Path = Path.Combine(repo.Path, path);
|
||||
sub.Name = Path.GetFileName(path);
|
||||
sub.Parent = repo;
|
||||
sub.Open();
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region TREES
|
||||
private TreeViewItem FindTreeViewItem(ItemsControl item, BranchNode node) {
|
||||
if (item == null) return null;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue