Skip to content
This repository was archived by the owner on Oct 11, 2023. It is now read-only.

.gitignore lines with just a space cause IndexOutOfRangeException on 'azds up' command #387

@git-jim

Description

@git-jim

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions