コード例 #1
0
        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);
        }