예제 #1
0
def create_release_merge_commit(releases, release, mark, reference, graphs, ancestors):
    global users
    object_lookup = {}
    objects = []

    logger.info("Ancestors: %i" % len(ancestors))

    # Also add all the objects of the parents
    for parent in ancestors:
        if parent in graphs[release]['task'].edges():
            logger.info("Parent %s is in the task hypergraph" % parent)
            synergy_objects = get_objects_from_graph(parent, graphs[release]['task'], releases[release]['objects'])
            logger.info("Synergy objects: %i" % len(synergy_objects))
            objects.extend(synergy_objects)

#    [objects.extend(get_objects_from_graph(parent, graphs[release]['task'], releases[release]['objects']))
#    for parent in ancestors
#    if parent in graphs[release]['task']]

    # Sort objects to get correct commit order, if multiple versions of one file is in in the task
    logger.info("Unfiltered objects: %i" % len(objects))

    objects = reduce_objects_for_commit(objects)

    logger.info("Filtered objects: %i" % len(objects))

    for o in objects:
        if not o.get_type() == 'dir':
            object_mark, mark = create_blob(o, mark)
            object_lookup[o.get_object_name()] = object_mark

    empty_dirs = releases[release]['empty_dirs']
    logger.info("Empty dirs for release %s\n%s" %(release, empty_dirs))
    mark = create_blob_for_empty_dir(get_mark(mark))

    logger.info("Object lookup: %i" % len(object_lookup))
    file_list = create_file_list(objects, object_lookup, releases['ccm_types']['permissions'], releases[release]['fourpartname'], empty_dirs=empty_dirs, empty_dir_mark=mark, all_files_for_release=True)

    logger.info("File list: %i" % len(file_list))
    mark = get_mark(mark)
    msg = ['commit refs/tags/' + release, 'mark :' + str(mark)]
    if 'author' not in releases[release]:
        releases[release]['author'] = "Nobody"
    author = users.get_user(releases[release]['author'])
    msg.append('author %s <%s> ' % (author['name'], author['mail']) + str(int(time.mktime(releases[release]['created'].timetuple()))) + " +0000")
    msg.append('committer %s <%s> ' % (author['name'], author['mail']) + str(int(time.mktime(releases[release]['created'].timetuple()))) + " +0000")

    commit_msg = "Release " + release
    msg.append('data ' + str(len(commit_msg)))
    msg.append(commit_msg)
    msg.append('from :' + str(reference[0]))
    if len(reference) > 1:
        merge = ['merge :' + str(i) for i in reference[1:]]
        msg.append('\n'.join(merge))
    if file_list:
        msg.append(file_list)
    if msg[-1] != '':
        msg.append('')
    logger.info("git-fast-import RELEASE-MERGE-COMMIT:\n%s" %('\n'.join(msg)))
    return mark, msg
예제 #2
0
def create_release_merge_commit(releases, release, mark, reference, graphs, ancestors):
    global users
    object_lookup = {}
    objects = []

    logger.info("Ancestors: %i" % len(ancestors))

    # Also add all the objects of the parents
    for parent in ancestors:
        if parent in graphs[release]['task'].edges():
            logger.info("Parent %s is in the task hypergraph" % parent)
            synergy_objects = get_objects_from_graph(parent, graphs[release]['task'], releases[release]['objects'])
            logger.info("Synergy objects: %i" % len(synergy_objects))
            objects.extend(synergy_objects)

#    [objects.extend(get_objects_from_graph(parent, graphs[release]['task'], releases[release]['objects']))
#    for parent in ancestors
#    if parent in graphs[release]['task']]

    # Sort objects to get correct commit order, if multiple versions of one file is in in the task
    logger.info("Unfiltered objects: %i" % len(objects))

    objects = reduce_objects_for_commit(objects)

    logger.info("Filtered objects: %i" % len(objects))

    for o in objects:
        if not o.get_type() == 'dir':
            object_mark, mark = create_blob(o, mark)
            object_lookup[o.get_object_name()] = object_mark

    empty_dirs = releases[release]['empty_dirs']
    logger.info("Empty dirs for release %s\n%s" %(release, empty_dirs))
    mark = create_blob_for_empty_dir(get_mark(mark))

    logger.info("Object lookup: %i" % len(object_lookup))
    file_list = create_file_list(objects, object_lookup, releases['ccm_types']['permissions'], releases[release]['fourpartname'], empty_dirs=empty_dirs, empty_dir_mark=mark, all_files_for_release=True)

    logger.info("File list: %i" % len(file_list))
    mark = get_mark(mark)
    msg = ['commit refs/tags/' + release, 'mark :' + str(mark)]
    if 'author' not in releases[release]:
        releases[release]['author'] = "Nobody"
    author = users.get_user(releases[release]['author'])
    msg.append('author %s <%s> ' % (author['name'], author['mail']) + str(int(time.mktime(releases[release]['created'].timetuple()))) + " +0000")
    msg.append('committer %s <%s> ' % (author['name'], author['mail']) + str(int(time.mktime(releases[release]['created'].timetuple()))) + " +0000")

    commit_msg = "Release " + release
    msg.append('data ' + str(len(commit_msg)))
    msg.append(commit_msg)
    msg.append('from :' + str(reference[0]))
    if len(reference) > 1:
        merge = ['merge :' + str(i) for i in reference[1:]]
        msg.append('\n'.join(merge))
    if file_list:
        msg.append(file_list)
    if msg[-1] != '':
        msg.append('')
    logger.info("git-fast-import RELEASE-MERGE-COMMIT:\n%s" %('\n'.join(msg)))
    return mark, msg
