public override SourceControlFileInfo.eRepositoryItemStatus GetFileStatus(string Path, bool ShowIndicationkForLockedItems, ref string error) { try { Console.WriteLine("GITHub - GetFileStatus"); Path = System.IO.Path.GetFullPath(Path); int RepositoryFolderCount = RepositoryRootFolder.Count(); string localFilePath = string.Empty; if (Path.Count() > (RepositoryFolderCount)) { localFilePath = Path.Substring(RepositoryFolderCount); } if (localFilePath.StartsWith("\\")) { localFilePath = localFilePath.Substring(1); } using (var repo = new LibGit2Sharp.Repository(RepositoryRootFolder)) { if (Path == SolutionFolder && repo.RetrieveStatus().Count() != 0) { return(SourceControlFileInfo.eRepositoryItemStatus.Modified); } foreach (var item in repo.RetrieveStatus()) { if (NormalizePath(item.FilePath).StartsWith(NormalizePath(localFilePath)) && item.State != FileStatus.NewInWorkdir) { return(SourceControlFileInfo.eRepositoryItemStatus.Modified); } if (NormalizePath(localFilePath) == NormalizePath(item.FilePath)) { return(GetItemStatus(item.State)); } else if (NormalizePath(item.FilePath).Contains(NormalizePath(localFilePath)) && !localFilePath.EndsWith(".xml")) { return(GetItemStatus(item.State)); } } } return(SourceControlFileInfo.eRepositoryItemStatus.Equel); } catch (Exception ex) { error = ex.Message + Environment.NewLine + ex.InnerException; return(SourceControlFileInfo.eRepositoryItemStatus.Unknown); } }
public override ObservableList <SourceControlFileInfo> GetPathFilesStatus(string Path, ref string error, bool includLockedFiles = false) { Console.WriteLine("GITHub - GetPathFilesStatus"); ObservableList <SourceControlFileInfo> list = new ObservableList <SourceControlFileInfo>(); try { string relativePath = System.IO.Path.GetFullPath(Path); relativePath = relativePath.Substring(RepositoryRootFolder.Count()); if (relativePath.StartsWith(@"\")) { relativePath = relativePath.Substring(1); } using (var repo = new LibGit2Sharp.Repository(RepositoryRootFolder)) { foreach (var item in repo.RetrieveStatus()) { if (WorkSpace.Instance.SolutionRepository.IsSolutionPathToAvoid(System.IO.Path.Combine(RepositoryRootFolder, item.FilePath))) { continue; } if (System.IO.Path.GetExtension(item.FilePath) == ".ldb" || System.IO.Path.GetExtension(item.FilePath) == ".ignore") { continue; } //sometimes remote file path uses / otherwise \ our code should be path independent if (relativePath == string.Empty || System.IO.Path.GetFullPath(System.IO.Path.Combine(RepositoryRootFolder, item.FilePath)).StartsWith(System.IO.Path.GetFullPath(Path))) { SourceControlFileInfo SCFI = new SourceControlFileInfo(); SCFI.Path = RepositoryRootFolder + @"\" + item.FilePath; SCFI.SolutionPath = @"~\" + item.FilePath; SCFI.Status = SourceControlFileInfo.eRepositoryItemStatus.Unknown; SCFI.Selected = true; SCFI.Diff = ""; if (item.State == FileStatus.ModifiedInWorkdir) { SCFI.Status = SourceControlFileInfo.eRepositoryItemStatus.Modified; } if (item.State == FileStatus.ModifiedInIndex) { SCFI.Status = SourceControlFileInfo.eRepositoryItemStatus.ModifiedAndResolved; } if (item.State == FileStatus.NewInWorkdir) { SCFI.Status = SourceControlFileInfo.eRepositoryItemStatus.New; } if (item.State == FileStatus.DeletedFromWorkdir) { SCFI.Status = SourceControlFileInfo.eRepositoryItemStatus.Deleted; } if (SCFI.Status != SourceControlFileInfo.eRepositoryItemStatus.Unknown) { list.Add(SCFI); } } } } return(list); } catch (Exception ex) { error = ex.Message + Environment.NewLine + ex.InnerException; return(list); } }
public override ObservableList <SourceControlFileInfo> GetPathFilesStatus(string Path, ref string error, List <string> PathsToIgnore = null, bool includLockedFiles = false) { Console.WriteLine("GITHub - GetPathFilesStatus"); ObservableList <SourceControlFileInfo> list = new ObservableList <SourceControlFileInfo>(); try { string relativePath = System.IO.Path.GetFullPath(Path); relativePath = relativePath.Substring(RepositoryRootFolder.Count()); if (relativePath.StartsWith(@"\")) { relativePath = relativePath.Substring(1); } using (var repo = new LibGit2Sharp.Repository(RepositoryRootFolder)) { foreach (var item in repo.RetrieveStatus()) { if (PathsToIgnore != null) { bool pathToIgnoreFound = false; foreach (string pathToIgnore in PathsToIgnore) { if (System.IO.Path.GetFullPath(RepositoryRootFolder + @"\" + item.FilePath).Contains(System.IO.Path.GetFullPath(pathToIgnore)) || item.FilePath.Contains(pathToIgnore)) { pathToIgnoreFound = true; break; } } if (pathToIgnoreFound) { continue; } } if (System.IO.Path.GetExtension(item.FilePath) == ".ldb" || System.IO.Path.GetExtension(item.FilePath) == ".ignore") { continue; } if (relativePath == string.Empty || item.FilePath.StartsWith(relativePath)) { SourceControlFileInfo SCFI = new SourceControlFileInfo(); SCFI.Path = RepositoryRootFolder + @"\" + item.FilePath; SCFI.SolutionPath = @"~\" + item.FilePath; SCFI.Status = SourceControlFileInfo.eRepositoryItemStatus.Unknown; SCFI.Selected = true; SCFI.Diff = ""; if (item.State == FileStatus.ModifiedInWorkdir) { SCFI.Status = SourceControlFileInfo.eRepositoryItemStatus.Modified; } if (item.State == FileStatus.ModifiedInIndex) { SCFI.Status = SourceControlFileInfo.eRepositoryItemStatus.ModifiedAndResolved; } if (item.State == FileStatus.NewInWorkdir) { SCFI.Status = SourceControlFileInfo.eRepositoryItemStatus.New; } if (item.State == FileStatus.DeletedFromWorkdir) { SCFI.Status = SourceControlFileInfo.eRepositoryItemStatus.Deleted; } if (SCFI.Status != SourceControlFileInfo.eRepositoryItemStatus.Unknown) { list.Add(SCFI); } } } } return(list); } catch (Exception ex) { error = ex.Message + Environment.NewLine + ex.InnerException; return(list); } }