示例#1
0
        public void Read()
        {
            DirectoryInfo dir = new DirectoryInfo(fullPath);

            foreach (FileInfo fileInDir in dir.GetFiles())
            {
                files.Add(new TrackedFile(fileInDir.FullName));
            }

            StreamReader sr = new StreamReader(dataFile, Encoding.Default);

            while (!sr.EndOfStream)
            {
                string[]    words    = sr.ReadLine().Split('|');
                TrackedFile fileData = Find(words[0]);
                if (fileData == null)
                {
                    files.Add(new TrackedFile(words[0], words[1], (long)Convert.ToDouble(words[2]), words[3], words[4]));
                }
                else
                {
                    fileData.prevLength = Int32.Parse(words[2]);
                    if (words[5] == "Inited")
                    {
                        fileData.mark = Mark.Inited;
                    }
                    else
                    {
                        fileData.mark = Mark.Added;
                    }
                }
            }
            sr.Close();
        }
示例#2
0
        public void Update()
        {
            DirectoryInfo dir = new DirectoryInfo(fullPath);

            foreach (FileInfo fileInDir in dir.GetFiles())
            {
                TrackedFile fileData = Find(fileInDir.FullName);
                if (fileData == null)
                {
                    files.Add(new TrackedFile(fileInDir.FullName));
                }
                else
                {
                    if (fileData.prevLength == -1)
                    {
                        fileData.prevLength = fileData.length;
                    }
                    if (fileData.mark == Mark.Deleted)
                    {
                        fileData.mark = Mark.New;
                    }
                    FileInfo item = new FileInfo(fileInDir.FullName);
                    fileData.length        = item.Length;
                    fileData.creationTime  = item.CreationTime.ToString();
                    fileData.lastWriteTime = item.LastWriteTime.ToString();
                }
            }

            foreach (TrackedFile dataSet in files)
            {
                if (!File.Exists(dataSet.fullName))
                {
                    dataSet.mark = Mark.Deleted;
                }
            }
        }
        public static void ExecuteCommand(string userInput)
        {
            switch (userInput)
            {
            case "help":
                Help();
                return;

            case "status":
                if (ActiveDirectoryExist())
                {
                    activeDirectory.Update();
                    activeDirectory.Status();
                }
                else
                {
                    return;
                }
                return;

            case "apply":
                if (ActiveDirectoryExist())
                {
                    activeDirectory.Apply();
                    Console.WriteLine("Изменения в активной дирректории: " + activeDirectory.path + " сохранены");
                }
                else
                {
                    return;
                }
                return;

            case "exit":
                Save();
                break;

            default:
                break;
            }

            int spaceIndex = userInput.IndexOf(" ");

            if (spaceIndex == -1)
            {
                Console.WriteLine("Введённая вами команда не корректна");
                return;
            }

            string commandType = userInput.Substring(0, spaceIndex);
            string commandData = userInput.Substring(spaceIndex + 1, userInput.Length - spaceIndex - 1);

            if (commandType == String.Empty || commandData == String.Empty)
            {
                Console.WriteLine("Введённая вами команда не корректна");
                return;
            }

            switch (commandType)
            {
            case "init":
                Init(commandData);
                break;

            case "add":
                if (ActiveDirectoryExist())
                {
                    activeDirectory.Update();
                    TrackedFile result = activeDirectory.FindAndReturn(commandData);
                    if (result == null)
                    {
                        Console.WriteLine("Файла " + commandData + " не существует!");
                        return;
                    }
                    if (result.mark == Mark.Added || result.mark == Mark.Inited)
                    {
                        Console.WriteLine("Файл " + commandData + " уже находится под контролем");
                        return;
                    }
                    if (result.mark == Mark.Deleted)
                    {
                        Console.WriteLine("Файл " + commandData + " был удалён!");
                        return;
                    }
                    result.mark = Mark.Added;
                    Console.WriteLine("Файл " + commandData + " добавлен под контроль");
                }
                else
                {
                    return;
                }
                break;

            case "remove":
                if (ActiveDirectoryExist())
                {
                    activeDirectory.Update();
                    TrackedFile result = activeDirectory.FindAndReturn(commandData);
                    if (result == null)
                    {
                        Console.WriteLine("Файла " + commandData + " не существует!");
                        return;
                    }
                    if (result.mark == Mark.Removed || result.mark == Mark.New)
                    {
                        Console.WriteLine("Файл " + commandData + " не находится под контролем");
                        return;
                    }
                    if (result.mark == Mark.Deleted)
                    {
                        Console.WriteLine("Файл " + commandData + " был удалён!");
                        return;
                    }
                    result.mark = Mark.Removed;
                    Console.WriteLine("Файл " + commandData + " удалён из под контроля");
                }
                else
                {
                    return;
                }
                break;

            case "apply":
                if (directories.Count == 0)
                {
                    Console.WriteLine("Список отслеживаемых папок пуст");
                }
                else
                {
                    Apply(commandData);
                }
                break;

            case "list":
                if (directories.Count == 0)
                {
                    Console.WriteLine("Список отслеживаемых папок пуст");
                }
                else
                {
                    if (commandData == "branch")
                    {
                        ListBranch();
                    }
                    else
                    {
                        Console.WriteLine("Введённая вами команда не корректна");
                    }
                }
                break;

            case "checkout":
                if (directories.Count == 0)
                {
                    Console.WriteLine("Список отслеживаемых папок пуст");
                }
                else
                {
                    Checkout(commandData);
                }
                break;

            case "checkout#":
                if (directories.Count == 0)
                {
                    Console.WriteLine("Список отслеживаемых папок пуст");
                }
                else
                {
                    try
                    {
                        Checkout(Int32.Parse(commandData));
                    }
                    catch
                    {
                        Console.WriteLine("Введённое вами число не корректно");
                    }
                }
                break;

            default:
                Console.WriteLine("Введённой вами команды не существует");
                break;
            }
        }