예제 #3
0
def create_annotated_tag(releases, release, mark):
    global users
    tagger = users.get_user(releases[release]['author'])
    msg = 'Release: %s' %release
    tag_msg = ['tag %s' % release,
               'from :%s' % str(mark),
               'tagger %s <%s> ' % (tagger['name'], tagger['mail']) + str(int(time.mktime(releases[release]['created'].timetuple()))) + " +0000",
               'data %s' % len(msg),
               msg]

    return tag_msg
예제 #4
0
def create_annotated_tag(releases, release, mark):
    global users
    tagger = users.get_user(releases[release]['author'])
    msg = 'Release: %s' %release
    tag_msg = ['tag %s' % release,
               'from :%s' % str(mark),
               'tagger %s <%s> ' % (tagger['name'], tagger['mail']) + str(int(time.mktime(releases[release]['created'].timetuple()))) + " +0000",
               'data %s' % len(msg),
               msg]

    return tag_msg
예제 #5
0
def make_commit_from_object(o, mark, reference, release, file_list):
    global users
    author = users.get_user(o.get_author())
    commit_info = ['commit refs/tags/' + release, 'mark :' + str(mark),
                   'author %s <%s> ' % (author['name'], author['mail']) + str(
                       int(time.mktime(o.get_integrate_time().timetuple()))) + " +0000",
                   'committer %s <%s> ' % (author['name'], author['mail']) + str(
                       int(time.mktime(o.get_integrate_time().timetuple()))) + " +0000"]
    commit_msg = "Object not associated to task: " + o.get_object_name()
    commit_info.append('data ' + str(len(commit_msg)))
    commit_info.append(commit_msg)
    commit_info.append('from :' + str(reference[0]))
    if len(reference) > 1:
        merge = ['merge :' + str(i) for i in reference[1:]]
        commit_info.append('\n'.join(merge))
    if file_list:
        commit_info.append(file_list)
    commit_info.append('')
    logger.info("git-fast-import COMMIT:\n%s" %('\n'.join(commit_info)))
    return mark, commit_info
예제 #6
0
def make_commit_from_object(o, mark, reference, release, file_list):
    global users
    author = users.get_user(o.get_author())
    commit_info = ['commit refs/tags/' + release, 'mark :' + str(mark),
                   'author %s <%s> ' % (author['name'], author['mail']) + str(
                       int(time.mktime(o.get_integrate_time().timetuple()))) + " +0000",
                   'committer %s <%s> ' % (author['name'], author['mail']) + str(
                       int(time.mktime(o.get_integrate_time().timetuple()))) + " +0000"]
    commit_msg = "Object not associated to task: " + o.get_object_name()
    commit_info.append('data ' + str(len(commit_msg)))
    commit_info.append(commit_msg)
    commit_info.append('from :' + str(reference[0]))
    if len(reference) > 1:
        merge = ['merge :' + str(i) for i in reference[1:]]
        commit_info.append('\n'.join(merge))
    if file_list:
        commit_info.append(file_list)
    commit_info.append('')
    logger.info("git-fast-import COMMIT:\n%s" %('\n'.join(commit_info)))
    return mark, commit_info
예제 #7
0
def make_commit_from_task(task, task_name, mark, reference, release, file_list):
    global users
    # Use the first task for author, time etc...
    author = users.get_user(task[0].get_author())
    commit_info = ['commit refs/tags/' + release, 'mark :' + str(mark),
                   'author %s <%s> ' % (author['name'], author['mail']) + str(
                       int(time.mktime(task[0].get_complete_time().timetuple()))) + " +0000",
                   'committer %s <%s> ' % (author['name'], author['mail']) + str(
                       int(time.mktime(task[0].get_complete_time().timetuple()))) + " +0000"]
    commit_msg = create_commit_msg_from_task(task, task_name)
    commit_info.append('data ' + str(len(commit_msg)))
    commit_info.append(commit_msg)
    commit_info.append('from :' + str(reference[0]))
    if len(reference) > 1:
        merge = ['merge :' + str(i) for i in reference[1:]]
        commit_info.append('\n'.join(merge))
    if file_list:
        commit_info.append(file_list)
    commit_info.append('')
    logger.info("git-fast-import COMMIT:\n%s" %('\n'.join(commit_info)))
    return mark, commit_info
