-
Notifications
You must be signed in to change notification settings - Fork 301
.gitignore lines with just a space cause IndexOutOfRangeException on 'azds up' command #387
Description
Hello! I've run into an issue with using a .gitignore file with the 'azds up' command.
If there is a line in the .gitignore file with just a space, the command will fail with the folowing message:
PS C:\code\DS\DsWebApp> azds up
Using dev space 'default' with controller 'aks-devspace-cluster-name'
Synchronizing files...2s
Oops... An unexpected error has occurred. A report of the error will be sent to Microsoft.
For diagnostic information, see Azure Dev Spaces logs at 'C:\Users\abcd\AppData\Local\Temp\Azure Dev Spaces'.
Please include the following Request ID when contacting support: <GUID HERE>
Digging through the referenced log files, I found this exception:
{
"ClassName":"System.IndexOutOfRangeException",
"Message":"Index was outside the bounds of the array.",
"Data":null,
"InnerException":null,
"HelpURL":null,
"StackTraceString":"
at System.String.get_Chars(Int32 index)
at GitSharp.GitIgnoreRules.BuildRule(String line, String workingDirectory) in C:\\A\\_work\\38\\s\\src\\client\\Sync\\IgnoreRules\\GitIgnoreRules.cs:line 207
at GitSharp.GitIgnoreRules.BuildRules(IEnumerable`1 lines, String workingDirectory) in C:\\A\\_work\\38\\s\\src\\client\\Sync\\IgnoreRules\\GitIgnoreRules.cs:line 160
at GitSharp.GitIgnoreRules.ParseGitignoreFile(String gitignorePath) in C:\\A\\_work\\38\\s\\src\\client\\Sync\\IgnoreRules\\GitIgnoreRules.cs:line 148
at GitSharp.GitIgnoreRules.Load() in C:\\A\\_work\\38\\s\\src\\client\\Sync\\IgnoreRules\\GitIgnoreRules.cs:line 92
at Microsoft.Azure.DevSpaces.Client.Sync.IgnoreRulesFactory.<>c.<Create>b__7_0(IIgnoreRules r) in C:\\A\\_work\\38\\s\\src\\client\\Sync\\IgnoreRules\\IgnoreRulesFactory.cs:line 54
at System.Collections.Generic.IEnumerableExtensions.ExecuteForEach[T](IEnumerable`1 items, Action`1 action, CancellationToken cancellationToken) in C:\\A\\_work\\38\\s\\src\\common\\Extensions\\IEnumerableExtensions.cs:line 20
at Microsoft.Azure.DevSpaces.Client.Sync.IgnoreRulesFactory.Create(String gitLocalFullPath) in C:\\A\\_work\\38\\s\\src\\client\\Sync\\IgnoreRules\\IgnoreRulesFactory.cs:line 56
at Microsoft.Azure.DevSpaces.Client.Sync.Workspace.WorkspaceSync.LoadIgnoreRules(String localFullPath) in C:\\A\\_work\\38\\s\\src\\client\\Sync\\Workspace\\WorkspaceSync.cs:line 386
at Microsoft.Azure.DevSpaces.Client.Sync.Workspace.WorkspaceSync.Synchronize(String workspaceName, CancellationToken cancellationToken, Boolean addBuildContextPointer, Boolean quiet) in C:\\A\\_work\\38\\s\\src\\client\\Sync\\Workspace\\WorkspaceSync.cs:line 108
at Microsoft.Azure.DevSpaces.Client.Sync.SyncClient.<>c__DisplayClass27_1.<<SynchronizeAsync>b__0>d.MoveNext() in C:\\A\\_work\\38\\s\\src\\client\\Sync\\SyncClient.cs:line 165",
"RemoteStackTraceString":null,
"RemoteStackIndex":0,
"ExceptionMethod":null,
"HResult":-2146233080,
"Source":"System.Private.CoreLib",
"WatsonBuckets":null
}
To reproduce the issue, just walk through the tutorial using a fresh .Net Core MVC web application and drop a .gitignore file that contains only a space in the solution folder. I ended up with something like the following:
c:\code\DS
.gitignore
DS.sln
\DSWebApp
DSWebApp.csproj
Dockerfile
Program.cs
Startup.cs
...
\charts
...
\Controllers
...
\Models
...
Some version details to help reproduce the error:
PS C:\code\DS\DsWebApp> az version
{
"azure-cli": "2.9.1",
"azure-cli-command-modules-nspkg": "2.0.3",
"azure-cli-core": "2.9.1",
"azure-cli-nspkg": "3.0.4",
"azure-cli-telemetry": "1.0.4",
"extensions": {
"dev-spaces": "1.0.5"
}
}
PS C:\code\DS\DsWebApp> azds --version
Azure Dev Spaces CLI
1.0.20200728.4
API v3.2
PS C:\code\DS\DsWebApp> systeminfo
OS Name: Microsoft Windows 10 Enterprise
OS Version: 10.0.18363 N/A Build 18363
OS Manufacturer: Microsoft Corporation
OS Configuration: Member Workstation
OS Build Type: Multiprocessor Free
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: Intel64 Family 6 Model 142 Stepping 12 GenuineIntel ~1910 Mhz
Knowing what the problem is, there's an easy work around - just remove any lines from the .gitignore file that have just a space.
Also, lines that start with a space but then have a valid ignore rule seem ok. For instance, if the line is " *.suo", "azds up" does not throw the exception above.
Please let me know if there is any more information I could provide to help get this fixed in the DevSpaces client.