Exemplo n.º 1
0
def myparse(
        root, describe_command=DEFAULT_DESCRIBE, config=None):
    """
    rewriting of setuptools_scm.git.parse method to remove -branch string
    from any tags.  This library is clearly not designed for people to adjust
    its function so I had to lift entire function from Aug 8 master with SHA 
    a91b40c99ea9bfc4289272285f17e1d43c243b76

    """
    if not config:
        config = Configuration(root=root)

    if not has_command("git"):
        return

    wd = GitWorkdir.from_potential_worktree(config.absolute_root)
    if wd is None:
        return

    out, unused_err, ret = wd.do_ex(describe_command)
    if ret:
        # If 'git describe' failed, try to get the information otherwise.
        rev_node = wd.node()
        dirty = wd.is_dirty()

        if rev_node is None:
            return meta("0.0", distance=0, dirty=dirty, config=config)

        return meta(
            "0.0",
            distance=wd.count_all_nodes(),
            node="g" + rev_node,
            dirty=dirty,
            branch=wd.get_branch(),
            config=config,
        )
    else:
        tag, number, node, dirty = _git_parse_describe(out)
        branch = wd.get_branch()
        if number:
            return meta(
                tag.replace('-branch',''),
                config=config,
                distance=number,
                node=node,
                dirty=dirty,
                branch=branch,
            )
        else:
            return meta(tag.replace('-branch', ''), config=config, node=node, dirty=dirty, branch=branch)
Exemplo n.º 2
0
def parse(root, *, config):
    """
    Based on https://github.com/pypa/setuptools_scm/blob/master/src/setuptools_scm/git.py#parse

    This is almost a verbatim copy, except that we tell setuptools_scm that the tag is preformatted
    to prevent them from applying Python's version normalisation.
    """
    if not has_command("git"):
        return

    wd = GitWorkdir.from_potential_worktree(config.absolute_root)
    if wd is None:
        return
    warn_on_shallow(wd)

    describe_command = config.git_describe_command or DEFAULT_DESCRIBE

    out, unused_err, ret = wd.do_ex(describe_command)
    if ret:
        # If 'git git_describe_command' failed, try to get the information otherwise.
        tag = '0.1.0'
        distance = wd.count_all_nodes()
        dirty = wd.is_dirty()
        node = None
        branch = None

        rev_node = wd.node()
        if rev_node is not None:
            node = f'g{rev_node}'
            branch = wd.get_branch()
    else:
        tag, distance, node, dirty = _git_parse_describe(out)
        branch = wd.get_branch()

    version = meta(
        semver.parse_version_info(tag),
        distance=distance,
        dirty=dirty,
        node=node,
        preformatted=True,
        config=config,
        branch=branch
    )
    version.preformatted = False

    return version
Exemplo n.º 3
0
def parse_git_describe_string(_root, config=None):
    """
	Return a setuptools_scm parsed version from a Git describe string found in the environment
	variable GIT_DESCRIBE_STRING.

	:param str _root: Relative path to cwd, used for finding the scm root.
	:param setuptools_scm.config.Configuration config: Configuration instance.
	:return: Parsed version or ``None``.
	:rtype: setuptools_scm.version.ScmVersion
	"""
    # pylint: disable=import-error
    # Those imports are only available at install time
    from setuptools_scm.git import _git_parse_describe
    from setuptools_scm.version import meta

    git_describe = os.environ.get('GIT_DESCRIBE_STRING')
    if not git_describe:
        return None

    tag, number, node, dirty = _git_parse_describe(git_describe)
    kwargs = {'distance': number} if number else {}
    return meta(tag, dirty=dirty, node=node, config=config, **kwargs)
Exemplo n.º 4
0
def test_parse_describe_output(given, tag, number, node, dirty):
    parsed = git._git_parse_describe(given)
    assert parsed == (tag, number, node, dirty)
Exemplo n.º 5
0
def parse(root,
          describe_command=DEFAULT_DESCRIBE,
          pre_parse=warn_on_shallow,
          config=None):
    """
    :param pre_parse: experimental pre_parse action, may change at any time
    """
    if not config:
        config = Configuration(root=root)

    if not has_command("git"):
        return

    wd = GitWorkdir.from_potential_worktree(config.absolute_root)
    if wd is None:
        return
    if pre_parse:
        pre_parse(wd)

    if config.git_describe_command:
        describe_command = config.git_describe_command

    out, unused_err, ret = wd.do_ex(describe_command)
    if ret:
        # If 'git git_describe_command' failed, try to get the information otherwise.
        branch, err, ret = wd.do_ex("git symbolic-ref --short HEAD")

        rev_node = wd.node()
        dirty = wd.is_dirty()

        if rev_node is None:
            return meta("0.0",
                        distance=0,
                        dirty=dirty,
                        branch=branch,
                        config=config)

        return meta(
            "0.0",
            distance=wd.count_all_nodes(),
            node="g" + rev_node,
            dirty=dirty,
            branch=wd.get_branch(),
            config=config,
        )
    else:
        tag, number, node, dirty = _git_parse_describe(out)

        branch = wd.get_branch()
        if number:
            return meta(
                tag,
                config=config,
                distance=number,
                node=node,
                dirty=dirty,
                branch=branch,
            )
        else:
            return meta(tag,
                        config=config,
                        node=node,
                        dirty=dirty,
                        branch=branch)