/// <summary>
        ///     Fetches the gravatar image for a single committer and saves it to the specified path.
        /// </summary>
        /// <param name="committer">The committer.</param>
        /// <param name="imagePath">The image path.</param>
        /// <param name="fileFormat"></param>
        /// <exception cref="System.NotImplementedException"></exception>
        internal async Task FetchSingleGravatar(Committer committer, string imagePath)
        {
            var gravatarId = Committer.GetGravatarMd5Hash(committer.EmailAddress);
            var query      = string.Format(QueryString, gravatarId, 90);
            var result     = await httpClient.GetAsync(query);

            Log.Debug()
            .Message("HTTP Status {status} retrieving image for committer {committer}",
                     result.StatusCode,
                     committer)
            .Write();

            if (result.IsSuccessStatusCode)
            {
                var imageStream = await result.Content.ReadAsStreamAsync();

                var bitmap     = new Bitmap(imageStream);
                var filename   = committer.Name + ".png";
                var fileToSave = Path.Combine(imagePath, filename);
                fileSystem.SaveImage(fileToSave, bitmap, ImageFormat.Png);
                Log.Info().Message("Saved {committer} => {filename}", committer, filename).Write();
            }
            else
            {
                Log.Info().Message("Unable to retrieve Gravatar for {committer}", committer).Write();
            }
        }
        public IEnumerable <Committer> GetListOfUniqueCommitters(ProcessStartInfo gitPsi = null)
        {
            var logStream        = GetLogStream(gitPsi);
            var uniqueCommitters = new SortedSet <Committer>();
            var committersAdded  = 0;

            while (!logStream.EndOfStream)
            {
                try
                {
                    var logLine = logStream.ReadLine();
                    Log.Debug().Message("Read from log stream => {logLine}", logLine).Write();
                    var parts = logLine.Split('|');
                    if (parts.Length != 2) // Must hav
                    {
                        continue;
                    }
                    if (string.IsNullOrEmpty(parts[0])) // Must have a non-blank email address
                    {
                        continue;
                    }
                    var committer = new Committer(parts[1], parts[0]);
                    var added     = uniqueCommitters.Add(committer);
                    Log.Debug().Message("Committer={committer}, Added={added}", committer, added).Write();
                    if (added)
                    {
                        ++committersAdded;
                    }
                }
                catch (Exception ex)
                {
                    Log.Warn().Exception(ex).Write();
                }
            }
            Log.Info().Message("Added a total of {count} committers", committersAdded).Write();
            return(uniqueCommitters);
        }