forked from qt-creator/qt-creator
		
	Git: Add new class GitRemote
Allows to split a remote URL and performs some validation checks on the elements. Change-Id: I048373076b1a1553fdd7bed2986a41cc087138b0 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
		
				
					committed by
					
						
						André Hartmann
					
				
			
			
				
	
			
			
			
						parent
						
							6e7d2a4001
						
					
				
				
					commit
					b0ac6435b3
				
			@@ -3191,6 +3191,39 @@ void GitClient::StashInfo::end()
 | 
			
		||||
    m_stashResult = NotStashed;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GitRemote
 | 
			
		||||
 | 
			
		||||
GitRemote::GitRemote(const QString &url)
 | 
			
		||||
{
 | 
			
		||||
    static const QRegularExpression remotePattern(
 | 
			
		||||
                "^(?:(?<protocol>[^:]+)://)?(?:(?<user>[^@]+)@)?(?<host>[^:/]+)"
 | 
			
		||||
                "(?::(?<port>\\d+))?:?(?<path>/.*)$");
 | 
			
		||||
 | 
			
		||||
    if (url.isEmpty())
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    // Check for local remotes (refer to the root or relative path)
 | 
			
		||||
    // On Windows, local paths typically starts with <drive>:
 | 
			
		||||
    if (url.startsWith('/') || url.startsWith('.')
 | 
			
		||||
            || (HostOsInfo::isWindowsHost() && url[1] == ':')) {
 | 
			
		||||
        protocol = "file";
 | 
			
		||||
        path = QDir::fromNativeSeparators(url);
 | 
			
		||||
        isValid = QDir(path).exists() || QDir(path + ".git").exists();
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const QRegularExpressionMatch match = remotePattern.match(url);
 | 
			
		||||
    if (!match.hasMatch())
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    protocol = match.captured("protocol");
 | 
			
		||||
    userName = match.captured("user");
 | 
			
		||||
    host     = match.captured("host");
 | 
			
		||||
    port     = match.captured("port").toUShort();
 | 
			
		||||
    path     = match.captured("path");
 | 
			
		||||
    isValid  = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Internal
 | 
			
		||||
} // namespace Git
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user