{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.model.Cause$UserIdCause",
          "shortDescription" : "Started by user sarbian",
          "userId" : "sarbian",
          "userName" : "sarbian"
        }
      ]
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 53,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "aa022badeb26e22a85b71f631f019190b617fb8a",
            "branch" : [
              {
                "SHA1" : "aa022badeb26e22a85b71f631f019190b617fb8a",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "aa022badeb26e22a85b71f631f019190b617fb8a",
            "branch" : [
              {
                "SHA1" : "aa022badeb26e22a85b71f631f019190b617fb8a",
                "name" : "origin/master"
              }
            ]
          }
        },
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 130,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "1347768e2c921359a2cbbbbabac8774795e1b792",
            "branch" : [
              {
                "SHA1" : "1347768e2c921359a2cbbbbabac8774795e1b792",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "1347768e2c921359a2cbbbbabac8774795e1b792",
            "branch" : [
              {
                "SHA1" : "1347768e2c921359a2cbbbbabac8774795e1b792",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "1347768e2c921359a2cbbbbabac8774795e1b792",
        "branch" : [
          {
            "SHA1" : "1347768e2c921359a2cbbbbabac8774795e1b792",
            "name" : "refs/remotes/origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/sarbian/ModuleManager.git"
      ],
      "scmName" : ""
    },
    {
      "_class" : "hudson.plugins.git.GitTagAction"
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "ModuleManager-3.0.0.zip",
      "fileName" : "ModuleManager-3.0.0.zip",
      "relativePath" : "ModuleManager-3.0.0.zip"
    },
    {
      "displayPath" : "ModuleManager.3.0.0.dll",
      "fileName" : "ModuleManager.3.0.0.dll",
      "relativePath" : "ModuleManager.3.0.0.dll"
    }
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#130",
  "duration" : 4704,
  "estimatedDuration" : 4997,
  "executor" : None,
  "fullDisplayName" : "ModuleManager #130",
  "id" : "130",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 130,
  "queueId" : 56,
  "result" : "SUCCESS",
  "timestamp" : 1512211920272,
  "url" : "https://ksp.sarbian.com/jenkins/user/stijnreclame/my-views/view/all/job/ModuleManager/130/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager.cs",
          "CatAnimator.cs",
          "MMPatchLoader.cs",
          "ModuleManager.csproj",
          "moduleManager.cs",
          "Cats/CatAnimator.cs",
          "Cats/CatManager.cs",
          "Cats/CatMover.cs",
          "Cats/CatOrbiter.cs",
          "CatOrbiter.cs",
          "CatMover.cs"
        ],
        "commitId" : "e29c9cb61eb97df6e68bfea1bb6290d3ca49e97e",
        "timestamp" : 1502371191000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/sarbian",
          "fullName" : "sarbian"
        },
        "authorEmail" : "sebastien.gaggini@gmail.com",
        "comment" : "Begin splitting files up (#76)\u000a* rename file\u000a most of it is MMPatchLoader so that's what it'll be\u000a\u000a* Remove corrupt #region\u000a It starts in one class and ends in another, I can't tell where it's\u000areally supposed to go\u000a\u000a* Move addon to its own file\u000a\u000a* Put cats in a box\u000a\u000a* Can has namespace\u000a\u000a* Promote business cat to manager\u000a\u000a* Unnecessary now\u000a\u000a* Old stuff\u000a",
        "date" : "2017-08-10 15:19:51 +0200",
        "id" : "e29c9cb61eb97df6e68bfea1bb6290d3ca49e97e",
        "msg" : "Begin splitting files up (#76)",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "moduleManager.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager.cs"
          },
          {
            "editType" : "add",
            "file" : "Cats/CatAnimator.cs"
          },
          {
            "editType" : "add",
            "file" : "Cats/CatOrbiter.cs"
          },
          {
            "editType" : "add",
            "file" : "Cats/CatMover.cs"
          },
          {
            "editType" : "delete",
            "file" : "CatMover.cs"
          },
          {
            "editType" : "add",
            "file" : "MMPatchLoader.cs"
          },
          {
            "editType" : "add",
            "file" : "Cats/CatManager.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager.csproj"
          },
          {
            "editType" : "delete",
            "file" : "CatAnimator.cs"
          },
          {
            "editType" : "delete",
            "file" : "CatOrbiter.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager.csproj"
        ],
        "commitId" : "1191841d6f532aa88c1b53441d1c88687d29fca2",
        "timestamp" : 1503176888000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Change debug C# version to default\u000a",
        "date" : "2017-08-19 14:08:08 -0700",
        "id" : "1191841d6f532aa88c1b53441d1c88687d29fca2",
        "msg" : "Change debug C# version to default",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".gitignore"
        ],
        "commitId" : "d2fd007db31b1e99879e99db56db1a10ad6b43e7",
        "timestamp" : 1503781786000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "VS, why u do dis?\u000a",
        "date" : "2017-08-26 14:09:46 -0700",
        "id" : "d2fd007db31b1e99879e99db56db1a10ad6b43e7",
        "msg" : "VS, why u do dis?",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".gitignore"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "Collections/ImmutableStack.cs",
          "ModuleManager.csproj"
        ],
        "commitId" : "536ff0cf0f06e0ae39b42920ce6189be99402d30",
        "timestamp" : 1503781872000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add ImmutableStack class\u000a",
        "date" : "2017-08-26 14:11:12 -0700",
        "id" : "536ff0cf0f06e0ae39b42920ce6189be99402d30",
        "msg" : "Add ImmutableStack class",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager.csproj"
          },
          {
            "editType" : "add",
            "file" : "Collections/ImmutableStack.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "PatchContext.cs",
          "ModuleManager.csproj"
        ],
        "commitId" : "abba87ea8b94ea6cab2ab2a25828f7aed756fc8e",
        "timestamp" : 1503803215000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add PatchContext struct\u000a",
        "date" : "2017-08-26 20:06:55 -0700",
        "id" : "abba87ea8b94ea6cab2ab2a25828f7aed756fc8e",
        "msg" : "Add PatchContext struct",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager.csproj"
          },
          {
            "editType" : "add",
            "file" : "PatchContext.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "MMPatchLoader.cs"
        ],
        "commitId" : "05342e2e8914bb5bb221db1ab80921554b006cad",
        "timestamp" : 1503803238000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Use ImmutableStack and PatchContext in MM\u000a",
        "date" : "2017-08-26 20:07:18 -0700",
        "id" : "05342e2e8914bb5bb221db1ab80921554b006cad",
        "msg" : "Use ImmutableStack and PatchContext in MM",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "MMPatchLoader.cs"
        ],
        "commitId" : "8685da977f63049acc2ab326cfb89e8c189049ff",
        "timestamp" : 1503815654000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Remove unused code\u000aApparently had to do with texture replacer corruption, but not called \u000aanywhere\u000a",
        "date" : "2017-08-26 23:34:14 -0700",
        "id" : "8685da977f63049acc2ab326cfb89e8c189049ff",
        "msg" : "Remove unused code",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "Collections/ImmutableStack.cs",
          "Extensions/NodeStackExtensions.cs"
        ],
        "commitId" : "038db2345ec22b9592e1510b850a0f52080baac4",
        "timestamp" : 1503863834000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Implement IEnumerable<T>\u000a",
        "date" : "2017-08-27 12:57:14 -0700",
        "id" : "038db2345ec22b9592e1510b850a0f52080baac4",
        "msg" : "Implement IEnumerable<T>",
        "paths" : [
          {
            "editType" : "add",
            "file" : "Extensions/NodeStackExtensions.cs"
          },
          {
            "editType" : "edit",
            "file" : "Collections/ImmutableStack.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "Collections/ImmutableStack.cs"
        ],
        "commitId" : "946194e0bb9b1d8aca95ae0db677bcc84315b69a",
        "timestamp" : 1503863846000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add Depth property\u000a",
        "date" : "2017-08-27 12:57:26 -0700",
        "id" : "946194e0bb9b1d8aca95ae0db677bcc84315b69a",
        "msg" : "Add Depth property",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "Collections/ImmutableStack.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "MMPatchLoader.cs"
        ],
        "commitId" : "475aa6627978100bb3cf0aa24eacefea4779b095",
        "timestamp" : 1503864192000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Use immutability in CheckNeeds\u000a",
        "date" : "2017-08-27 13:03:12 -0700",
        "id" : "475aa6627978100bb3cf0aa24eacefea4779b095",
        "msg" : "Use immutability in CheckNeeds",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "MMPatchLoader.cs"
        ],
        "commitId" : "27f788f0c06835ee965c6dae157fa97e95c0dd47",
        "timestamp" : 1503865606000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Forgot a using directive\u000a",
        "date" : "2017-08-27 13:26:46 -0700",
        "id" : "27f788f0c06835ee965c6dae157fa97e95c0dd47",
        "msg" : "Forgot a using directive",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "MMPatchLoader.cs"
        ],
        "commitId" : "04df68375017aabfe67e589e050325357463952c",
        "timestamp" : 1503865770000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Ged rid of Win64 specific code\u000aDoesn't matter anymore\u000a",
        "date" : "2017-08-27 13:29:30 -0700",
        "id" : "04df68375017aabfe67e589e050325357463952c",
        "msg" : "Ged rid of Win64 specific code",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager.csproj"
        ],
        "commitId" : "340d113a0ab871b9df635e07db5d974dad458092",
        "timestamp" : 1503986142000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Needs to be included in the project too\u000a",
        "date" : "2017-08-28 22:55:42 -0700",
        "id" : "340d113a0ab871b9df635e07db5d974dad458092",
        "msg" : "Needs to be included in the project too",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "Logging/ModLogger.cs",
          "Logging/IBasicLogger.cs",
          "ModuleManager.csproj"
        ],
        "commitId" : "b1a88634ddaf8a68bb0545cb062714096ad54c65",
        "timestamp" : 1503986293000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add logging interface\u000a",
        "date" : "2017-08-28 22:58:13 -0700",
        "id" : "b1a88634ddaf8a68bb0545cb062714096ad54c65",
        "msg" : "Add logging interface",
        "paths" : [
          {
            "editType" : "add",
            "file" : "Logging/ModLogger.cs"
          },
          {
            "editType" : "add",
            "file" : "Logging/IBasicLogger.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "PatchProgress.cs",
          "ModuleManager.csproj",
          "IPatchProgress.cs"
        ],
        "commitId" : "ad61311dcc5cd6c9ed2973e6470a9dc2a4797e1f",
        "timestamp" : 1503988314000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Extract progress into its own object\u000a",
        "date" : "2017-08-28 23:31:54 -0700",
        "id" : "ad61311dcc5cd6c9ed2973e6470a9dc2a4797e1f",
        "msg" : "Extract progress into its own object",
        "paths" : [
          {
            "editType" : "add",
            "file" : "IPatchProgress.cs"
          },
          {
            "editType" : "add",
            "file" : "PatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "PatchContext.cs",
          "ModuleManager.cs",
          "MMPatchLoader.cs"
        ],
        "commitId" : "76c998c61895de68f63f79fc57d0f64b30069d40",
        "timestamp" : 1503988584000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Use logger and progress\u000aMake some things static that no longer depend on the patch loader's \u000astate\u000a",
        "date" : "2017-08-28 23:36:24 -0700",
        "id" : "76c998c61895de68f63f79fc57d0f64b30069d40",
        "msg" : "Use logger and progress",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "PatchContext.cs"
          },
          {
            "editType" : "edit",
            "file" : "MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "MMPatchLoader.cs"
        ],
        "commitId" : "55fc4e6cc9dddb4b3c3e634002d893d987923463",
        "timestamp" : 1503988761000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Remove blocking option\u000aIt's no longer used\u000a",
        "date" : "2017-08-28 23:39:21 -0700",
        "id" : "55fc4e6cc9dddb4b3c3e634002d893d987923463",
        "msg" : "Remove blocking option",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "MMPatchLoader.cs"
        ],
        "commitId" : "bf640f41e969b14922242a6a6fad577fa8f48b34",
        "timestamp" : 1503988970000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Use inline variable declaration\u000a",
        "date" : "2017-08-28 23:42:50 -0700",
        "id" : "bf640f41e969b14922242a6a6fad577fa8f48b34",
        "msg" : "Use inline variable declaration",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "PatchProgress.cs"
        ],
        "commitId" : "f751ed43916ed68a37c5f3d921c8caa41c67ca0e",
        "timestamp" : 1504073317000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Make log messages consistent\u000a",
        "date" : "2017-08-29 23:08:37 -0700",
        "id" : "f751ed43916ed68a37c5f3d921c8caa41c67ca0e",
        "msg" : "Make log messages consistent",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "PatchProgress.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "PatchProgress.cs"
        ],
        "commitId" : "f03b5789becb4fb64dfd237ee12490bd2f1fa654",
        "timestamp" : 1504073835000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Make deletes and copies count toward patch count\u000a",
        "date" : "2017-08-29 23:17:15 -0700",
        "id" : "f03b5789becb4fb64dfd237ee12490bd2f1fa654",
        "msg" : "Make deletes and copies count toward patch count",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "PatchProgress.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "PatchProgress.cs",
          "MMPatchLoader.cs",
          "IPatchProgress.cs"
        ],
        "commitId" : "51b6f75a9e2462d28fc67967cfab16cfcb92b24d",
        "timestamp" : 1504073930000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Make names more accurate\u000aThese are called before the patch is applied\u000a",
        "date" : "2017-08-29 23:18:50 -0700",
        "id" : "51b6f75a9e2462d28fc67967cfab16cfcb92b24d",
        "msg" : "Make names more accurate",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "PatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "IPatchProgress.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "MMPatchLoader.cs"
        ],
        "commitId" : "8179c4405eca0916cd2edc3c9c4b8572cd6fd7c2",
        "timestamp" : 1504074195000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Simplify null check\u000a",
        "date" : "2017-08-29 23:23:15 -0700",
        "id" : "8179c4405eca0916cd2edc3c9c4b8572cd6fd7c2",
        "msg" : "Simplify null check",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/Cats/CatManager.cs",
          "ModuleManager/Properties/cat-1.png",
          "IPatchProgress.cs",
          "ModuleManager/Properties/cat-12.png",
          "ModuleManager/Cats/CatOrbiter.cs",
          "packages.config",
          "ModuleManager/Properties/cat-10.png",
          "Properties/rainbow2.png",
          "ModuleManager.csproj",
          "ModuleManager/Properties/cat-2.png",
          "ModuleManager/Cats/CatMover.cs",
          "ModuleManager/Logging/IBasicLogger.cs",
          "ModuleManager/Properties/cat-3.png",
          "Cats/CatManager.cs",
          "Cats/CatMover.cs",
          "ModuleManager/ModuleManager.cs",
          "Properties/Resources.Designer.cs",
          "Cats/CatOrbiter.cs",
          "Properties/cat-7.png",
          "ModuleManager/MMPatchLoader.cs",
          "MMPatchLoader.cs",
          "ModuleManager/Properties/Resources.resx",
          "ModuleManager/CustomConfigsManager.cs",
          "Properties/cat-6.png",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManager/Properties/cat-4.png",
          "ModuleManager/Properties/cat-11.png",
          "ModuleManager.sln",
          "ModuleManager.cs",
          "ModuleManager/Properties/Resources.Designer.cs",
          "Properties/cat-5.png",
          "ModuleManager/Properties/rainbow2.png",
          "Properties/AssemblyInfo.cs",
          "Properties/cat-11.png",
          "Logging/IBasicLogger.cs",
          "Extensions/NodeStackExtensions.cs",
          "ModuleManager/Extensions/NodeStackExtensions.cs",
          "ModuleManager/PatchContext.cs",
          "ModuleManager/Properties/cat-5.png",
          "ModuleManager/PatchProgress.cs",
          "ModuleManager/Collections/ImmutableStack.cs",
          "ModuleManager/Properties/AssemblyInfo.cs",
          "ModuleManager/IPatchProgress.cs",
          "Properties/cat-4.png",
          "Properties/cat-12.png",
          "ModuleManager/Cats/CatAnimator.cs",
          "Logging/ModLogger.cs",
          "Collections/ImmutableStack.cs",
          "ModuleManager/Properties/cat-6.png",
          "PatchContext.cs",
          "PatchProgress.cs",
          "ModuleManager/Properties/cat-8.png",
          "Properties/cat-8.png",
          "Properties/cat-3.png",
          "ModuleManager/Logging/ModLogger.cs",
          "ModuleManager/packages.config",
          "Properties/Resources.resx",
          "CustomConfigsManager.cs",
          "ModuleManager/Properties/cat-7.png",
          "Properties/cat-9.png",
          "ModuleManager/Properties/cat-9.png",
          "Cats/CatAnimator.cs",
          "Properties/cat-2.png",
          "Properties/cat-10.png",
          "Properties/cat-1.png"
        ],
        "commitId" : "1a12a253a3addda038bfcd8fef7fa0b0f1840c0c",
        "timestamp" : 1504326419000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "move main project to its own directory\u000aAllows more to be added\u000a",
        "date" : "2017-09-01 21:26:59 -0700",
        "id" : "1a12a253a3addda038bfcd8fef7fa0b0f1840c0c",
        "msg" : "move main project to its own directory",
        "paths" : [
          {
            "editType" : "add",
            "file" : "ModuleManager/IPatchProgress.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-8.png"
          },
          {
            "editType" : "delete",
            "file" : "packages.config"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Cats/CatAnimator.cs"
          },
          {
            "editType" : "delete",
            "file" : "Cats/CatManager.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/PatchContext.cs"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-10.png"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-8.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Extensions/NodeStackExtensions.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-6.png"
          },
          {
            "editType" : "delete",
            "file" : "Properties/rainbow2.png"
          },
          {
            "editType" : "delete",
            "file" : "PatchContext.cs"
          },
          {
            "editType" : "delete",
            "file" : "Logging/ModLogger.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/ModuleManager.cs"
          },
          {
            "editType" : "delete",
            "file" : "Collections/ImmutableStack.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/Resources.resx"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-7.png"
          },
          {
            "editType" : "delete",
            "file" : "Extensions/NodeStackExtensions.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-5.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-1.png"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-5.png"
          },
          {
            "editType" : "delete",
            "file" : "Properties/Resources.Designer.cs"
          },
          {
            "editType" : "delete",
            "file" : "PatchProgress.cs"
          },
          {
            "editType" : "delete",
            "file" : "Cats/CatAnimator.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Cats/CatMover.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-12.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Cats/CatManager.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/CustomConfigsManager.cs"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-2.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Logging/IBasicLogger.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Logging/ModLogger.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-3.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/AssemblyInfo.cs"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-1.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "delete",
            "file" : "Cats/CatOrbiter.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-4.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-11.png"
          },
          {
            "editType" : "delete",
            "file" : "IPatchProgress.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-9.png"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-3.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-7.png"
          },
          {
            "editType" : "delete",
            "file" : "MMPatchLoader.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/PatchProgress.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-10.png"
          },
          {
            "editType" : "delete",
            "file" : "ModuleManager.cs"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-6.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/rainbow2.png"
          },
          {
            "editType" : "delete",
            "file" : "Properties/AssemblyInfo.cs"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-4.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Collections/ImmutableStack.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager.sln"
          },
          {
            "editType" : "delete",
            "file" : "ModuleManager.csproj"
          },
          {
            "editType" : "delete",
            "file" : "Properties/Resources.resx"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/packages.config"
          },
          {
            "editType" : "delete",
            "file" : "Cats/CatMover.cs"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-11.png"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-12.png"
          },
          {
            "editType" : "delete",
            "file" : "Logging/IBasicLogger.cs"
          },
          {
            "editType" : "delete",
            "file" : "Properties/cat-9.png"
          },
          {
            "editType" : "delete",
            "file" : "CustomConfigsManager.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/cat-2.png"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Properties/Resources.Designer.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Cats/CatOrbiter.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/ModuleManager.csproj"
        ],
        "commitId" : "f02f418db54ecb0ef523e08063e3d6c59922f5fd",
        "timestamp" : 1504326591000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Better output dir for debug\u000a",
        "date" : "2017-09-01 21:29:51 -0700",
        "id" : "f02f418db54ecb0ef523e08063e3d6c59922f5fd",
        "msg" : "Better output dir for debug",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/ModuleManager.csproj"
        ],
        "commitId" : "95362b529ab739ad6c62d9a0a50ca7eaf60fe7f1",
        "timestamp" : 1504326600000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Do not copy local\u000a",
        "date" : "2017-09-01 21:30:00 -0700",
        "id" : "95362b529ab739ad6c62d9a0a50ca7eaf60fe7f1",
        "msg" : "Do not copy local",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/DummyTest.cs",
          "ModuleManagerTests/packages.config",
          "ModuleManagerTests/Properties/AssemblyInfo.cs",
          "ModuleManager.sln"
        ],
        "commitId" : "c4ba1b943c1d94fdab9ac7e51c1ca5dc9f26e918",
        "timestamp" : 1504327341000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add test project\u000a",
        "date" : "2017-09-01 21:42:21 -0700",
        "id" : "c4ba1b943c1d94fdab9ac7e51c1ca5dc9f26e918",
        "msg" : "Add test project",
        "paths" : [
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Properties/AssemblyInfo.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager.sln"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/DummyTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/packages.config"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj"
        ],
        "commitId" : "e8159e1f9d8f8c292c827dc0e47f1b93431efcb2",
        "timestamp" : 1504327635000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add MM, Assembly-CSharp, UnityEngine refs\u000a",
        "date" : "2017-09-01 21:47:15 -0700",
        "id" : "e8159e1f9d8f8c292c827dc0e47f1b93431efcb2",
        "msg" : "Add MM, Assembly-CSharp, UnityEngine refs",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/packages.config"
        ],
        "commitId" : "563a9427e4b3cd21da3ccaa3c38b149c2bb1ee9c",
        "timestamp" : 1504328185000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add console runner\u000aWill be needed eventually\u000a",
        "date" : "2017-09-01 21:56:25 -0700",
        "id" : "563a9427e4b3cd21da3ccaa3c38b149c2bb1ee9c",
        "msg" : "Add console runner",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/packages.config"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "TestUtilsTests/Properties/AssemblyInfo.cs",
          "TestUtilsTests/packages.config",
          "TestUtilsTests/TestUtilsTests.csproj",
          "TestUtilsTests/DummyTest.cs",
          "ModuleManager.sln",
          "TestUtils/Properties/AssemblyInfo.cs",
          "TestUtils/TestUtils.csproj"
        ],
        "commitId" : "a7f901e4654900cde28f93c15e27154d66a36e30",
        "timestamp" : 1504329367000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Yo dawg, I heard you like tests\u000a",
        "date" : "2017-09-01 22:16:07 -0700",
        "id" : "a7f901e4654900cde28f93c15e27154d66a36e30",
        "msg" : "Yo dawg, I heard you like tests",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager.sln"
          },
          {
            "editType" : "add",
            "file" : "TestUtilsTests/Properties/AssemblyInfo.cs"
          },
          {
            "editType" : "add",
            "file" : "TestUtils/TestUtils.csproj"
          },
          {
            "editType" : "add",
            "file" : "TestUtils/Properties/AssemblyInfo.cs"
          },
          {
            "editType" : "add",
            "file" : "TestUtilsTests/TestUtilsTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "TestUtilsTests/DummyTest.cs"
          },
          {
            "editType" : "add",
            "file" : "TestUtilsTests/packages.config"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "TestUtils/TestConfigNode.cs",
          "TestUtilsTests/TestConfigNodeTest.cs",
          "TestUtilsTests/TestUtilsTests.csproj",
          "TestUtils/TestUtils.csproj"
        ],
        "commitId" : "be37f18a9cff44b889ecbc150b1a9b164b098c66",
        "timestamp" : 1504329802000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add TestConfigNode class\u000aMakes testing with ConfigNodes by simplifying creating them\u000a",
        "date" : "2017-09-01 22:23:22 -0700",
        "id" : "be37f18a9cff44b889ecbc150b1a9b164b098c66",
        "msg" : "Add TestConfigNode class",
        "paths" : [
          {
            "editType" : "add",
            "file" : "TestUtils/TestConfigNode.cs"
          },
          {
            "editType" : "edit",
            "file" : "TestUtils/TestUtils.csproj"
          },
          {
            "editType" : "add",
            "file" : "TestUtilsTests/TestConfigNodeTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "TestUtilsTests/TestUtilsTests.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj"
        ],
        "commitId" : "278dad81e20c01e24505d4b9a48bd6c083eab828",
        "timestamp" : 1504329872000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Reference TestUtils\u000a",
        "date" : "2017-09-01 22:24:32 -0700",
        "id" : "278dad81e20c01e24505d4b9a48bd6c083eab828",
        "msg" : "Reference TestUtils",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/ModuleManager.csproj"
        ],
        "commitId" : "66e6612df80ebeac9c8cd23e37430ad527014a96",
        "timestamp" : 1504370462000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Don't reference a specific version of System\u000a",
        "date" : "2017-09-02 09:41:02 -0700",
        "id" : "66e6612df80ebeac9c8cd23e37430ad527014a96",
        "msg" : "Don't reference a specific version of System",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/Collections/ImmutableStackTest.cs"
        ],
        "commitId" : "df9c8ec4ead848c8ec2c7adeb13c7de8a8180477",
        "timestamp" : 1504370549000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add test for ImmutableStack\u000a",
        "date" : "2017-09-02 09:42:29 -0700",
        "id" : "df9c8ec4ead848c8ec2c7adeb13c7de8a8180477",
        "msg" : "Add test for ImmutableStack",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Collections/ImmutableStackTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/Extensions/NodeStackExtensionsTest.cs"
        ],
        "commitId" : "3e7100991cc45ea01bc78ee2f95f4cdd38cae0a6",
        "timestamp" : 1504393533000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add test for GetPath\u000a",
        "date" : "2017-09-02 16:05:33 -0700",
        "id" : "3e7100991cc45ea01bc78ee2f95f4cdd38cae0a6",
        "msg" : "Add test for GetPath",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Extensions/NodeStackExtensionsTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/packages.config",
          "ModuleManagerTests/ModuleManagerTests.csproj"
        ],
        "commitId" : "6e8285c5c6559339826804e599b90c3883284c76",
        "timestamp" : 1504402506000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add NSubstitute\u000a",
        "date" : "2017-09-02 18:35:06 -0700",
        "id" : "6e8285c5c6559339826804e599b90c3883284c76",
        "msg" : "Add NSubstitute",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/packages.config"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/Logging/ModLoggerTest.cs"
        ],
        "commitId" : "7398d4d1acbf2a8ed1db9dbc372fa94cf2c9cfa6",
        "timestamp" : 1504403632000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add tests for ModLogger\u000a",
        "date" : "2017-09-02 18:53:52 -0700",
        "id" : "7398d4d1acbf2a8ed1db9dbc372fa94cf2c9cfa6",
        "msg" : "Add tests for ModLogger",
        "paths" : [
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Logging/ModLoggerTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "a5a095fc17b5e3a8c8b9c756a035d0bcbefdbec2",
        "timestamp" : 1504403972000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Fix an error\u000a",
        "date" : "2017-09-02 18:59:32 -0700",
        "id" : "a5a095fc17b5e3a8c8b9c756a035d0bcbefdbec2",
        "msg" : "Fix an error",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "TestUtilsTests/UrlBuilderTest.cs",
          "TestUtilsTests/TestUtilsTests.csproj",
          "TestUtils/URLBuilder.cs",
          "TestUtils/TestUtils.csproj"
        ],
        "commitId" : "564b226028542cf258b2792fb8612baab6b939dc",
        "timestamp" : 1504492797000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add UrlBuilder\u000aHackily creates UrlDir, UrlFile, UrlConfig for testing purposes\u000a",
        "date" : "2017-09-03 19:39:57 -0700",
        "id" : "564b226028542cf258b2792fb8612baab6b939dc",
        "msg" : "Add UrlBuilder",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "TestUtilsTests/TestUtilsTests.csproj"
          },
          {
            "editType" : "edit",
            "file" : "TestUtils/TestUtils.csproj"
          },
          {
            "editType" : "add",
            "file" : "TestUtils/URLBuilder.cs"
          },
          {
            "editType" : "add",
            "file" : "TestUtilsTests/UrlBuilderTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/IPatchProgress.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/PatchProgress.cs"
        ],
        "commitId" : "f190d17f56a1837204b62ad004da8005df624c2b",
        "timestamp" : 1504500927000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Progress shouldn't depend on deleted subnodes\u000aThe number of needs unsatisfied nodes it should be counting is the \u000anumber of root nodes that have been removed, not subnodes as well\u000a",
        "date" : "2017-09-03 21:55:27 -0700",
        "id" : "f190d17f56a1837204b62ad004da8005df624c2b",
        "msg" : "Progress shouldn't depend on deleted subnodes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/IPatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/IPatchProgress.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/PatchProgress.cs"
        ],
        "commitId" : "fca971747aa52e91653941cc5988cf7fa8119503",
        "timestamp" : 1504560261000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "These should use actual URLs\u000aSince all the calls were just using .url anyway\u000a",
        "date" : "2017-09-04 14:24:21 -0700",
        "id" : "fca971747aa52e91653941cc5988cf7fa8119503",
        "msg" : "These should use actual URLs",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/IPatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/IPatchProgress.cs",
          "ModuleManager/PatchProgress.cs"
        ],
        "commitId" : "28e4ce78e513990712835ae12a6fe7d89f116ff7",
        "timestamp" : 1504561039000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "These too\u000a",
        "date" : "2017-09-04 14:37:19 -0700",
        "id" : "28e4ce78e513990712835ae12a6fe7d89f116ff7",
        "msg" : "These too",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/IPatchProgress.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchProgress.cs"
        ],
        "commitId" : "8d8463d17795917e4906dd469cae52e53c83bd60",
        "timestamp" : 1504587100000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Minor logging tweak\u000a",
        "date" : "2017-09-04 21:51:40 -0700",
        "id" : "8d8463d17795917e4906dd469cae52e53c83bd60",
        "msg" : "Minor logging tweak",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchProgress.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/PatchProgressTest.cs"
        ],
        "commitId" : "d37f58bc70332b6e5271fe69303d78c3aeb2b741",
        "timestamp" : 1504587109000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add tests for PatchProgress\u000a",
        "date" : "2017-09-04 21:51:49 -0700",
        "id" : "d37f58bc70332b6e5271fe69303d78c3aeb2b741",
        "msg" : "Add tests for PatchProgress",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/PatchProgressTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "ca12c392d34244cddc3eca746d66070f90ae9eee",
        "timestamp" : 1504845168000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Replace DeepCopy with ConfigNode.CreateCopy\u000aIt does 100% the same thing (and is recursive)\u000a",
        "date" : "2017-09-07 21:32:48 -0700",
        "id" : "ca12c392d34244cddc3eca746d66070f90ae9eee",
        "msg" : "Replace DeepCopy with ConfigNode.CreateCopy",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "2b824899ff271c0681f7d03f527ec5b549a2f98a",
        "timestamp" : 1504845418000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Inline out variable declarations\u000aYay C#7\u000a",
        "date" : "2017-09-07 21:36:58 -0700",
        "id" : "2b824899ff271c0681f7d03f527ec5b549a2f98a",
        "msg" : "Inline out variable declarations",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/CustomConfigsManager.cs",
          "ModuleManager/ModuleManager.cs"
        ],
        "commitId" : "47ce0154abaa501cb0cbcd10a709b9bd11bd370f",
        "timestamp" : 1504845626000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Obey naming conventions\u000a",
        "date" : "2017-09-07 21:40:26 -0700",
        "id" : "47ce0154abaa501cb0cbcd10a709b9bd11bd370f",
        "msg" : "Obey naming conventions",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/CustomConfigsManager.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/Command.cs",
          "ModuleManager/CommandParser.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManagerTests/CommandParserTest.cs"
        ],
        "commitId" : "a9a990d7f119d0d2d30f50f85a10d8398d27c2b1",
        "timestamp" : 1505358686000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Pull Command and ParseCommand out of MMPatchLoader\u000aWould be nice if enums allowed static methods\u000a",
        "date" : "2017-09-13 20:11:26 -0700",
        "id" : "a9a990d7f119d0d2d30f50f85a10d8398d27c2b1",
        "msg" : "Pull Command and ParseCommand out of MMPatchLoader",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/CommandParser.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Command.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/CommandParserTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManager/Extensions/ConfigNodeExtensions.cs"
        ],
        "commitId" : "b43f79b20c2759797aa1ad6323331d3e5e834b85",
        "timestamp" : 1505358686000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Extract ShallowCopy\u000a\"this\" is the node you're copying to so that the extension method is \u000aonly modifying \"its\" node\u000a",
        "date" : "2017-09-13 20:11:26 -0700",
        "id" : "b43f79b20c2759797aa1ad6323331d3e5e834b85",
        "msg" : "Extract ShallowCopy",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Extensions/ConfigNodeExtensions.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "TestUtils/URLBuilder.cs",
          "TestUtilsTests/UrlBuilderTest.cs"
        ],
        "commitId" : "534eee2d6cc93d7e3bf6a8899e201f674c957cb2",
        "timestamp" : 1505358686000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Don't create duplicates in UrlBuilder\u000a",
        "date" : "2017-09-13 20:11:26 -0700",
        "id" : "534eee2d6cc93d7e3bf6a8899e201f674c957cb2",
        "msg" : "Don't create duplicates in UrlBuilder",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "TestUtils/URLBuilder.cs"
          },
          {
            "editType" : "edit",
            "file" : "TestUtilsTests/UrlBuilderTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManager/Collections/ArrayEnumerator.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManagerTests/Collections/ArrayEnumeratorTest.cs"
        ],
        "commitId" : "24f21435b3efc6e0064de654a679ec8d5afba2d3",
        "timestamp" : 1505362248000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add ArrayEnumerator\u000aEnumerates arrays in a garbage-free way\u000a",
        "date" : "2017-09-13 21:10:48 -0700",
        "id" : "24f21435b3efc6e0064de654a679ec8d5afba2d3",
        "msg" : "Add ArrayEnumerator",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Collections/ArrayEnumerator.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Collections/ArrayEnumeratorTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/PatchListTest.cs",
          "ModuleManager/PatchList.cs",
          "ModuleManager/ModuleManager.csproj"
        ],
        "commitId" : "7138bbca48c127dda038d199b1518a0dfc84a0a5",
        "timestamp" : 1505365141000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "PatchList\u000alist of patches, 'nuff said\u000a",
        "date" : "2017-09-13 21:59:01 -0700",
        "id" : "7138bbca48c127dda038d199b1518a0dfc84a0a5",
        "msg" : "PatchList",
        "paths" : [
          {
            "editType" : "add",
            "file" : "ModuleManager/PatchList.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/PatchListTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/PatchExtractorTest.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManager/PatchExtractor.cs"
        ],
        "commitId" : "9a55a65987f83afbc0d2df67b0c1e4c8d80a47e6",
        "timestamp" : 1505365320000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add PatchExtractor\u000aExtracts patches from the game database and sorts them\u000a",
        "date" : "2017-09-13 22:02:00 -0700",
        "id" : "9a55a65987f83afbc0d2df67b0c1e4c8d80a47e6",
        "msg" : "Add PatchExtractor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/PatchExtractorTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/PatchExtractor.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/Extensions/UrlConfigExtensionsTest.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManager/Extensions/UrlConfigExtensions.cs"
        ],
        "commitId" : "90027c2abade9c7f035948bcfed4e6cddbc32e7e",
        "timestamp" : 1505367118000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add SafeUrl extension method for UrlConfig\u000aMakes sure logging doesn't mess up, and fixes the weird quirk where a \u000anode with a name value ends up displaying that instead of its actual \u000aname\u000a",
        "date" : "2017-09-13 22:31:58 -0700",
        "id" : "90027c2abade9c7f035948bcfed4e6cddbc32e7e",
        "msg" : "Add SafeUrl extension method for UrlConfig",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Extensions/UrlConfigExtensionsTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Extensions/UrlConfigExtensions.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/PatchExtractor.cs",
          "ModuleManager/PatchProgress.cs"
        ],
        "commitId" : "504354d57b7ffdb5128e48cdccccd9010ed22e63",
        "timestamp" : 1505369949000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Use SafeUrl in logging\u000a",
        "date" : "2017-09-13 23:19:09 -0700",
        "id" : "504354d57b7ffdb5128e48cdccccd9010ed22e63",
        "msg" : "Use SafeUrl in logging",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchExtractor.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "331ab180365a6e243f4d2f192197b762a6820ba0",
        "timestamp" : 1505369949000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Remove unused\u000aDoesn't really have any benefit\u000a",
        "date" : "2017-09-13 23:19:09 -0700",
        "id" : "331ab180365a6e243f4d2f192197b762a6820ba0",
        "msg" : "Remove unused",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/PatchExtractorTest.cs",
          "ModuleManagerTests/PatchProgressTest.cs",
          "ModuleManager/IPatchProgress.cs",
          "ModuleManager/PatchExtractor.cs",
          "ModuleManager/PatchProgress.cs"
        ],
        "commitId" : "3f8adeeb9ca45e6afd879602d8bf5176ba6f7a65",
        "timestamp" : 1505370312000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Log when BEFORE or AFTER patch deleted\u000aThis is pretty much equivalent to unsatisfied NEEDS, so it should be \u000anoted as such.  Also log on an unsatisfied FOR, although this shouldn't \u000ahappen (make it a warning)\u000a",
        "date" : "2017-09-13 23:25:12 -0700",
        "id" : "3f8adeeb9ca45e6afd879602d8bf5176ba6f7a65",
        "msg" : "Log when BEFORE or AFTER patch deleted",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchProgressTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/IPatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchExtractor.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchExtractorTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchList.cs",
          "ModuleManagerTests/PatchListTest.cs"
        ],
        "commitId" : "50346dc2f17ca43b5d47132e636df295ae95a992",
        "timestamp" : 1505370333000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Fix case issues\u000aMods may not be lowercase to begin with, need to handle this\u000a",
        "date" : "2017-09-13 23:25:33 -0700",
        "id" : "50346dc2f17ca43b5d47132e636df295ae95a992",
        "msg" : "Fix case issues",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchList.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchListTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/Extensions/StringExtensions.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManagerTests/Extensions/StringExtensionsTest.cs"
        ],
        "commitId" : "99bc0bf583693dd2d83a94d93d1043bc28d03708",
        "timestamp" : 1505371760000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Extract IsBracketBalanced\u000a",
        "date" : "2017-09-13 23:49:20 -0700",
        "id" : "99bc0bf583693dd2d83a94d93d1043bc28d03708",
        "msg" : "Extract IsBracketBalanced",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Extensions/StringExtensions.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Extensions/StringExtensionsTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchExtractor.cs",
          "ModuleManagerTests/PatchExtractorTest.cs"
        ],
        "commitId" : "e52a646ba73fb0639218d779508e7f110aaa1a3f",
        "timestamp" : 1505372189000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Remove bracket unbalanced nodes when sorting\u000a",
        "date" : "2017-09-13 23:56:29 -0700",
        "id" : "e52a646ba73fb0639218d779508e7f110aaa1a3f",
        "msg" : "Remove bracket unbalanced nodes when sorting",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchExtractor.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchExtractorTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "8a8131017d7a26286b0b9f0bf8c64dc4da0d1ecc",
        "timestamp" : 1505372266000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Unused method\u000a",
        "date" : "2017-09-13 23:57:46 -0700",
        "id" : "8a8131017d7a26286b0b9f0bf8c64dc4da0d1ecc",
        "msg" : "Unused method",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/Extensions/ConfigNodeExtensions.cs"
        ],
        "commitId" : "5a468bea8d010631895e3e7bdbf40a5682748b13",
        "timestamp" : 1505374314000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Bring back DeepCopy\u000aApparently KSP's default implementation fails on badly formed nodes\u000a",
        "date" : "2017-09-14 00:31:54 -0700",
        "id" : "5a468bea8d010631895e3e7bdbf40a5682748b13",
        "msg" : "Bring back DeepCopy",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Extensions/ConfigNodeExtensions.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "2e5854df9056d21d8efcac868de3d527e1ddd319",
        "timestamp" : 1505374892000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Fix bad region\u000a",
        "date" : "2017-09-14 00:41:32 -0700",
        "id" : "2e5854df9056d21d8efcac868de3d527e1ddd319",
        "msg" : "Fix bad region",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchExtractor.cs",
          "ModuleManagerTests/PatchExtractorTest.cs"
        ],
        "commitId" : "9bd8253f26f0aaf03891cbef10d5a3c27de3ec6d",
        "timestamp" : 1505449711000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Make sure badly formed mod passes are an error\u000a",
        "date" : "2017-09-14 21:28:31 -0700",
        "id" : "9bd8253f26f0aaf03891cbef10d5a3c27de3ec6d",
        "msg" : "Make sure badly formed mod passes are an error",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchExtractor.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchExtractorTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "b0102431984947e8cff86aa4e7874b97119f2361",
        "timestamp" : 1505452838000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "That's a bug\u000a",
        "date" : "2017-09-14 22:20:38 -0700",
        "id" : "b0102431984947e8cff86aa4e7874b97119f2361",
        "msg" : "That's a bug",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchExtractor.cs",
          "ModuleManager/Extensions/ConfigNodeExtensions.cs"
        ],
        "commitId" : "cacc840da0d34307ef18796288eaafb30d2f3229",
        "timestamp" : 1505455034000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add some explanatory comments\u000a",
        "date" : "2017-09-14 22:57:14 -0700",
        "id" : "cacc840da0d34307ef18796288eaafb30d2f3229",
        "msg" : "Add some explanatory comments",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/Extensions/ConfigNodeExtensions.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchExtractor.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs",
          "ModuleManager/PatchExtractor.cs",
          "ModuleManager/Extensions/ConfigNodeExtensions.cs"
        ],
        "commitId" : "c00735d7f3322aba14159706f996e7c45bc13dff",
        "timestamp" : 1505455076000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Unnecessary using directives\u000a",
        "date" : "2017-09-14 22:57:56 -0700",
        "id" : "c00735d7f3322aba14159706f996e7c45bc13dff",
        "msg" : "Unnecessary using directives",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/Extensions/ConfigNodeExtensions.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchExtractor.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "8d71ac691054fcc9e1fa236d4debbb2687be4632",
        "timestamp" : 1505455955000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Use sorted patches when applying\u000aImproves performance somewhat\u000aVerified that sorting patches takes almost no time even for a fairly \u000alarge number of patches\u000a",
        "date" : "2017-09-14 23:12:35 -0700",
        "id" : "8d71ac691054fcc9e1fa236d4debbb2687be4632",
        "msg" : "Use sorted patches when applying",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "aa990db608166c83fd2fdbf9cd62fdba40788ff8",
        "timestamp" : 1505456264000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Remove now-unnecessary try-catch\u000aThere's already one around it and we no longer care about removing \u000apatches from the database at this stage\u000a",
        "date" : "2017-09-14 23:17:44 -0700",
        "id" : "aa990db608166c83fd2fdbf9cd62fdba40788ff8",
        "msg" : "Remove now-unnecessary try-catch",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "3ca180142d1cc787cf92ceae683b64cbab04c964",
        "timestamp" : 1505456479000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Replace big if with guard clause\u000aReduces indentation.  Insert nodes shouldn't exist here anyway\u000a",
        "date" : "2017-09-14 23:21:19 -0700",
        "id" : "3ca180142d1cc787cf92ceae683b64cbab04c964",
        "msg" : "Replace big if with guard clause",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "ec7c67cea50bc2b67ceadeac9b57ae3284816a24",
        "timestamp" : 1505456695000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Simplify this\u000aIt no longer has to look in actual passes here, so we can just use the \u000aname we want it to display.\u000aIt does change the way it displays in the loading screen but that seems \u000afine.\u000a",
        "date" : "2017-09-14 23:24:55 -0700",
        "id" : "ec7c67cea50bc2b67ceadeac9b57ae3284816a24",
        "msg" : "Simplify this",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchExtractor.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManagerTests/PatchExtractorTest.cs"
        ],
        "commitId" : "809831304b89671c1abf746c91f5d166dd5a1a86",
        "timestamp" : 1505458924000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Invalid command = error on the patch extractor\u000aThis seems like the right place to check it\u000a",
        "date" : "2017-09-15 00:02:04 -0700",
        "id" : "809831304b89671c1abf746c91f5d166dd5a1a86",
        "msg" : "Invalid command = error on the patch extractor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchExtractor.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchExtractorTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/Extensions/StringExtensions.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManagerTests/Extensions/StringExtensionsTest.cs"
        ],
        "commitId" : "180c2ee8434b8558072fca973299fa4821969f50",
        "timestamp" : 1505795809000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Extract RemoveWS\u000a",
        "date" : "2017-09-18 21:36:49 -0700",
        "id" : "180c2ee8434b8558072fca973299fa4821969f50",
        "msg" : "Extract RemoveWS",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Extensions/StringExtensionsTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Extensions/StringExtensions.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "20a8afbeaf2aae223c407899649360715249d102",
        "timestamp" : 1505801312000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Fix logging\u000a",
        "date" : "2017-09-18 23:08:32 -0700",
        "id" : "20a8afbeaf2aae223c407899649360715249d102",
        "msg" : "Fix logging",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/Extensions/ConfigNodeExtensions.cs"
        ],
        "commitId" : "35d89f8ab11a495ade7d25719e367b903127a4fa",
        "timestamp" : 1505880666000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Extract PrettyPrint\u000a",
        "date" : "2017-09-19 21:11:06 -0700",
        "id" : "35d89f8ab11a495ade7d25719e367b903127a4fa",
        "msg" : "Extract PrettyPrint",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Extensions/ConfigNodeExtensions.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Extensions/UrlConfigExtensionsTest.cs",
          "ModuleManager/Extensions/UrlConfigExtensions.cs"
        ],
        "commitId" : "b52a80ea42e54cef13a90290c84eaeb493823649",
        "timestamp" : 1505880746000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Get rid of unnecesary using directives\u000a",
        "date" : "2017-09-19 21:12:26 -0700",
        "id" : "b52a80ea42e54cef13a90290c84eaeb493823649",
        "msg" : "Get rid of unnecesary using directives",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/Extensions/UrlConfigExtensions.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Extensions/UrlConfigExtensionsTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "45a4c0c2222159a75c17415c16ef499c9e785c71",
        "timestamp" : 1506192297000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Don't run PrePatchInit if cache is being used\u000aMod list is not necessary\u000a",
        "date" : "2017-09-23 11:44:57 -0700",
        "id" : "45a4c0c2222159a75c17415c16ef499c9e785c71",
        "msg" : "Don't run PrePatchInit if cache is being used",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "d397a80a1157dbd74374fc9abd8a4f9e4b1ebbb3",
        "timestamp" : 1506192298000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Eliminate mods instance variable\u000a",
        "date" : "2017-09-23 11:44:58 -0700",
        "id" : "d397a80a1157dbd74374fc9abd8a4f9e4b1ebbb3",
        "msg" : "Eliminate mods instance variable",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "12780a636b8ace12511cfd71d8ec9302b3a15201",
        "timestamp" : 1506192298000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Use method param rather than instance var\u000aMakes things easier to disentagle\u000a",
        "date" : "2017-09-23 11:44:58 -0700",
        "id" : "12780a636b8ace12511cfd71d8ec9302b3a15201",
        "msg" : "Use method param rather than instance var",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "b6b628cbed7806607a53eca2815e5e6be441eebf",
        "timestamp" : 1506192298000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Eliminate Update\u000aStatus will be updated when necessary anyway\u000a",
        "date" : "2017-09-23 11:44:58 -0700",
        "id" : "b6b628cbed7806607a53eca2815e5e6be441eebf",
        "msg" : "Eliminate Update",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/ModuleManager.cs"
        ],
        "commitId" : "7a40730ad2b966bcc0eccee8968af93d950efaa7",
        "timestamp" : 1506192298000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Eliminate redundant logging\u000aMMPatchLoader logs this info itself\u000a",
        "date" : "2017-09-23 11:44:58 -0700",
        "id" : "7a40730ad2b966bcc0eccee8968af93d950efaa7",
        "msg" : "Eliminate redundant logging",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "7e714a47ba7f158718e878ffcad83324f5b30453",
        "timestamp" : 1506192298000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Keep track of progress fraction independently\u000a",
        "date" : "2017-09-23 11:44:58 -0700",
        "id" : "7e714a47ba7f158718e878ffcad83324f5b30453",
        "msg" : "Keep track of progress fraction independently",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "9236be107824be90bb56840dc20486aacb4fce7d",
        "timestamp" : 1506192298000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Make StatusUpdate less general\u000aIf cache is used, status only needs to be set once, no need to check it \u000aevery time\u000a",
        "date" : "2017-09-23 11:44:58 -0700",
        "id" : "9236be107824be90bb56840dc20486aacb4fce7d",
        "msg" : "Make StatusUpdate less general",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "8696143e2f3fd17dab5f92f81798141d4eeff69f",
        "timestamp" : 1506192298000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Move this\u000aWhat I get for trying to make a bunch of changes and then split them \u000ainto small commits\u000a",
        "date" : "2017-09-23 11:44:58 -0700",
        "id" : "8696143e2f3fd17dab5f92f81798141d4eeff69f",
        "msg" : "Move this",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "58d52d9572fce69dc234dbd7d1ba4f5b78e48313",
        "timestamp" : 1506192298000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Eliminate Progress instance variable\u000aMake it local, inject where needed\u000a",
        "date" : "2017-09-23 11:44:58 -0700",
        "id" : "58d52d9572fce69dc234dbd7d1ba4f5b78e48313",
        "msg" : "Eliminate Progress instance variable",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "2645d222082cf9a5913590ac97ad6253c6ec92a3",
        "timestamp" : 1506192298000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Make more methods static\u000aAll their instance variable dependencies have been eliminated\u000a",
        "date" : "2017-09-23 11:44:58 -0700",
        "id" : "2645d222082cf9a5913590ac97ad6253c6ec92a3",
        "msg" : "Make more methods static",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "824b077dfc46eee2998bbc56ea3fb28f7c96b776",
        "timestamp" : 1506193169000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "This is no longer necessary\u000aAnd will probably result in an error anyway\u000a",
        "date" : "2017-09-23 11:59:29 -0700",
        "id" : "824b077dfc46eee2998bbc56ea3fb28f7c96b776",
        "msg" : "This is no longer necessary",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "ac0a149a21efe830c2c8e7df2468526395b6fe6d",
        "timestamp" : 1506193250000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Move exception handling outside of PrettyConfig\u000aCallers really shouldn't be trying to print the result if it resulted in \u000aan exception anyway\u000a",
        "date" : "2017-09-23 12:00:50 -0700",
        "id" : "ac0a149a21efe830c2c8e7df2468526395b6fe6d",
        "msg" : "Move exception handling outside of PrettyConfig",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs"
        ],
        "commitId" : "eb18b601a5662c74712af4eea74c0c60cb7ca467",
        "timestamp" : 1506194323000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Tweak test\u000aThis isn't the case it was trying to test\u000a",
        "date" : "2017-09-23 12:18:43 -0700",
        "id" : "eb18b601a5662c74712af4eea74c0c60cb7ca467",
        "msg" : "Tweak test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "TestUtils/TestConfigNode.cs",
          "TestUtilsTests/TestConfigNodeTest.cs"
        ],
        "commitId" : "4fdfb8911e4b93c8f7c332e8fab077a8a1bc6861",
        "timestamp" : 1506224183000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Allow adding a ConfigNode.Value in initializer\u000aNot useful yet but maybe at some point\u000a",
        "date" : "2017-09-23 20:36:23 -0700",
        "id" : "4fdfb8911e4b93c8f7c332e8fab077a8a1bc6861",
        "msg" : "Allow adding a ConfigNode.Value in initializer",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "TestUtils/TestConfigNode.cs"
          },
          {
            "editType" : "edit",
            "file" : "TestUtilsTests/TestConfigNodeTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Extensions/UrlConfigExtensionsTest.cs",
          "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/Extensions/UrlConfigExtensions.cs",
          "ModuleManager/Extensions/ConfigNodeExtensions.cs"
        ],
        "commitId" : "70eca817c4d6d398c471b84d6ac0288ad4128e37",
        "timestamp" : 1506227482000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Extract PrettyConfig (for UrlConfig)\u000a",
        "date" : "2017-09-23 21:31:22 -0700",
        "id" : "70eca817c4d6d398c471b84d6ac0288ad4128e37",
        "msg" : "Extract PrettyConfig (for UrlConfig)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Extensions/UrlConfigExtensions.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Extensions/UrlConfigExtensionsTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Extensions/ConfigNodeExtensions.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Extensions/ConfigNodeExtensionsTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Extensions/UrlConfigExtensionsTest.cs"
        ],
        "commitId" : "55308af509bf7b8c082c641528df24847a5b5982",
        "timestamp" : 1506231836000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add one more test\u000a",
        "date" : "2017-09-23 22:43:56 -0700",
        "id" : "55308af509bf7b8c082c641528df24847a5b5982",
        "msg" : "Add one more test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Extensions/UrlConfigExtensionsTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "1a7d1e36c64d27318b002a5505f5959be21551d1",
        "timestamp" : 1506234508000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Make CheckNeeds static\u000aCan now be extracted\u000a",
        "date" : "2017-09-23 23:28:28 -0700",
        "id" : "1a7d1e36c64d27318b002a5505f5959be21551d1",
        "msg" : "Make CheckNeeds static",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "bc451c5bdf2dafa43972a7930ee9483a5366e861",
        "timestamp" : 1506234530000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "This can already be static\u000a",
        "date" : "2017-09-23 23:28:50 -0700",
        "id" : "bc451c5bdf2dafa43972a7930ee9483a5366e861",
        "msg" : "This can already be static",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/Extensions/NodeStackExtensions.cs"
        ],
        "commitId" : "60cb30aa9e47a292bb08be23f46bfd8d8caaccc5",
        "timestamp" : 1506579014000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Remove unnecessary Using\u000a",
        "date" : "2017-09-27 23:10:14 -0700",
        "id" : "60cb30aa9e47a292bb08be23f46bfd8d8caaccc5",
        "msg" : "Remove unnecessary Using",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/Extensions/NodeStackExtensions.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Extensions/UrlConfigExtensionsTest.cs",
          "ModuleManager/Extensions/UrlConfigExtensions.cs"
        ],
        "commitId" : "a035b672edecdefd73f22fefef00c56a9270360f",
        "timestamp" : 1506579216000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Improve url and node printing\u000a* Handle null name explicitly\u000a* Include url when printing a UrlConfig\u000a",
        "date" : "2017-09-27 23:13:36 -0700",
        "id" : "a035b672edecdefd73f22fefef00c56a9270360f",
        "msg" : "Improve url and node printing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/Extensions/UrlConfigExtensions.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Extensions/UrlConfigExtensionsTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManagerTests/NeedsCheckerTest.cs",
          "ModuleManager/NeedsChecker.cs",
          "ModuleManager/ModuleManager.csproj"
        ],
        "commitId" : "59a922067956db3ba32b6c248e53714958425296",
        "timestamp" : 1506579311000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Extract CheckNeeds\u000aEquality vs sameness mostly not tested for now, need to determine \u000adesired behavior\u000a",
        "date" : "2017-09-27 23:15:11 -0700",
        "id" : "59a922067956db3ba32b6c248e53714958425296",
        "msg" : "Extract CheckNeeds",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/NeedsChecker.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/NeedsCheckerTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "784e7a80059574c888b4626a711359ce5463a5ae",
        "timestamp" : 1506582649000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Ensure that final string printed to the screen is the actual status\u000a",
        "date" : "2017-09-28 00:10:49 -0700",
        "id" : "784e7a80059574c888b4626a711359ce5463a5ae",
        "msg" : "Ensure that final string printed to the screen is the actual status",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "13850b617ff7cdadd06a6bf943c7be22cf51b21a",
        "timestamp" : 1506582681000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Fix up mod list logging\u000a* Use a string builder\u000a* Print assemblies in a nicer format (table)\u000a",
        "date" : "2017-09-28 00:11:21 -0700",
        "id" : "13850b617ff7cdadd06a6bf943c7be22cf51b21a",
        "msg" : "Fix up mod list logging",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "cd3a4680ae697b04680743db8120434c42c135d0",
        "timestamp" : 1506652058000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Use Path.Combine\u000aIt's more concise then concatenating with the separator char\u000a",
        "date" : "2017-09-28 19:27:38 -0700",
        "id" : "cd3a4680ae697b04680743db8120434c42c135d0",
        "msg" : "Use Path.Combine",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "901b5a5bc2035719e7e3da3fac1a354ee0cdea56",
        "timestamp" : 1506670295000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Unnecessary now\u000a",
        "date" : "2017-09-29 00:31:35 -0700",
        "id" : "901b5a5bc2035719e7e3da3fac1a354ee0cdea56",
        "msg" : "Unnecessary now",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "a5b1547d4b6020ebad74d1e9cf2668fc9514e58e",
        "timestamp" : 1506757571000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Improve assembly list\u000a* Get rid of unused code\u000a* Include KSPAssembly version\u000a",
        "date" : "2017-09-30 00:46:11 -0700",
        "id" : "a5b1547d4b6020ebad74d1e9cf2668fc9514e58e",
        "msg" : "Improve assembly list",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "9cf00111aa40a9ae6a39ff6714613c5d68d200a5",
        "timestamp" : 1506826253000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Accidentally removed\u000a",
        "date" : "2017-09-30 19:50:53 -0700",
        "id" : "9cf00111aa40a9ae6a39ff6714613c5d68d200a5",
        "msg" : "Accidentally removed",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchExtractor.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManagerTests/PatchExtractorTest.cs"
        ],
        "commitId" : "fde3fbc3782c23cbc0527e4128c49d08eb2cfbba",
        "timestamp" : 1506883658000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Move tracking number of patches\u000afrom mod list to sorting patches\u000a",
        "date" : "2017-10-01 11:47:38 -0700",
        "id" : "fde3fbc3782c23cbc0527e4128c49d08eb2cfbba",
        "msg" : "Move tracking number of patches",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchExtractor.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchExtractorTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/IPatchProgress.cs",
          "ModuleManager/PatchProgress.cs"
        ],
        "commitId" : "f09622f190f8bb289df5229f6c45cf1a71885838",
        "timestamp" : 1506883815000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Put progress counts in their own object\u000aAllows the same counts to be used with a different logger.  Also remove \u000aunused setter for NeedsUnsatisfiedRootCount\u000a",
        "date" : "2017-10-01 11:50:15 -0700",
        "id" : "f09622f190f8bb289df5229f6c45cf1a71885838",
        "msg" : "Put progress counts in their own object",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/IPatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchProgress.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "ce43104059244df30ebad90bfd928ab08ec4bd7d",
        "timestamp" : 1506890154000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Move exception handling out of FIleSHA\u000aCallers should be aware of exceptions anyway\u000a",
        "date" : "2017-10-01 13:35:54 -0700",
        "id" : "ce43104059244df30ebad90bfd928ab08ec4bd7d",
        "msg" : "Move exception handling out of FIleSHA",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/Utils/FileUtils.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "2dc9f9121be35ea1c30ada09c0dc0456cc7b0c1a",
        "timestamp" : 1506892495000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Extract FileSHA\u000aInteracts with the file system so difficult to test unfortunately\u000a",
        "date" : "2017-10-01 14:14:55 -0700",
        "id" : "2dc9f9121be35ea1c30ada09c0dc0456cc7b0c1a",
        "msg" : "Extract FileSHA",
        "paths" : [
          {
            "editType" : "add",
            "file" : "ModuleManager/Utils/FileUtils.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "6f2693924bbd2b85b5b4ea598a8437f0c9f2a49c",
        "timestamp" : 1506894329000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Fix unassigned variable\u000a",
        "date" : "2017-10-01 14:45:29 -0700",
        "id" : "6f2693924bbd2b85b5b4ea598a8437f0c9f2a49c",
        "msg" : "Fix unassigned variable",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "f3352db53fdd4685c73706845d0fea5e435330ff",
        "timestamp" : 1507083585000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Make this extractable\u000a",
        "date" : "2017-10-03 19:19:45 -0700",
        "id" : "f3352db53fdd4685c73706845d0fea5e435330ff",
        "msg" : "Make this extractable",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/ModListGenerator.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/ModuleManager.csproj"
        ],
        "commitId" : "e40426a633c90762f8fb034d561aefb388f57634",
        "timestamp" : 1507085540000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Extract GenerateModList\u000aUnfortunately interacts with AssemblyLoader and the file system so not \u000areally testable\u000a",
        "date" : "2017-10-03 19:52:20 -0700",
        "id" : "e40426a633c90762f8fb034d561aefb388f57634",
        "msg" : "Extract GenerateModList",
        "paths" : [
          {
            "editType" : "add",
            "file" : "ModuleManager/ModListGenerator.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/Collections/MessageQueueTest.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManager/Collections/MessageQueue.cs"
        ],
        "commitId" : "7a2e18da8eb06d4215e4d034984e98ca0e770af8",
        "timestamp" : 1507085733000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add MessageQueue\u000a",
        "date" : "2017-10-03 19:55:33 -0700",
        "id" : "7a2e18da8eb06d4215e4d034984e98ca0e770af8",
        "msg" : "Add MessageQueue",
        "paths" : [
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Collections/MessageQueueTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Collections/MessageQueue.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/Logging/NormalMessage.cs",
          "ModuleManager/Logging/ILogMessage.cs",
          "ModuleManagerTests/Logging/NormalMessageTest.cs",
          "ModuleManager/Logging/QueueLogger.cs",
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManager/Logging/ExceptionMessage.cs",
          "ModuleManagerTests/Logging/ExceptionMessageTest.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManagerTests/Logging/QueueLoggerTest.cs"
        ],
        "commitId" : "7d0c5878014b0e000808f8cb7b04d5665e280aa9",
        "timestamp" : 1507085739000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add QueueLogger and supporting classes\u000aAllows logging to a queue\u000a",
        "date" : "2017-10-03 19:55:39 -0700",
        "id" : "7d0c5878014b0e000808f8cb7b04d5665e280aa9",
        "msg" : "Add QueueLogger and supporting classes",
        "paths" : [
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Logging/NormalMessageTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Logging/QueueLoggerTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Logging/NormalMessage.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Logging/QueueLogger.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Logging/ExceptionMessageTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Logging/ILogMessage.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Logging/ExceptionMessage.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/PatchProgressTest.cs",
          "ModuleManager/PatchProgress.cs"
        ],
        "commitId" : "d1975dbdd1bc2c61488644dd8e53ab92c557befd",
        "timestamp" : 1507170155000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Don't keep track of non-root needs unsatisfied\u000aIsn't used anywhere\u000a",
        "date" : "2017-10-04 19:22:35 -0700",
        "id" : "d1975dbdd1bc2c61488644dd8e53ab92c557befd",
        "msg" : "Don't keep track of non-root needs unsatisfied",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchProgressTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchProgress.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/ModuleManager.csproj",
          "ModuleManager/FatalErrorHandler.cs"
        ],
        "commitId" : "78d46359c18677bf34a7cbe0f1b510e2c2b9dc1e",
        "timestamp" : 1507181240000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add FatalErrorHandler\u000aAllows us to display a message to the user and quit when an \u000aunrecoverable error occurs.\u000aCan't really be tested unfortunately.\u000a",
        "date" : "2017-10-04 22:27:20 -0700",
        "id" : "78d46359c18677bf34a7cbe0f1b510e2c2b9dc1e",
        "msg" : "Add FatalErrorHandler",
        "paths" : [
          {
            "editType" : "add",
            "file" : "ModuleManager/FatalErrorHandler.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Threading/BackgroundTaskTest.cs",
          "ModuleManager/Threading/BackgroundTask.cs",
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/Threading/TaskStatusTest.cs",
          "ModuleManager/Threading/ITaskStatus.cs",
          "ModuleManager/Threading/TaskStatus.cs",
          "ModuleManager/Threading/TaskStatusWrapper.cs",
          "ModuleManager/ModuleManager.csproj"
        ],
        "commitId" : "172e2f3c845c42f1a4b4fb14182314891b00939a",
        "timestamp" : 1507181921000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add background task support\u000aAllows a background task to be run and monitored, including if it exits \u000adue to an exception\u000a",
        "date" : "2017-10-04 22:38:41 -0700",
        "id" : "172e2f3c845c42f1a4b4fb14182314891b00939a",
        "msg" : "Add background task support",
        "paths" : [
          {
            "editType" : "add",
            "file" : "ModuleManager/Threading/ITaskStatus.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Threading/TaskStatus.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Threading/BackgroundTaskTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Threading/TaskStatusTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Threading/TaskStatusWrapper.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Threading/BackgroundTask.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/PatchProgressTest.cs",
          "ModuleManager/IPatchProgress.cs",
          "ModuleManager/Progress/IPatchProgress.cs",
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManagerTests/Progress/PatchProgressTest.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManager/Progress/PatchProgress.cs",
          "ModuleManager/PatchProgress.cs"
        ],
        "commitId" : "7f9088719a5d478f5b5119fe7123ad06ba17a340",
        "timestamp" : 1507182502000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Begin creating Progress namespace\u000a",
        "date" : "2017-10-04 22:48:22 -0700",
        "id" : "7f9088719a5d478f5b5119fe7123ad06ba17a340",
        "msg" : "Begin creating Progress namespace",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "delete",
            "file" : "ModuleManagerTests/PatchProgressTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Progress/IPatchProgress.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Progress/PatchProgressTest.cs"
          },
          {
            "editType" : "delete",
            "file" : "ModuleManager/IPatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "delete",
            "file" : "ModuleManager/PatchProgress.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Progress/PatchProgress.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/ModListGenerator.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManagerTests/PatchExtractorTest.cs",
          "ModuleManager/PatchExtractor.cs",
          "ModuleManager/NeedsChecker.cs",
          "ModuleManager/Progress/IPatchProgress.cs",
          "ModuleManagerTests/Progress/PatchProgressTest.cs",
          "ModuleManagerTests/NeedsCheckerTest.cs",
          "ModuleManager/Progress/PatchProgress.cs",
          "ModuleManager/PatchContext.cs"
        ],
        "commitId" : "b0f72c293f1ae36994c73c628eca346906ba59b5",
        "timestamp" : 1507182930000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Finish creating Progress namespace\u000a",
        "date" : "2017-10-04 22:55:30 -0700",
        "id" : "b0f72c293f1ae36994c73c628eca346906ba59b5",
        "msg" : "Finish creating Progress namespace",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchExtractor.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchContext.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Progress/PatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModListGenerator.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Progress/PatchProgressTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/NeedsCheckerTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchExtractorTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/NeedsChecker.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Progress/IPatchProgress.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Progress/PatchProgressTest.cs",
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "3dbfbb1ad344efa8326def114cea916d685aefc0",
        "timestamp" : 1507182954000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Unnecessary directives\u000a",
        "date" : "2017-10-04 22:55:54 -0700",
        "id" : "3dbfbb1ad344efa8326def114cea916d685aefc0",
        "msg" : "Unnecessary directives",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Progress/PatchProgressTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/NeedsCheckerTest.cs"
        ],
        "commitId" : "92ae91f6a8fef397d17f658e67538bc060a50d23",
        "timestamp" : 1507184003000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add needs test for and/or and capitalization\u000a",
        "date" : "2017-10-04 23:13:23 -0700",
        "id" : "92ae91f6a8fef397d17f658e67538bc060a50d23",
        "msg" : "Add needs test for and/or and capitalization",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/NeedsCheckerTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Utils/CounterTest.cs",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManager/Progress/ProgressCounter.cs",
          "ModuleManager/Progress/IPatchProgress.cs",
          "ModuleManagerTests/Progress/PatchProgressTest.cs",
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManager/Utils/Counter.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManager/Progress/PatchProgress.cs"
        ],
        "commitId" : "6596b47e64677ee615718e6194d85e7ee6787659",
        "timestamp" : 1507186313000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Separate out progress counter\u000aMake it so that all the values can be incremented but not otherwise \u000amessed with.\u000aAllow a new progress tracker to be initialized that shares a counter \u000awith another but uses a different logger\u000a",
        "date" : "2017-10-04 23:51:53 -0700",
        "id" : "6596b47e64677ee615718e6194d85e7ee6787659",
        "msg" : "Separate out progress counter",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/Progress/IPatchProgress.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Utils/Counter.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/Utils/CounterTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Progress/PatchProgressTest.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/Progress/ProgressCounter.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Progress/PatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Utils/CounterTest.cs",
          "ModuleManager/Utils/Counter.cs"
        ],
        "commitId" : "9a05e1b8902043f474c6d8bec4ed88da10ecf328",
        "timestamp" : 1507187146000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Ensure Counter behaves like an int\u000a",
        "date" : "2017-10-05 00:05:46 -0700",
        "id" : "9a05e1b8902043f474c6d8bec4ed88da10ecf328",
        "msg" : "Ensure Counter behaves like an int",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Utils/CounterTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Utils/Counter.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/Utils/Counter.cs"
        ],
        "commitId" : "97368004915876f14236207ea72b490ed85c86e7",
        "timestamp" : 1507187157000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "More unnecessary using\u000a",
        "date" : "2017-10-05 00:05:57 -0700",
        "id" : "97368004915876f14236207ea72b490ed85c86e7",
        "msg" : "More unnecessary using",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/Utils/Counter.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/NeedsCheckerTest.cs"
        ],
        "commitId" : "a1af72527f8c6356509a9e12cfecea7c76a86570",
        "timestamp" : 1507341464000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Add test for ! (not) in :NEEDS\u000a",
        "date" : "2017-10-06 18:57:44 -0700",
        "id" : "a1af72527f8c6356509a9e12cfecea7c76a86570",
        "msg" : "Add test for ! (not) in :NEEDS",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/NeedsCheckerTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/Progress/PatchProgress.cs",
          "ModuleManager/Command.cs",
          "ModuleManager/CommandParser.cs"
        ],
        "commitId" : "3a19ff8e6698a8f15660cc8cb2edacd3cb2fcf70",
        "timestamp" : 1507874242000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "More unnecessary using directives\u000a",
        "date" : "2017-10-12 22:57:22 -0700",
        "id" : "3a19ff8e6698a8f15660cc8cb2edacd3cb2fcf70",
        "msg" : "More unnecessary using directives",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/CommandParser.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Progress/PatchProgress.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Command.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/ModuleManagerTests.csproj",
          "ModuleManager/MMPatchLoader.cs",
          "ModuleManagerTests/PatchApplierTest.cs",
          "ModuleManager/ModuleManager.csproj",
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "e9c341a3e1fcfa5061a441bc9c1455acd60bf275",
        "timestamp" : 1507874639000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Extract application of patches to its own thread\u000aAllows it to not be bound by logging which can be slow\u000a",
        "date" : "2017-10-12 23:03:59 -0700",
        "id" : "e9c341a3e1fcfa5061a441bc9c1455acd60bf275",
        "msg" : "Extract application of patches to its own thread",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/ModuleManager.csproj"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          },
          {
            "editType" : "add",
            "file" : "ModuleManager/PatchApplier.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/ModuleManagerTests.csproj"
          },
          {
            "editType" : "add",
            "file" : "ModuleManagerTests/PatchApplierTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/Progress/PatchProgressTest.cs",
          "ModuleManager/Progress/PatchProgress.cs"
        ],
        "commitId" : "b0e02e098a73aa19b1ef214f75aaaec2790d33ce",
        "timestamp" : 1507875363000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Test and fix PatchProgress.ProgressFraction\u000aPatches are now only counted after needs are checked, so this shouldn't \u000aconsider needs unsatisfied nodes\u000a",
        "date" : "2017-10-12 23:16:03 -0700",
        "id" : "b0e02e098a73aa19b1ef214f75aaaec2790d33ce",
        "msg" : "Test and fix PatchProgress.ProgressFraction",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/Progress/PatchProgressTest.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManager/Progress/PatchProgress.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "ba24af38d82bae9f5ed17dbf5115a7bed26441a8",
        "timestamp" : 1507943655000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Tweak\u000a",
        "date" : "2017-10-13 18:14:15 -0700",
        "id" : "ba24af38d82bae9f5ed17dbf5115a7bed26441a8",
        "msg" : "Tweak",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "5fe79fd6b901eed0768ec3452ab65c97389b2971",
        "timestamp" : 1507966210000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Only convert to array once per pass\u000aThis is expensive\u000a",
        "date" : "2017-10-14 00:30:10 -0700",
        "id" : "5fe79fd6b901eed0768ec3452ab65c97389b2971",
        "msg" : "Only convert to array once per pass",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchApplier.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "20e619287f1e8637476ada51f3a2470200b9b09b",
        "timestamp" : 1507966210000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Make node matching its own method\u000aSaves a level of indentation\u000a",
        "date" : "2017-10-14 00:30:10 -0700",
        "id" : "20e619287f1e8637476ada51f3a2470200b9b09b",
        "msg" : "Make node matching its own method",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchApplier.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/PatchApplierTest.cs",
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "244af1ac93d9c32a017666ff0e59e88d01c75449",
        "timestamp" : 1507966210000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Loop only applies to edit patches\u000aSaves another indentation level.  Also remove MM_PATCH_LOOP {} after \u000adone\u000a",
        "date" : "2017-10-14 00:30:10 -0700",
        "id" : "244af1ac93d9c32a017666ff0e59e88d01c75449",
        "msg" : "Loop only applies to edit patches",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchApplier.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchApplierTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManagerTests/PatchApplierTest.cs",
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "cdeb5f76dbf574eb5d310c71ea5cc605f7077508",
        "timestamp" : 1507966210000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Don't convert to an array at all\u000aIt's not necessary.  Also don't use switch - makes things cleaner.  It's \u000aonly 3 cases anyway\u000a",
        "date" : "2017-10-14 00:30:10 -0700",
        "id" : "cdeb5f76dbf574eb5d310c71ea5cc605f7077508",
        "msg" : "Don't convert to an array at all",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchApplier.cs"
          },
          {
            "editType" : "edit",
            "file" : "ModuleManagerTests/PatchApplierTest.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "30eeb6f3c1a6ba1525b762ef6583f362b84e64ab",
        "timestamp" : 1507966210000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Ensure that user gets updates during long passes\u000aThe patcher can potentially generate log messages faster than the main \u000athread can log them, causing frames that are noticeably long with no \u000aupdates.  This ensures that yields still happen then.\u000aVerified that this does not meaningfully affect performance.  Previous \u000atests suggest that the time wasted by waiting until the next frame is \u000arelatively small.\u000a",
        "date" : "2017-10-14 00:30:10 -0700",
        "id" : "30eeb6f3c1a6ba1525b762ef6583f362b84e64ab",
        "msg" : "Ensure that user gets updates during long passes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "7e42de5a4e85a83ef6711885255a9f1b8b64aa0d",
        "timestamp" : 1508305795000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Without switch, i is valid here\u000a",
        "date" : "2017-10-17 22:49:55 -0700",
        "id" : "7e42de5a4e85a83ef6711885255a9f1b8b64aa0d",
        "msg" : "Without switch, i is valid here",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchApplier.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/MMPatchLoader.cs"
        ],
        "commitId" : "dc1a167b0874120c893962e097388bd8be2a84e3",
        "timestamp" : 1508306437000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Ensure time between each check of the log queue\u000aThis prevents the queue from being locked too often, slowing down the \u000apatching thread\u000a",
        "date" : "2017-10-17 23:00:37 -0700",
        "id" : "dc1a167b0874120c893962e097388bd8be2a84e3",
        "msg" : "Ensure time between each check of the log queue",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/MMPatchLoader.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "ec5310bdfa4ebd10da8de9e675a2150d3beff098",
        "timestamp" : 1508306884000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Convert to an array initially\u000aApparently it saves a bit of time, and this won't be changed while \u000apatches run\u000a",
        "date" : "2017-10-17 23:08:04 -0700",
        "id" : "ec5310bdfa4ebd10da8de9e675a2150d3beff098",
        "msg" : "Convert to an array initially",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchApplier.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "7cc6c5130dc9fe86d6bed7158b1390be88fa5edf",
        "timestamp" : 1508307776000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Having an actual array here no longer necessary\u000a",
        "date" : "2017-10-17 23:22:56 -0700",
        "id" : "7cc6c5130dc9fe86d6bed7158b1390be88fa5edf",
        "msg" : "Having an actual array here no longer necessary",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchApplier.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "bd82d53b561931630a1c5ddda4491e56ab46e727",
        "timestamp" : 1508307795000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Apparently Linq slows things down\u000aI guess it matters at scale\u000a",
        "date" : "2017-10-17 23:23:15 -0700",
        "id" : "bd82d53b561931630a1c5ddda4491e56ab46e727",
        "msg" : "Apparently Linq slows things down",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchApplier.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "ce3893f9682c3dae5232491b3ee9f4f97a6e3b2a",
        "timestamp" : 1508310796000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Improve access of name a bit\u000aLooks like GetValue(\"name\") has a bit of overhead, instead we can check \u000aif the UrlConfig's type == name\u000a",
        "date" : "2017-10-18 00:13:16 -0700",
        "id" : "ce3893f9682c3dae5232491b3ee9f4f97a6e3b2a",
        "msg" : "Improve access of name a bit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchApplier.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/PatchApplier.cs"
        ],
        "commitId" : "203ad88debd4cd772d754da569e35d0efd241943",
        "timestamp" : 1508312589000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "Move loop out of loop\u000aThis is all a bit loopy\u000a",
        "date" : "2017-10-18 00:43:09 -0700",
        "id" : "203ad88debd4cd772d754da569e35d0efd241943",
        "msg" : "Move loop out of loop",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/PatchApplier.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "TestUtils/UrlBuilder.cs",
          "TestUtils/URLBuilder.cs"
        ],
        "commitId" : "73f7b397ab6cc0930be850a9f8c33dc86a1b58dc",
        "timestamp" : 1510476109000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
          "fullName" : "joeydwong"
        },
        "authorEmail" : "joeydwong@gmail.com",
        "comment" : "case should match filename\u000amatters on some filesystems\u000a",
        "date" : "2017-11-12 00:41:49 -0800",
        "id" : "73f7b397ab6cc0930be850a9f8c33dc86a1b58dc",
        "msg" : "case should match filename",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "TestUtils/URLBuilder.cs"
          },
          {
            "editType" : "add",
            "file" : "TestUtils/UrlBuilder.cs"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ModuleManager/Properties/AssemblyInfo.cs"
        ],
        "commitId" : "2caefbd81811147d23444796b5caffdb38ce07ba",
        "timestamp" : 1512211138000,
        "author" : {
          "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/sarbian",
          "fullName" : "sarbian"
        },
        "authorEmail" : "sebastien.gaggini@gmail.com",
        "comment" : "v3.0.0 for KSP 1.3.1\u000a",
        "date" : "2017-12-02 11:38:58 +0100",
        "id" : "2caefbd81811147d23444796b5caffdb38ce07ba",
        "msg" : "v3.0.0 for KSP 1.3.1",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ModuleManager/Properties/AssemblyInfo.cs"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/joeydwong",
      "fullName" : "joeydwong"
    },
    {
      "absoluteUrl" : "https://ksp.sarbian.com/jenkins/user/sarbian",
      "fullName" : "sarbian"
    }
  ]
}