示例#1
0
def get_lead_time(release: release.Release,
                  repo: repository.Repository) -> timedelta:

    if len(repo.get_releases()) == 1:
        commit_times = [
            datetime.timestamp(c.get_date()) -
            datetime.timestamp(repo.get_creation_time())
            for c in repo.get_commits()
        ]
    else:
        releases = repo.get_releases()
        release_index = None
        for index, r in enumerate(releases):
            if r.get_id() == release.get_id():
                release_index = index
                break
        if release_index != None:
            if release_index < len(releases) - 1:
                prev_release = releases[release_index + 1]
            else:
                return timedelta(seconds=0)
        else:
            return timedelta(seconds=0)
        commits = get_commits_between_releases(release, prev_release, repo)
        commit_times = [
            datetime.timestamp(c.get_date()) -
            datetime.timestamp(prev_release.get_creation_time())
            for c in commits
        ]
    # Stop disvision by zero
    if len(commit_times) == 0:
        return timedelta(seconds=sum(commit_times))
    return timedelta(seconds=sum(commit_times) / len(commit_times))
示例#2
0
def get_commits_between_releases(
        release: release.Release, last_release: release.Release,
        repo: repository.Repository) -> [commit.Commit]:

    commits = []
    for c in repo.get_commits():
        if (c.get_date() >= last_release.get_creation_time()
                and c.get_date() <= release.get_creation_time()):
            commits.append(c)
    return commits
def test_get_commits():
    try:
        repo = Repository(session, DATA_OBJECT)
        repo.get_commits()
    except:
        pass