/// <summary> /// TODO: only get GitDetail on Project level? /// </summary> /// <param name="path"></param> /// <returns></returns> public static GitDetail GetGitDetail(string path) { GitDetail detail = null; if (string.IsNullOrEmpty(path)) return detail; try { var repoPath = Repository.FindRepository(path); if (string.IsNullOrEmpty(repoPath)) return detail; var repo = new Repository(repoPath); detail = new GitDetail(); // Convert to forward slash detail.LocalWorkingDirectory = repo.WorkingDirectory.BackSlashToForwardSlash(); if (repo.Head == null) return detail; var branch = repo.CurrentBranch; detail.RemoteRepositoryUrl = repo.Config["remote.origin.url"]; detail.RemoteBranch = branch.Name; // detail.Description = repo.Head.CurrentCommit.ShortHash; detail.RelativePath = PathUtility.MakeRelativePath(Path.GetDirectoryName(repoPath), path); } catch (Exception) { // SWALLOW exception? // Console.Error.WriteLine(e.Message); } return detail; }
private static GitDetail GetGitDetailCore(string path) { GitDetail detail = null; try { var repoPath = Repository.FindRepository(path); if (string.IsNullOrEmpty(repoPath)) { // Use local modified date when git repo is not found var time = File.GetLastWriteTimeUtc(path); detail = new GitDetail { CommitDetail = new CommitDetail { Author = new UserInfo { Date = time, } } }; return(detail); } var directory = Path.GetDirectoryName(repoPath); var wrapper = RepoCache.GetOrAdd(directory, s => new RepoWrapper(CoreRepository.Open(s))); var repo = wrapper.Repo; path = PathUtility.MakeRelativePath(directory, path); detail = new GitDetail(); var walker = wrapper.Walker; // TODO: Disable fetching commit detail for now until GlobalContext is added // var commitDetail = walker.GetCommitDetail(path); // detail.CommitDetail = commitDetail; // Convert to forward slash detail.LocalWorkingDirectory = repo.WorkingDirectory.FullName; if (repo.Head == null) { return(detail); } var branch = repo.getBranch(); detail.RemoteRepositoryUrl = repo.Config.getString("remote", "origin", "url"); detail.RemoteBranch = branch; detail.RelativePath = path; return(detail); } catch (Exception e) { Logger.LogWarning($"Have issue extracting repo detail for {path}: {e.Message}"); } return(detail); }
private static GitDetail GetGitDetailCore(string path) { GitDetail detail = null; try { var repoPath = Repository.FindRepository(path); if (string.IsNullOrEmpty(repoPath)) { // Use local modified date when git repo is not found var time = File.GetLastWriteTimeUtc(path); detail = new GitDetail { CommitDetail = new CommitDetail { Author = new UserInfo { Date = time, } } }; return detail; } var directory = Path.GetDirectoryName(repoPath); var wrapper = RepoCache.GetOrAdd(directory, s => new RepoWrapper(CoreRepository.Open(s))); var repo = wrapper.Repo; path = PathUtility.MakeRelativePath(directory, path); detail = new GitDetail(); var walker = wrapper.Walker; // TODO: Disable fetching commit detail for now until GlobalContext is added // var commitDetail = walker.GetCommitDetail(path); // detail.CommitDetail = commitDetail; // Convert to forward slash detail.LocalWorkingDirectory = repo.WorkingDirectory.FullName; if (repo.Head == null) return detail; var branch = repo.getBranch(); detail.RemoteRepositoryUrl = repo.Config.getString("remote", "origin", "url"); detail.RemoteBranch = branch; detail.RelativePath = path; return detail; } catch (Exception e) { Logger.LogWarning($"Have issue extracting repo detail for {path}: {e.Message}"); } return detail; }
/// <summary> /// TODO: only get GitDetail on Project level? /// </summary> /// <param name="path"></param> /// <returns></returns> public static GitDetail GetGitDetail(string path) { GitDetail detail = null; if (string.IsNullOrEmpty(path)) { return(detail); } try { var repoPath = Repository.FindRepository(path); if (string.IsNullOrEmpty(repoPath)) { return(detail); } var repo = new Repository(repoPath); detail = new GitDetail(); // Convert to forward slash detail.LocalWorkingDirectory = repo.WorkingDirectory.BackSlashToForwardSlash(); if (repo.Head == null) { return(detail); } var branch = repo.CurrentBranch; detail.RemoteRepositoryUrl = repo.Config["remote.origin.url"]; detail.RemoteBranch = branch.Name; // detail.Description = repo.Head.CurrentCommit.ShortHash; detail.RelativePath = PathUtility.MakeRelativePath(Path.GetDirectoryName(repoPath), path); } catch (Exception) { // SWALLOW exception? // Console.Error.WriteLine(e.Message); } return(detail); }