from reviewboard.scmtools import sshutils from reviewboard.scmtools.core import SCMTool, HEAD, PRE_CREATION from reviewboard.scmtools.errors import FileNotFoundError, \ InvalidRevisionFormatError, \ RepositoryNotFoundError, \ SCMError GIT_DIFF_EMPTY_CHANGESET_SIZE = 3 GIT_DIFF_PREFIX = re.compile('^[ab]/') # Register these URI schemes so we can handle them properly. urlparse.uses_netloc.append('git') sshutils.register_rbssh('GIT_SSH') class ShortSHA1Error(InvalidRevisionFormatError): def __init__(self, path, revision, *args, **kwargs): InvalidRevisionFormatError.__init__( self, path=path, revision=revision, detail='The SHA1 is too short. Make sure the diff is generated ' 'with `git diff --full-index`.', *args, **kwargs) class GitTool(SCMTool): """
import os import re import subprocess import tempfile import urlparse from djblets.util.filesystem import is_exe_in_path from reviewboard.scmtools import sshutils from reviewboard.scmtools.core import SCMTool, HEAD, PRE_CREATION from reviewboard.scmtools.errors import SCMError, FileNotFoundError, \ RepositoryNotFoundError from reviewboard.diffviewer.parser import DiffParser, DiffParserError sshutils.register_rbssh('CVS_RSH') class CVSTool(SCMTool): name = "CVS" supports_authentication = True dependencies = { 'executables': ['cvs'], } rev_re = re.compile(r'^.*?(\d+(\.\d+)+)\r?$') repopath_re = re.compile(r'^(?P<hostname>.*):(?P<port>\d+)?(?P<path>.*)') ext_cvsroot_re = re.compile(r':ext:([^@]+@)?(?P<hostname>[^:/]+)') def __init__(self, repository): SCMTool.__init__(self, repository)
from django.utils.translation import ugettext as _ from reviewboard.diffviewer.parser import DiffParser from reviewboard.scmtools import sshutils from reviewboard.scmtools.certs import Certificate from reviewboard.scmtools.core import SCMTool, HEAD, PRE_CREATION, UNKNOWN from reviewboard.scmtools.errors import SCMError, \ FileNotFoundError, \ UnverifiedCertificateError, \ RepositoryNotFoundError # Register these URI schemes so we can handle them properly. sshutils.ssh_uri_schemes.append('svn+ssh') sshutils.register_rbssh('SVN_SSH') class SVNCertificateFailures: """SVN HTTPS certificate failure codes. These map to the various SVN HTTPS certificate failures in libsvn. """ NOT_YET_VALID = 1 << 0 EXPIRED = 1 << 1 CN_MISMATCH = 1 << 2 UNKNOWN_CA = 1 << 3 class SVNTool(SCMTool): name = "Subversion"
base = base.replace(m.group(0), '') else: self.local_site_name = None super(RBRemoteSSHTransport, self).__init__(base, *args, **kwargs) def _build_medium(self): client_medium, auth = \ super(RBRemoteSSHTransport, self)._build_medium() client_medium._vendor = RBSSHVendor(self.local_site_name) return client_medium, auth vendor = RBSSHVendor() register_ssh_vendor("rbssh", vendor) register_default_ssh_vendor(vendor) sshutils.register_rbssh('BZR_SSH') register_lazy_transport('bzr+ssh://', 'reviewboard.scmtools.bzr', 'RBRemoteSSHTransport') # BZRTool: An interface to Bazaar SCM Tool (http://bazaar-vcs.org/) class BZRTool(SCMTool): name = "Bazaar" dependencies = { 'modules': ['bzrlib'], } # Timestamp format in bzr diffs. # This isn't totally accurate: there should be a %z at the end. # Unfortunately, strptime() doesn't support %z. DIFF_TIMESTAMP_FORMAT = '%Y-%m-%d %H:%M:%S'
base = base.replace(m.group(0), '') else: self.local_site_name = None super(RBRemoteSSHTransport, self).__init__(base, *args, **kwargs) def _build_medium(self): client_medium, auth = \ super(RBRemoteSSHTransport, self)._build_medium() client_medium._vendor = RBSSHVendor(self.local_site_name) return client_medium, auth vendor = RBSSHVendor() register_ssh_vendor("rbssh", vendor) register_default_ssh_vendor(vendor) sshutils.register_rbssh('BZR_SSH') register_lazy_transport('bzr+ssh://', 'reviewboard.scmtools.bzr', 'RBRemoteSSHTransport') # BZRTool: An interface to Bazaar SCM Tool (http://bazaar-vcs.org/) class BZRTool(SCMTool): name = "Bazaar" dependencies = { 'modules': ['bzrlib'], } # Timestamp format in bzr diffs. # This isn't totally accurate: there should be a %z at the end. # Unfortunately, strptime() doesn't support %z.
import os import re import tempfile import urlparse from djblets.util.filesystem import is_exe_in_path from reviewboard.scmtools import sshutils from reviewboard.scmtools.core import SCMTool, HEAD, PRE_CREATION from reviewboard.scmtools.errors import SCMError, FileNotFoundError, \ RepositoryNotFoundError from reviewboard.diffviewer.parser import DiffParser, DiffParserError sshutils.register_rbssh('CVS_RSH') class CVSTool(SCMTool): name = "CVS" supports_authentication = True dependencies = { 'executables': ['cvs'], } rev_re = re.compile(r'^.*?(\d+(\.\d+)+)\r?$') repopath_re = re.compile(r'^(?P<hostname>.*):(?P<port>\d+)?(?P<path>.*)') ext_cvsroot_re = re.compile(r':ext:([^@]+@)?(?P<hostname>[^:/]+)') def __init__(self, repository): super(CVSTool, self).__init__(repository)
from reviewboard.scmtools import sshutils from reviewboard.scmtools.certs import Certificate from reviewboard.scmtools.core import SCMTool, HEAD, PRE_CREATION, UNKNOWN from reviewboard.scmtools.errors import ( AuthenticationError, FileNotFoundError, RepositoryNotFoundError, SCMError, UnverifiedCertificateError, ) # Register these URI schemes so we can handle them properly. sshutils.ssh_uri_schemes.append("svn+ssh") sshutils.register_rbssh("SVN_SSH") class SVNCertificateFailures: """SVN HTTPS certificate failure codes. These map to the various SVN HTTPS certificate failures in libsvn. """ NOT_YET_VALID = 1 << 0 EXPIRED = 1 << 1 CN_MISMATCH = 1 << 2 UNKNOWN_CA = 1 << 3 class SVNTool(SCMTool):