def generate_content(output, cfg, repos, changelist, group, params, pool): svndate = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE) ### pick a different date format? date = time.ctime(svn.core.secs_from_timestr(svndate, pool)) output.write('Author: %s\nDate: %s\nNew Revision: %s\n\n' % (repos.author, date, repos.rev)) viewcvs_base_url = cfg.get('viewcvs_base_url', group, params) if viewcvs_base_url and len(viewcvs_base_url): output.write('URL: %s?view=rev&rev=%d\n' % (viewcvs_base_url, repos.rev)) output.write('Log:\n%s\n' % (repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG) or '')) # print summary sections generate_list(output, 'Added', changelist, _select_adds) generate_list(output, 'Removed', changelist, _select_deletes) generate_list(output, 'Modified', changelist, _select_modifies) # these are sorted by path already for path, change in changelist: generate_diff(output, cfg, repos, date, change, group, params, pool)
def generate_content(output, cfg, repos, changelist, group, params, pool): svndate = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE) ### pick a different date format? date = time.ctime(svn.core.secs_from_timestr(svndate, pool)) output.write('Author: %s\nDate: %s\nNew Revision: %s\n\n' % (repos.author, date, repos.rev)) # print summary sections generate_list(output, 'Added', changelist, _select_adds) generate_list(output, 'Removed', changelist, _select_deletes) generate_list(output, 'Modified', changelist, _select_modifies) output.write('Log:\n%s\n' % (repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG) or '')) if len([p for p,v in changelist if "pisi-index" not in p]) == 0: # Don't bother to create a diffstat and a diff for index updates return diffstat = os.popen("/usr/bin/svnlook diff %s -r %s | /usr/bin/diffstat -q" % (os.path.abspath(repos.repos_dir), repos.rev)).read() if diffstat: output.write("\n---\n%s" % diffstat) # these are sorted by path already for path, change in changelist: generate_diff(output, cfg, repos, date, change, group, params, pool)
def generate_content(output, cfg, repos, changelist, group, params, pool): svndate = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE) ### pick a different date format? date = time.ctime(svn.core.secs_from_timestr(svndate, pool)) output.write('Author: %s\nDate: %s\nNew Revision: %s\n\n' % (repos.author, date, repos.rev)) # print summary sections generate_list(output, 'Added', changelist, _select_adds) generate_list(output, 'Removed', changelist, _select_deletes) generate_list(output, 'Modified', changelist, _select_modifies) output.write('Log:\n%s\n' % (repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG) or '')) if len([p for p, v in changelist if "pisi-index" not in p]) == 0: # Don't bother to create a diffstat and a diff for index updates return diffstat = os.popen( "/usr/bin/svnlook diff %s -r %s | /usr/bin/diffstat -q" % (os.path.abspath(repos.repos_dir), repos.rev)).read() if diffstat: output.write("\n---\n%s" % diffstat) # these are sorted by path already for path, change in changelist: generate_diff(output, cfg, repos, date, change, group, params, pool)
def main(cmd, config_fname, repos_dir, cmd_args, pool=None): if cmd == 'commit': Debug = True records = [] revision = int(cmd_args[0]) repos = Repository(repos_dir, revision, pool) record = SVN_To_DB() record.strAuthor = repos.author #get Author's name record.strLog = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG) #get Commit's log print "Commit Log :", repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG) strDateTime = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE) #get Commit date print "Commit date :", repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE) print "Formated Commit date: ", time.ctime(svn.core.secs_from_timestr(repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE), pool)) #Start My date Format look like this "2008-02-23T15:11:41" strDateTime = strDateTime.split('.') record.dtSVN = strDateTime[0] print "My date format :", record.dtSVN #End My date Format records.append(record) messenger = Commit(pool, repos, records) if Debug == True: for x in records: print "--------infomation all in here-------------------------------" x.strAuthor = records[0].strAuthor #!!Author always get one copy in one commit #not retrieve from list of "records" print "strAuthor: ", x.strAuthor print "strStatus: ", x.strStatus print "strFileName: ", x.strFileName print "strFullPath: ", x.strFullPath x.dtSVN = records[0].dtSVN print "dtSVN: ", x.dtSVN x.strLog = records[0].strLog print "strLog: ", x.strLog
def generate_content(renderer, cfg, repos, changelist, group, params, paths, pool): svndate = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE) ### pick a different date format? date = time.ctime(svn.core.secs_from_timestr(svndate, pool)) diffsels = DiffSelections(cfg, group, params) diffurls = DiffURLSelections(cfg, group, params) show_nonmatching_paths = cfg.get('show_nonmatching_paths', group, params) \ or 'yes' params_with_rev = params.copy() params_with_rev['rev'] = repos.rev commit_url = cfg.get('commit_url', group, params_with_rev) # figure out the lists of changes outside the selected path-space other_added_data = other_replaced_data = other_deleted_data = \ other_modified_data = [ ] if len(paths) != len(changelist) and show_nonmatching_paths != 'no': other_added_data = generate_list('A', changelist, paths, False) other_replaced_data = generate_list('R', changelist, paths, False) other_deleted_data = generate_list('D', changelist, paths, False) other_modified_data = generate_list('M', changelist, paths, False) if len(paths) != len(changelist) and show_nonmatching_paths == 'yes': other_diffs = DiffGenerator(changelist, paths, False, cfg, repos, date, group, params, diffsels, diffurls, pool) else: other_diffs = None data = _data( author=repos.author, date=date, rev=repos.rev, log=repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG) or '', commit_url=commit_url, added_data=generate_list('A', changelist, paths, True), replaced_data=generate_list('R', changelist, paths, True), deleted_data=generate_list('D', changelist, paths, True), modified_data=generate_list('M', changelist, paths, True), show_nonmatching_paths=show_nonmatching_paths, other_added_data=other_added_data, other_replaced_data=other_replaced_data, other_deleted_data=other_deleted_data, other_modified_data=other_modified_data, diffs=DiffGenerator(changelist, paths, True, cfg, repos, date, group, params, diffsels, diffurls, pool), other_diffs=other_diffs, ) renderer.render(data)
def __init__(self, pool, cfg, repos): Messenger.__init__(self, pool, cfg, repos, 'commit_subject_prefix') # get all the changes and sort by path editor = svn.repos.ChangeCollector(repos.fs_ptr, repos.root_this, \ self.pool) e_ptr, e_baton = svn.delta.make_editor(editor, self.pool) svn.repos.replay2(repos.root_this, "", svn.core.SVN_INVALID_REVNUM, 1, e_ptr, e_baton, None, self.pool) self.changelist = sorted(editor.get_changes().items()) log = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG) or '' # collect the set of groups and the unique sets of params for the options self.groups = { } for path, change in self.changelist: for (group, params) in self.cfg.which_groups(path, log): # turn the params into a hashable object and stash it away param_list = sorted(params.items()) # collect the set of paths belonging to this group if (group, tuple(param_list)) in self.groups: old_param, paths = self.groups[group, tuple(param_list)] else: paths = { } paths[path] = None self.groups[group, tuple(param_list)] = (params, paths) # figure out the changed directories dirs = { } for path, change in self.changelist: if change.item_kind == svn.core.svn_node_dir: dirs[path] = None else: idx = path.rfind('/') if idx == -1: dirs[''] = None else: dirs[path[:idx]] = None dirlist = list(dirs.keys()) commondir, dirlist = get_commondir(dirlist) # compose the basic subject line. later, we can prefix it. dirlist.sort() dirlist = ' '.join(dirlist) if commondir: self.output.subject = 'r%d - in %s: %s' % (repos.rev, commondir, dirlist) else: self.output.subject = 'r%d - %s' % (repos.rev, dirlist)