Skip to content

Commit 32fdfb3

Browse files
committed
Fix #16 (rever endless loop) and #4
1 parent c132355 commit 32fdfb3

File tree

3 files changed

+67
-40
lines changed

3 files changed

+67
-40
lines changed

src/Helpers/RepoInfo.cs

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,33 @@ internal class RepoInfo
1414
internal void FindGitFolder(string path, out string foundPath)
1515
{
1616
foundPath = null;
17-
18-
while (!Directory.Exists(Path.Combine(path, ".git")))
17+
// Check if the current directory contains a .git folder
18+
if (Directory.Exists(Path.Combine(path, ".git")))
1919
{
20-
path = Path.GetFullPath(Path.Combine(path, ".."));
20+
foundPath = path;
21+
var repo = new LibGit2Sharp.Repository(foundPath);
22+
var remote = repo.Network.Remotes.FirstOrDefault();
23+
if (remote is not null)
24+
{
25+
var url = remote.Url;
26+
if (url.Contains("github.com"))
27+
{
28+
IsGitHub = true;
29+
var parts = url.Split('/');
30+
RepoOwner = parts[parts.Length - 2];
31+
RepoName = parts[parts.Length - 1].Replace(".git", "");
32+
RepoUrl = url.Replace(".git", "");
33+
CurrentBranch = repo.Head.FriendlyName;
34+
}
35+
}
36+
return;
2137
}
22-
foundPath = path;
23-
var repo = new LibGit2Sharp.Repository(foundPath);
24-
var remote = repo.Network.Remotes.FirstOrDefault();
25-
if (remote is not null)
38+
else
2639
{
27-
var url = remote.Url;
28-
if (url.Contains("github.com"))
40+
string parentPath = Directory.GetParent(path)?.FullName;
41+
if (!string.IsNullOrEmpty(parentPath))
2942
{
30-
IsGitHub = true;
31-
var parts = url.Split('/');
32-
RepoOwner = parts[parts.Length - 2];
33-
RepoName = parts[parts.Length - 1].Replace(".git", "");
34-
RepoUrl = url.Replace(".git", "");
35-
CurrentBranch = repo.Head.FriendlyName;
43+
FindGitFolder(parentPath, out foundPath); // Recursively search the parent directory
3644
}
3745
}
3846
return;

src/ToolWindows/GHActionsToolWindow.xaml

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -58,30 +58,30 @@
5858
<RowDefinition Height="*" />
5959
</Grid.RowDefinitions>
6060
<ProgressBar x:Name="refreshProgress" Height="5" Grid.Row="0" Visibility="Collapsed" />
61-
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Grid.Row="1" Margin="5,5,0,0">
62-
<StackPanel Orientation="Vertical">
63-
<Expander Header="Current Branch" x:Name="CurrentBranchExpander">
64-
<TreeView BorderThickness="0" PreviewMouseWheel="HandlePreviewMouseWheel" MouseDoubleClick="JobItem_MouseDoubleClick" x:Name="tvCurrentBranch" ItemTemplate="{DynamicResource TreeViewRunNodeDataTemplate}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
65-
<TreeView.Resources>
66-
<Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource {x:Type TreeViewItem}}">
67-
<EventSetter Event="MouseDoubleClick" Handler="JobItem_MouseDoubleClick"/>
68-
</Style>
69-
</TreeView.Resources>
70-
</TreeView>
71-
</Expander>
72-
<!--<Expander Header="Workflows">
73-
<TreeView x:Name="tvWorkflows" BorderThickness="0"/>
74-
</Expander>-->
75-
<Expander Header="Settings">
76-
<TreeView BorderThickness="0">
77-
<TreeViewItem Header="Environments" HeaderTemplate="{DynamicResource EnvironmentHeaderTemplate}" x:Name="tvEnvironments" />
78-
<TreeViewItem Header="Secrets" HeaderTemplate="{DynamicResource SecretsHeaderTemplate}">
79-
<TreeViewItem Header="Repository Secrets" x:Name="tvSecrets"/>
80-
</TreeViewItem>
81-
<TreeViewItem Header="Variables" HeaderTemplate="{DynamicResource VariablesHeaderTemplate}"/>
82-
</TreeView>
83-
</Expander>
84-
</StackPanel>
85-
</ScrollViewer>
61+
<StackPanel Grid.Row="1">
62+
<TextBlock HorizontalAlignment="Center" x:Name="MessageArea" />
63+
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Margin="5,5,0,0" x:Name="ActionsInfoPanel" Visibility="Collapsed">
64+
<StackPanel Orientation="Vertical">
65+
<Expander Header="Current Branch" x:Name="CurrentBranchExpander">
66+
<TreeView BorderThickness="0" PreviewMouseWheel="HandlePreviewMouseWheel" MouseDoubleClick="JobItem_MouseDoubleClick" x:Name="tvCurrentBranch" ItemTemplate="{DynamicResource TreeViewRunNodeDataTemplate}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch">
67+
<TreeView.Resources>
68+
<Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource {x:Type TreeViewItem}}">
69+
<EventSetter Event="MouseDoubleClick" Handler="JobItem_MouseDoubleClick"/>
70+
</Style>
71+
</TreeView.Resources>
72+
</TreeView>
73+
</Expander>
74+
<Expander Header="Settings">
75+
<TreeView BorderThickness="0">
76+
<TreeViewItem Header="Environments" HeaderTemplate="{DynamicResource EnvironmentHeaderTemplate}" x:Name="tvEnvironments" />
77+
<TreeViewItem Header="Secrets" HeaderTemplate="{DynamicResource SecretsHeaderTemplate}">
78+
<TreeViewItem Header="Repository Secrets" x:Name="tvSecrets"/>
79+
</TreeViewItem>
80+
<TreeViewItem Header="Variables" HeaderTemplate="{DynamicResource VariablesHeaderTemplate}"/>
81+
</TreeView>
82+
</Expander>
83+
</StackPanel>
84+
</ScrollViewer>
85+
</StackPanel>
8686
</Grid>
8787
</UserControl>

