private void AddFile(FileInfo file, ref int fileCounter, bool single = false) { if (IsAlredyInIndex(file, single)) { return; } var version = 1; var status = "added"; var commits = repositoryhHelper.RemoveNewCommitSection(GetCommitsWithFile(file.ShotFileName(repositoryhHelper.Project.Path))); if (commits.Any()) { var maxId = commits.Max(c => Int32.Parse(c.Attribute("id").Value)); var fileMeta = commits.First(x => x.Attribute("id").Value == maxId.ToString()) .Elements("File").First(e => e.Element("fullName").Value == file.ShotFileName(repositoryhHelper.Project.Path)); var date = DateTime.Parse(fileMeta.Element("lwt").Value); if (date == file.LastWriteTime) { if (single) { ch.WriteLine("File wasn't change", ConsoleColor.Red); } return; } version = Int32.Parse(fileMeta.Element("version").Value) + 1; status = "modified"; } var doc = repositoryhHelper.CheckForNewCommitSection(); doc.Descendants("Commit").First(c => c.Attribute("id").Value == "new").Add( new XElement("File", new XElement("name", file.Name), new XElement("fullName", file.ShotFileName(repositoryhHelper.Project.Path)), new XElement("path", file.DirectoryName), new XElement("lwt", file.LastWriteTime), new XElement("directory", file.Directory.Name), new XElement("lenght", file.Length), new XElement("status", status), new XElement("version", version))); ++fileCounter; doc.Save(repositoryhHelper.PathToSave); ch.WriteLine(string.Format("\t {1}: {0}", file.ShotFileName(repositoryhHelper.Project.Path), status), ConsoleColor.Green); }