Ejemplo n.º 1
0
def getCommits(repo, startdate, enddate):
    localfolder = urlToFolder(repo.url)
    differ = gdiff.diff_match_patch()

    repoloc = Config.fsdir + 'git-repos/' + localfolder + '/'
    if os.path.exists(repoloc):
        c = pygit.Repo(repoloc)
    else:
        os.makedirs(repoloc)
        c = pygit.Repo.init(repoloc)
        c.create_remote('origin', repo.url)

    c.remotes.origin.fetch()
    c.remotes.origin.pull('master')

    commits = []
    msgs = c.iter_commits(since=unixToGitDateFormat(startdate))
    for m in msgs:
        if m.committed_date > enddate: continue
        
        # TODO BUG: We are unable to get a git diff of the first commit.
        #   http://osdir.com/ml/version-control.git/2005-05/msg01309.html
        #   http://git.661346.n2.nabble.com/git-diff-tree-against-the-root-commit-td5685272.html
        if not m.parents: continue

        c = GitCommit()
        alldiffs = c.getChangedTexts(m)
        c.loadFromSource(repo, m.message, m.committed_date, m.stats.files.keys(), m.__str__(), alldiffs)
        commits.append(c)
    return commits
Ejemplo n.º 2
0
def getCommits(repo, startdate, enddate):
    localfolder = urlToFolder(repo.url)
    differ = gdiff.diff_match_patch()

    repoloc = Config.fsdir + 'git-repos/' + localfolder + '/'
    if os.path.exists(repoloc):
        c = pygit.Repo(repoloc)
    else:
        os.makedirs(repoloc)
        c = pygit.Repo.init(repoloc)
        c.create_remote('origin', repo.url)

    c.remotes.origin.fetch()
    c.remotes.origin.pull('master')

    commits = []
    msgs = c.iter_commits(since=unixToGitDateFormat(startdate))
    for m in msgs:
        if m.committed_date > enddate: continue

        # TODO BUG: We are unable to get a git diff of the first commit.
        #   http://osdir.com/ml/version-control.git/2005-05/msg01309.html
        #   http://git.661346.n2.nabble.com/git-diff-tree-against-the-root-commit-td5685272.html
        if not m.parents: continue

        c = GitCommit()
        alldiffs = c.getChangedTexts(m)
        c.loadFromSource(repo, m.message, m.committed_date,
                         m.stats.files.keys(), m.__str__(), alldiffs)
        commits.append(c)
    return commits
Ejemplo n.º 3
0
    def find(query, components):
        conn = DB.getConn()
        c = conn.cursor()
        
        c.execute(query, components)
        commitrows = c.fetchall()
        commitfiles = []

        if commitrows:
                allcommitids = ",".join([str(int(commit[0])) for commit in commitrows])

                #This is poor practice, but we assured ourselves the value is composed only of ints first
                DB.execute(c, "SELECT * from " + DB.commitfile._table + " WHERE commitid IN (" + allcommitids + ")")
                commitfiles = c.fetchall()

                DB.execute(c, "SELECT * from " + DB.commitkeyword._table + " WHERE commitid IN (" + allcommitids + ")")
                commitkeywords = c.fetchall()
                
                DB.execute(c, "SELECT commitid, case when length(data) < 307200 then data else 'TOOLARGE' end as data from " + DB.commitdiffs._table + " WHERE commitid IN (" + allcommitids + ")")
                commitdata = c.fetchall()
                

        commits = []
        for i in commitrows:
                r = Repo()
                r.loadFromValues(i[DB.commit._numColumns + DB.repo.id], i[DB.commit._numColumns + DB.repo.name], i[DB.commit._numColumns + DB.repo.repotypeid], i[DB.commit._numColumns + DB.repo.url],
                        i[DB.commit._numColumns + DB.repo.viewlink], i[DB.commit._numColumns + DB.repo.tagname], i[DB.commit._numColumns + DB.repo.tagmaturity])

                files = [file[DB.commitfile.file] for file in commitfiles
                        if file[DB.commitfile.commitid] == i[DB.commit.id]]
                keywords = [keyword[DB.commitkeyword.keyword] for keyword in commitkeywords
                            if keyword[DB.commitkeyword.commitid] == i[DB.commit.id]]
                data = [cdata[DB.commitdiffs.data] for cdata in commitdata
                            if cdata[DB.commitdiffs.commitid] == i[DB.commit.id]][0]

                if i[DB.commit._numColumns + DB.repo.repotypeid] == Repo.Type.GIT:
                    c = GitCommit()
                elif i[DB.commit._numColumns + DB.repo.repotypeid] == Repo.Type.SVN:
                    c = SVNCommit()
                else:
                    c = Commit()
                c.loadFromDatabase(r, i, files, keywords, data)

                commits.append(c)

        return commits
