protected override void ExecuteTask()
        {
            RecursionType TypeOfRecursion = this.GetRecustiveOption();
            VersionSpec   FromVersion     = this.GetFromVersion();
            VersionSpec   Version         = FromVersion;

            if (Version == null)
            {
                Version = VersionSpec.Latest;
            }
            VersionSpec ToVersion = this.GetToVersion();

            using (XmlTextWriter DocWriter = new XmlTextWriter(this.ReportFile, System.Text.Encoding.UTF8))
            {
                DocWriter.Formatting = Formatting.Indented;
                DocWriter.WriteStartDocument();
                XmlWriterHelper Write = new XmlWriterHelper(DocWriter);
                Write.ElementBegining("History");

                IEnumerable ChangesetList =
                    this.ServerConnection.SourceControl.QueryHistory(
                        this.ItemSpec,
                        Version,
                        0,
                        TypeOfRecursion,
                        null,
                        FromVersion,
                        ToVersion,
                        int.MaxValue,
                        true,
                        false);

                foreach (Changeset CurrentChangeset in ChangesetList)
                {
                    Write.ElementBegining("ChangeSet");
                    Write.Attribute("ChangesetId", CurrentChangeset.ChangesetId.ToString());
                    Write.Attribute("Committer", CurrentChangeset.Committer);
                    Write.Attribute("Comment", CurrentChangeset.Comment);
                    Write.Attribute("CreationDate", CurrentChangeset.CreationDate.ToString());

                    Log(Level.Verbose, CurrentChangeset.ToString());

                    foreach (Change CurrentChange in CurrentChangeset.Changes)
                    {
                        Write.ElementBegining("Change");
                        Write.Attribute("ChangeType", CurrentChange.ChangeType.ToString());
                        Write.Attribute("CheckinDate", CurrentChange.Item.CheckinDate.ToString());
                        Write.Attribute("ItemType", CurrentChange.Item.ItemType.ToString());
                        Write.Attribute("ArtifactUri", CurrentChange.Item.ArtifactUri.ToString());
                        Write.Attribute("ServerItem", CurrentChange.Item.ServerItem);
                        Write.ElementEnd();
                    }
                    Write.ElementEnd();
                }
                Write.ElementEnd();
            }
        }