示例#1
0
def gcloud_installed():
    try:
        run_cmd('.', ['gcloud', '--version'])
        return True
    except OSError as e:
        logger.debug(e)
        return False
示例#2
0
文件: git.py 项目: massmutual/dbt
def _checkout(cwd, repo, branch):
    logger.debug('  Checking out branch {}.'.format(branch))

    run_cmd(cwd, ['git', 'remote', 'set-branches', 'origin', branch])
    run_cmd(cwd, ['git', 'fetch', '--tags', '--depth', '1', 'origin', branch])

    tags = list_tags(cwd)

    # Prefer tags to branches if one exists
    if branch in tags:
        spec = 'tags/{}'.format(branch)
    else:
        spec = 'origin/{}'.format(branch)

    out, err = run_cmd(cwd, ['git', 'reset', '--hard', spec])
    return out, err
示例#3
0
def _checkout(cwd, repo, branch):
    logger.debug('  Checking out branch {}.'.format(branch))

    run_cmd(cwd, ['git', 'remote', 'set-branches', 'origin', branch])
    run_cmd(cwd, ['git', 'fetch', '--tags', '--depth', '1', 'origin', branch])

    tags = list_tags(cwd)

    # Prefer tags to branches if one exists
    if branch in tags:
        spec = 'tags/{}'.format(branch)
    else:
        spec = 'origin/{}'.format(branch)

    out, err = run_cmd(cwd, ['git', 'reset', '--hard', spec],
                       env={'LC_ALL': 'C'})
    return out, err
示例#4
0
def clone(repo,
          cwd,
          dirname=None,
          remove_git_dir=False,
          revision=None,
          subdirectory=None):
    has_revision = revision is not None
    is_commit = _is_commit(revision or "")

    clone_cmd = ['git', 'clone', '--depth', '1']
    if subdirectory:
        logger.debug(
            '  Subdirectory specified: {}, using sparse checkout.'.format(
                subdirectory))
        out, _ = run_cmd(cwd, ['git', '--version'], env={'LC_ALL': 'C'})
        git_version = version.parse(
            re.search(r"\d+\.\d+\.\d+", out.decode("utf-8")).group(0))
        if not git_version >= version.parse("2.25.0"):
            # 2.25.0 introduces --sparse
            raise RuntimeError(
                "Please update your git version to pull a dbt package "
                "from a subdirectory: your version is {}, >= 2.25.0 needed".
                format(git_version))
        clone_cmd.extend(['--filter=blob:none', '--sparse'])

    if has_revision and not is_commit:
        clone_cmd.extend(['--branch', revision])

    clone_cmd.append(repo)

    if dirname is not None:
        clone_cmd.append(dirname)
    result = run_cmd(cwd, clone_cmd, env={'LC_ALL': 'C'})

    if subdirectory:
        run_cmd(os.path.join(cwd, dirname or ''),
                ['git', 'sparse-checkout', 'set', subdirectory])

    if remove_git_dir:
        rmdir(os.path.join(dirname, '.git'))

    return result
示例#5
0
文件: git.py 项目: massmutual/dbt
def clone(repo, cwd, dirname=None, remove_git_dir=False):
    clone_cmd = ['git', 'clone', '--depth', '1', repo]

    if dirname is not None:
        clone_cmd.append(dirname)

    result = run_cmd(cwd, clone_cmd)

    if remove_git_dir:
        rmdir(os.path.join(dirname, '.git'))

    return result
示例#6
0
def clone(repo, cwd, dirname=None, remove_git_dir=False):
    clone_cmd = ['git', 'clone', '--depth', '1', repo]

    if dirname is not None:
        clone_cmd.append(dirname)

    result = run_cmd(cwd, clone_cmd, env={'LC_ALL': 'C'})

    if remove_git_dir:
        rmdir(os.path.join(dirname, '.git'))

    return result