def object_hash(fd, fmt, repo=None):
    data = fd.read()
    # Choose constructor depending on
    # object type found in header.
    if fmt == b'commit':
        obj = GitCommit(repo, data)
    elif fmt == b'tree':
        obj = GitTree(repo, data)
    elif fmt == b'tag':
        obj = GitTag(repo, data)
    elif fmt == b'blob':
        obj = GitBlob(repo, data)
    else:
        raise Exception("Unknown type %s!" % fmt)
    return object_write(obj, repo)
Ejemplo n.º 5
0
    def find(query, components):
        conn = DB.getConn()
        c = conn.cursor()

        c.execute(query, components)
        commitrows = c.fetchall()
        commitfiles = []

        if commitrows:
            allcommitids = ",".join(
                [str(int(commit[0])) for commit in commitrows])

            #This is poor practice, but we assured ourselves the value is composed only of ints first
            DB.execute(
                c, "SELECT * from " + DB.commitfile._table +
                " WHERE commitid IN (" + allcommitids + ")")
            commitfiles = c.fetchall()

            DB.execute(
                c, "SELECT * from " + DB.commitkeyword._table +
                " WHERE commitid IN (" + allcommitids + ")")
            commitkeywords = c.fetchall()

            DB.execute(
                c,
                "SELECT commitid, case when length(data) < 307200 then data else 'TOOLARGE' end as data from "
                + DB.commitdiffs._table + " WHERE commitid IN (" +
                allcommitids + ")")
            commitdata = c.fetchall()

        commits = []
        for i in commitrows:
            r = Repo()
            r.loadFromValues(i[DB.commit._numColumns + DB.repo.id],
                             i[DB.commit._numColumns + DB.repo.name],
                             i[DB.commit._numColumns + DB.repo.repotypeid],
                             i[DB.commit._numColumns + DB.repo.url],
                             i[DB.commit._numColumns + DB.repo.viewlink],
                             i[DB.commit._numColumns + DB.repo.tagname],
                             i[DB.commit._numColumns + DB.repo.tagmaturity])

            files = [
                file[DB.commitfile.file] for file in commitfiles
                if file[DB.commitfile.commitid] == i[DB.commit.id]
            ]
            keywords = [
                keyword[DB.commitkeyword.keyword] for keyword in commitkeywords
                if keyword[DB.commitkeyword.commitid] == i[DB.commit.id]
            ]
            data = [
                cdata[DB.commitdiffs.data] for cdata in commitdata
                if cdata[DB.commitdiffs.commitid] == i[DB.commit.id]
            ][0]

            if i[DB.commit._numColumns + DB.repo.repotypeid] == Repo.Type.GIT:
                c = GitCommit()
            elif i[DB.commit._numColumns +
                   DB.repo.repotypeid] == Repo.Type.SVN:
                c = SVNCommit()
            else:
                c = Commit()
            c.loadFromDatabase(r, i, files, keywords, data)

            commits.append(c)

        return commits
Ejemplo n.º 6
0
from gitcommit import GitCommit
from git_to_yaml import GitYaml

# create a commit tag from current repo
#git_commit = GitCommit('C:\\Users\\rboley\\Desktop\\git\\azure_devops\\git_to_yaml')
git_commit = GitCommit('/git')
commit = git_commit.new_commit_ref()
# add commit to other repo's puppetfile
#puppetfile_path = 'C:\\Users\\rboley\\Desktop\\Puppet-Control\puppet_File.yaml'
puppetfile_path = '/control-repo/Puppetfile.yaml'
git_yaml = GitYaml(puppetfile_path)
git_yaml.add_commit_to_file(commit)