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
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
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
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
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
def load_user(user_id): return get_user(user_id)
'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()