The way the normalization is performed is currently tailored to the way TeamCity fetches repository. I'm not sure that this should be blindly applied to any kind of CI host.

Going one step further with the `IIntegration IntegrationManager.Detect()` proposal above, we could maybe update the `IIntegration  interface` and add a `bool PerformPreprocessing(string gitdirectory)` method to it.

So instead of checking if we're running on a build agent, we would just blindly call `integration.PreprocessSteps(gitDirectory)`. Each `IIntegration` implementation would be responsible for
 - Implementing the checks and required normalization steps.
 - Feeding the log

Provided the method returns false, the task would fail.