src/ToolWindows/GHActionsToolWindow.xaml.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ private Task GotoRepoAsync()
5858
public async Task GetRepoInfoAsync()
5959
{
6060
ClearTreeViews();
61+
_repoInfo.RepoOwner = null;
62+
_repoInfo.RepoName = null;
63+
_repoInfo.IsGitHub = false;
64+
_repoInfo.RepoUrl = null;
6165

6266
// find the git folder
6367
var solution = await VS.Solutions.GetCurrentSolutionAsync();
@@ -68,6 +72,7 @@ public async Task GetRepoInfoAsync()
6872
if (string.IsNullOrWhiteSpace(gitPath))
6973
{
7074
Debug.WriteLine("No git repo found");
75+
ShowInfoMessage("No git repo found");
7176
}
7277
else
7378
{
@@ -80,10 +85,22 @@ public async Task GetRepoInfoAsync()
8085
else
8186
{
8287
Debug.WriteLine("Not a GitHub repo");
88+
ShowInfoMessage("Repo found, but not a github.com");
8389
}
8490
}
8591
}
8692

93+
private void ShowInfoMessage(string messageString)
94+
{
95+
ThreadHelper.JoinableTaskFactory.Run(async () =>
96+
{
97+
await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
98+
MessageArea.Text = messageString;
99+
MessageArea.Visibility = Visibility.Visible;
100+
ActionsInfoPanel.Visibility = Visibility.Collapsed;
101+
});
102+
}
103+
87104
private void ClearTreeViews()
88105
{
89106
tvSecrets.Items.Clear();
@@ -95,6 +112,8 @@ private void ClearTreeViews()
95112

96113
private async Task LoadDataAsync()
97114
{
115+
MessageArea.Visibility = Visibility.Collapsed;
116+
ActionsInfoPanel.Visibility = Visibility.Visible;
98117

99118
// get the settings
100119
var generalSettings = await ExtensionOptions.GetLiveInstanceAsync();

0 commit comments

Comments
 (0)