Example #1
0
        private static string?ResolveUrl(Uri uri, GitEnvironment environment, string?remoteName, int recursionDepth, Action <string, object?[]>?logWarning)
        {
            if (!uri.IsFile)
            {
                return(uri.AbsoluteUri);
            }

            var repositoryPath = uri.LocalPath;

            if (!GitRepository.TryGetRepositoryLocation(repositoryPath, out var remoteRepositoryLocation))
            {
                logWarning?.Invoke(Resources.RepositoryHasNoRemote, new[] { repositoryPath });
                return(uri.AbsoluteUri);
            }

            if (recursionDepth > RemoteRepositoryRecursionLimit)
            {
                logWarning?.Invoke(Resources.RepositoryUrlEvaluationExceededMaximumAllowedDepth, new[] { RemoteRepositoryRecursionLimit.ToString() });
                return(null);
            }

            var remoteRepository = GitRepository.OpenRepository(remoteRepositoryLocation, environment);

            if (remoteRepository.WorkingDirectory == null)
            {
                logWarning?.Invoke(Resources.UnableToLocateRepository, new[] { repositoryPath });
                return(null);
            }

            return(GetRepositoryUrl(remoteRepository, remoteName, recursionDepth + 1, logWarning) ?? uri.AbsoluteUri);
        }
Example #2
0
            public Reader(string gitDirectory, string commonDirectory, GitEnvironment environment, Func <string, TextReader>?fileOpener = null)
            {
                NullableDebug.Assert(environment != null);

                _environment       = environment;
                _gitDirectoryPosix = PathUtils.ToPosixDirectoryPath(gitDirectory);
                _commonDirectory   = commonDirectory;
                _fileOpener        = fileOpener ?? File.OpenText;
            }
Example #3
0
 private static GitRepository?CreateSubmoduleRepository(GitEnvironment environment, string directoryFullPath)
 => GitRepository.TryGetRepositoryLocation(directoryFullPath, out var location) ?
 GitRepository.OpenRepository(location, environment) : null;