public string BuildGiteaUrl(GiteaUrlType urlType, Tuple <int, int> selectionLineRange) { // https://try.gitea.io/user/repo.git string urlRoot = GetRepoUrlRoot(); // foo/bar.cs var rootDir = repository.Info.WorkingDirectory; var fileIndexPath = targetFullPath.Substring(rootDir.Length).Replace("\\", "/"); var repositoryTarget = GetGiteaTargetPath(urlType); // line selection var fragment = (selectionLineRange != null) ? (selectionLineRange.Item1 == selectionLineRange.Item2) ? string.Format("#L{0}", selectionLineRange.Item1) : string.Format("#L{0}-L{1}", selectionLineRange.Item1, selectionLineRange.Item2) : ""; var urlshowkind = "blob"; if (urlType == GiteaUrlType.Blame) { urlshowkind = "blame"; } if (urlType == GiteaUrlType.Commits) { urlshowkind = "commits"; } var fileUrl = string.Format("{0}/{4}/{1}/{2}{3}", urlRoot.Trim('/'), WebUtility.UrlEncode(repositoryTarget.Trim('/')), fileIndexPath.Trim('/'), fragment, urlshowkind); return(fileUrl); }
public string GetGiteaTargetPath(GiteaUrlType urlType) { switch (urlType) { case GiteaUrlType.CurrentBranch: return repository.Head.FriendlyName.Replace("origin/", ""); case GiteaUrlType.CurrentRevision: return repository.Commits.First().Id.ToString(8); case GiteaUrlType.CurrentRevisionFull: return repository.Commits.First().Id.Sha; case GiteaUrlType.Master: default: return "master"; } }
public string GetGiteaTargetDescription(GiteaUrlType urlType) { switch (urlType) { case GiteaUrlType.CurrentBranch: return Strings.GitAnalysisn_Branch + repository.Head.FriendlyName.Replace("origin/", ""); case GiteaUrlType.CurrentRevision: return Strings.GitAnalysis_Revision + repository.Commits.First().Id.ToString(8); case GiteaUrlType.CurrentRevisionFull: return Strings.GitAnalysis_Revision + repository.Commits.First().Id.ToString(8) + Strings.GitAnalysis_GetGiteaTargetDescription_FullID; case GiteaUrlType.Blame: return Strings.GitAnalysis_Blame; case GiteaUrlType.Commits: return Strings.GitAnalysis_Commits; case GiteaUrlType.Master: default: return "master"; } }