GitScc.GitRepository.GetFileStatus C# (CSharp) Method

GetFileStatus() public method

public GetFileStatus ( string fileName, bool forceRefresh = false ) : GitFileStatus
fileName string
forceRefresh bool
return GitFileStatus
        public GitFileStatus GetFileStatus(string fileName, bool forceRefresh = false)
        {
            try
            {
                fileName = Path.GetFullPath(fileName).ToLower();
                GitFile file;
                if (_changedFiles == null || forceRefresh)
                {
                    _changedFiles = GetCurrentChangedFiles();
                }
                if (_changedFiles.TryGetValue(fileName, out file))
                {
                    return file.Status;
                }
                //var file = ChangedFiles.FirstOrDefault(f => string.Equals(f.FilePath, fileName, StringComparison.OrdinalIgnoreCase));
                //if (file != null) return file.Status;

                if (FileExistsInRepo(fileName)) return GitFileStatus.Tracked;
                // did not check if the file is ignored for performance reason
                return GitFileStatus.NotControlled;
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Error In File System Changed Event: " + ex.Message);
                return GitFileStatus.NotControlled;
            }
        }

Usage Example

Esempio n. 1
0
        public void GetFileStatusTest()
        {
            GitRepository.Init(tempFolder);
            GitRepository tracker = new GitRepository(tempFolder);

            File.WriteAllLines(tempFilePath, lines);
            Assert.AreEqual(GitFileStatus.New, tracker.GetFileStatus(tempFile));

            tracker.StageFile(tempFile);
            tracker.Refresh();
            Assert.AreEqual(GitFileStatus.Added, tracker.GetFileStatus(tempFile));

            tracker.UnStageFile(tempFile);
            tracker.Refresh();
            Assert.AreEqual(GitFileStatus.New, tracker.GetFileStatus(tempFile));

            tracker.StageFile(tempFile);
            tracker.Refresh();
            Assert.AreEqual(GitFileStatus.Added, tracker.GetFileStatus(tempFile));

            tracker.Commit("中文 1čtestč");
            tracker.Refresh();
            Assert.AreEqual(GitFileStatus.Tracked, tracker.GetFileStatus(tempFile));

            File.WriteAllText(tempFilePath, "changed text");
            tracker.Refresh();
            Assert.AreEqual(GitFileStatus.Modified, tracker.GetFileStatus(tempFile));

            tracker.StageFile(tempFile);
            tracker.Refresh();
            Assert.AreEqual(GitFileStatus.Staged, tracker.GetFileStatus(tempFile));

            tracker.UnStageFile(tempFile);
            tracker.Refresh();
            Assert.AreEqual(GitFileStatus.Modified, tracker.GetFileStatus(tempFile));

            File.Delete(tempFilePath);
            tracker.Refresh();
            Assert.AreEqual(GitFileStatus.Deleted, tracker.GetFileStatus(tempFile));

            tracker.StageFile(tempFile);
            tracker.Refresh();
            Assert.AreEqual(GitFileStatus.Removed, tracker.GetFileStatus(tempFile));

            tracker.UnStageFile(tempFile);
            tracker.Refresh();
            Assert.AreEqual(GitFileStatus.Deleted, tracker.GetFileStatus(tempFile));
        }
All Usage Examples Of GitScc.GitRepository::GetFileStatus