示例#7
0
def checkout(cwd, repo, branch=None):
    if branch is None:
        branch = 'master'

    logger.debug('  Checking out branch {}.'.format(branch))

    run_cmd(cwd, ['git', 'remote', 'set-branches', 'origin', branch])
    run_cmd(cwd, ['git', 'fetch', '--tags', '--depth', '1', 'origin', branch])

    tags = list_tags(cwd)

    # Prefer tags to branches if one exists
    if branch in tags:
        spec = 'tags/{}'.format(branch)
    else:
        spec = 'origin/{}'.format(branch)

    out, err = run_cmd(cwd, ['git', 'reset', '--hard', spec])
    stderr = err.decode('utf-8').strip()

    if stderr.startswith('fatal:'):
        dbt.exceptions.bad_package_spec(repo, branch, stderr)
    else:
        return out, err
示例#8
0
def clone(repo, cwd, dirname=None, remove_git_dir=False, branch=None):
    clone_cmd = ['git', 'clone', '--depth', '1']

    if branch is not None:
        clone_cmd.extend(['--branch', branch])

    clone_cmd.append(repo)

    if dirname is not None:
        clone_cmd.append(dirname)

    result = run_cmd(cwd, clone_cmd, env={'LC_ALL': 'C'})

    if remove_git_dir:
        rmdir(os.path.join(dirname, '.git'))

    return result
示例#9
0
def _checkout(cwd, repo, revision):
    logger.debug('  Checking out revision {}.'.format(revision))

    fetch_cmd = ["git", "fetch", "origin", "--depth", "1"]

    if _is_commit(revision):
        run_cmd(cwd, fetch_cmd + [revision])
    else:
        run_cmd(cwd, ['git', 'remote', 'set-branches', 'origin', revision])
        run_cmd(cwd, fetch_cmd + ["--tags", revision])

    if _is_commit(revision):
        spec = revision
    # Prefer tags to branches if one exists
    elif revision in list_tags(cwd):
        spec = 'tags/{}'.format(revision)
    else:
        spec = 'origin/{}'.format(revision)

    out, err = run_cmd(cwd, ['git', 'reset', '--hard', spec],
                       env={'LC_ALL': 'C'})
    return out, err
示例#10
0
def get_current_sha(cwd):
    out, err = run_cmd(cwd, ['git', 'rev-parse', 'HEAD'], env={'LC_ALL': 'C'})

    return out.decode('utf-8')
示例#11
0
def list_tags(cwd):
    out, err = run_cmd(cwd, ['git', 'tag', '--list'], env={'LC_ALL': 'C'})
    tags = out.decode('utf-8').strip().split("\n")
    return tags
示例#12
0
def list_tags(cwd):
    out, err = run_cmd(cwd, ['git', 'tag', '--list'], env={'LC_ALL': 'C'})
    tags = out.decode('utf-8').strip().split("\n")
    return tags
示例#13
0
def remove_remote(cwd):
    return run_cmd(cwd, ['git', 'remote', 'rm', 'origin'], env={'LC_ALL': 'C'})
示例#14
0
def get_current_sha(cwd):
    out, err = run_cmd(cwd, ['git', 'rev-parse', 'HEAD'], env={'LC_ALL': 'C'})

    return out.decode('utf-8')
示例#15
0
文件: git.py 项目: massmutual/dbt
def remove_remote(cwd):
    return run_cmd(cwd, ['git', 'remote', 'rm', 'origin'])
示例#16
0
文件: git.py 项目: massmutual/dbt
def get_current_sha(cwd):
    out, err = run_cmd(cwd, ['git', 'rev-parse', 'HEAD'])

    return out.decode('utf-8')
示例#17
0
def remove_remote(cwd):
    return run_cmd(cwd, ['git', 'remote', 'rm', 'origin'], env={'LC_ALL': 'C'})
示例#18
0
def setup_default_credentials():
    if gcloud_installed():
        run_cmd('.', ["gcloud", "auth", "application-default", "login"])
    else:
        raise dbt.exceptions.RuntimeException(NOT_INSTALLED_MSG)
示例#19
0
def list_tags(cwd):
    out, err = run_cmd(cwd, ['git', 'tag', '--list'])
    tags = set(out.decode('utf-8').strip().split("\n"))
    return tags