예제 #8
0
def make_commit_from_task(task, task_name, mark, reference, release, file_list):
    global users
    # Use the first task for author, time etc...
    author = users.get_user(task[0].get_author())
    commit_info = ['commit refs/tags/' + release, 'mark :' + str(mark),
                   'author %s <%s> ' % (author['name'], author['mail']) + str(
                       int(time.mktime(task[0].get_complete_time().timetuple()))) + " +0000",
                   'committer %s <%s> ' % (author['name'], author['mail']) + str(
                       int(time.mktime(task[0].get_complete_time().timetuple()))) + " +0000"]
    commit_msg = create_commit_msg_from_task(task, task_name)
    commit_info.append('data ' + str(len(commit_msg)))
    commit_info.append(commit_msg)
    commit_info.append('from :' + str(reference[0]))
    if len(reference) > 1:
        merge = ['merge :' + str(i) for i in reference[1:]]
        commit_info.append('\n'.join(merge))
    if file_list:
        commit_info.append(file_list)
    commit_info.append('')
    logger.info("git-fast-import COMMIT:\n%s" %('\n'.join(commit_info)))
    return mark, commit_info
예제 #9
0
def rename_toplevel_dir(previous_name, current_name, release, releases, mark, from_mark):
    global users
    mark = get_mark(mark)
    logger.info("Commit for project name change: %s -> %s" %(previous_name, current_name))

    # Use the release author
    author = users.get_user(releases[release]['author'])
    # Use the release time from previous release
    create_time = time.mktime(releases[releases[release]['previous']]['created'].timetuple())

    commit_info = ['commit refs/tags/' + release,
                   'mark :' + str(mark),
                   'author %s <*****@*****.**> ' % (author['name'], author['mail']) + str(int(create_time)) + " +0000",
                   'committer %s <*****@*****.**> ' % (author['name'], author['mail']) + str(int(create_time)) + " +0000"]
    commit_msg = 'Renamed toplevel directory to %s' % current_name
    commit_info.append('data ' + str(len(commit_msg)))
    commit_info.append(commit_msg)
    commit_info.append('from :' + str(from_mark))
    commit_info.append('R %s %s' %(previous_name, current_name))
    commit_info.append('')
    logger.info("git-fast-import NAME CHANGE COMMIT:\n%s" %('\n'.join(commit_info)))
    return mark, commit_info
예제 #10
0
def rename_toplevel_dir(previous_name, current_name, release, releases, mark, from_mark):
    global users
    mark = get_mark(mark)
    logger.info("Commit for project name change: %s -> %s" %(previous_name, current_name))

    # Use the release author
    author = users.get_user(releases[release]['author'])
    # Use the release time from previous release
    create_time = time.mktime(releases[releases[release]['previous']]['created'].timetuple())

    commit_info = ['commit refs/tags/' + release,
                   'mark :' + str(mark),
                   'author %s <*****@*****.**> ' % (author['name'], author['mail']) + str(int(create_time)) + " +0000",
                   'committer %s <*****@*****.**> ' % (author['name'], author['mail']) + str(int(create_time)) + " +0000"]
    commit_msg = 'Renamed toplevel directory to %s' % current_name
    commit_info.append('data ' + str(len(commit_msg)))
    commit_info.append(commit_msg)
    commit_info.append('from :' + str(from_mark))
    commit_info.append('R %s %s' %(previous_name, current_name))
    commit_info.append('')
    logger.info("git-fast-import NAME CHANGE COMMIT:\n%s" %('\n'.join(commit_info)))
    return mark, commit_info
예제 #11
0
def load_user(user_id):
    return get_user(user_id)
예제 #12
0
            'text': tag.name,
        }
        results.append(result)

    data = {
        'success': True,
        'results': results,
    }

    return jsonify(data)

@app.route('/tags/view')
@login_required
def onViewTags():
    tags = list_tags_with_count()
    data = {
        'tags': tags,
    }
    return render('view_tags.html', **data)


app.register_blueprint(post_pages)
app.register_blueprint(user_pages)
app.register_blueprint(search_pages)

if not get_user(1):
    admin_user = create_user('admin', 'admin', admin=True)

if __name__ == '__main__':
    app.run()