Changeset 3579
- Timestamp:
- 04/30/08 15:27:14 (5 months ago)
- Files:
-
- revtreeplugin/0.11/enhancers/mergeenhancer/mergeenhancer (deleted)
- revtreeplugin/0.11/enhancers/mergeinfoenhancer (copied) (copied from revtreeplugin/0.11/enhancers/mergeenhancer)
- revtreeplugin/0.11/enhancers/mergeinfoenhancer/mergeinfoenhancer (added)
- revtreeplugin/0.11/enhancers/mergeinfoenhancer/mergeinfoenhancer/enhancer.py (copied) (copied from revtreeplugin/0.11/enhancers/mergeenhancer/mergeenhancer/enhancer.py) (5 diffs)
- revtreeplugin/0.11/enhancers/mergeinfoenhancer/mergeinfoenhancer/__init__.py (copied) (copied from revtreeplugin/0.11/enhancers/mergeenhancer/mergeenhancer/__init__.py) (1 diff)
- revtreeplugin/0.11/enhancers/mergeinfoenhancer/setup.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
revtreeplugin/0.11/enhancers/mergeinfoenhancer/mergeinfoenhancer/enhancer.py
r3578 r3579 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # Copyright (C) 200 7Emmanuel Blot <emmanuel.blot@free.fr>3 # Copyright (C) 2008 Emmanuel Blot <emmanuel.blot@free.fr> 4 4 # All rights reserved. 5 5 # … … 21 21 import sys 22 22 23 __all__ = ['Merge Enhancer']23 __all__ = ['MergeInfoEnhancer'] 24 24 25 25 class SimpleContainer(object): … … 30 30 31 31 32 class MergeEnhancer(Component): 33 """Enhancer to show merge operation, based on svnmerge properties""" 32 def get_merge_info(repos, path, rev): 33 """Extract merge information as a list""" 34 props = repos.get_node_properties(path, rev) 35 mergeprop = props and props.get('svn:mergeinfo') 36 return mergeprop and mergeprop.split('\n') or [] 37 38 39 class MergeInfoEnhancer(Component): 40 """Enhancer to show merge operation, based on svn:mergeinfo properties. 34 41 35 implements(IRevtreeEnhancer) 36 42 This enhancer requires a SVN >= 1.5 repository. Previous releases of 43 SVN do not manage the required information. This enhancer cannnot be 44 used with repositories managed with the svnmerge.py tool 45 """ 46 47 implements(IRevtreeEnhancer) 48 37 49 def create(self, env, req, repos, svgrevtree): 38 50 """Creates the internal data from the repository""" … … 57 69 chgsets = [c for r, c in chgsets] 58 70 71 # if the first changeset of a branch is a copy of another 72 # changeset (from another branch), extract the properties of the 73 # source changeset 74 srcmergeprops = [] 75 if chgsets and chgsets[0].clone: 76 (srev, spath) = branch.source() 77 srcmergeprops = get_merge_info(repos, spath, srev) 78 59 79 # find all the changeset that have been created by svnmerge 60 80 mergeops = [] 61 81 for chgset in chgsets: 62 nodeprops = repos.get_node_properties(branch.name, chgset.rev)63 if nodeprops:64 mergeprop = nodeprops.get('svnmerge-integrated')65 if not mergeprop:66 continue67 mergeops.append((chgset.rev, mergeprop ))82 mergeprops = get_merge_info(repos, branch.name, chgset.rev) 83 # discard all the merge information already set in the source 84 # branch 85 filterprops = [m for m in mergeprops if m not in srcmergeprops] 86 if filterprops: 87 mergeops.append((chgset.rev, mergeprops)) 68 88 69 89 srcbrs = {} 70 90 prevmerge = None 71 91 for m in mergeops: 72 (rev, merge) = m 73 if prevmerge != merge: 74 #print >> sys.stderr, "\n**\n%d Merge [%s]: %s" % \ 75 # (rev, branch.name, merge) 76 # warning: potential flaw with path containing spaces? 77 sources = merge.split(' ') 78 for source in sources: 92 (rev, merges) = m 93 if prevmerge != merges: 94 for source in merges: 79 95 (srcbr, srcrev) = source.split(':') 80 96 srcbranch = repos.branch(to_unicode(srcbr[1:])) … … 104 120 srcbrs[srcbr]) 105 121 # track last useful merge info 106 prevmerge = merge 122 prevmerge = merges 107 123 return enhancer 108 124 revtreeplugin/0.11/enhancers/mergeinfoenhancer/mergeinfoenhancer/__init__.py
r3578 r3579 1 1 # -*- coding: utf-8 -*- 2 2 # 3 # Copyright (C) 200 7-2008 Emmanuel Blot <emmanuel.blot@free.fr>3 # Copyright (C) 2008 Emmanuel Blot <emmanuel.blot@free.fr> 4 4 # All rights reserved. 5 5 # revtreeplugin/0.11/enhancers/mergeinfoenhancer/setup.py
r3578 r3579 2 2 # -*- coding: utf-8 -*- 3 3 # 4 # Copyright (C) 200 7-2008 Emmanuel Blot <emmanuel.blot@free.fr>4 # Copyright (C) 2008 Emmanuel Blot <emmanuel.blot@free.fr> 5 5 # All rights reserved. 6 6 # … … 15 15 from setuptools import setup, find_packages 16 16 17 PACKAGE = 'TracRevtreeMerge Enhancer'18 VERSION = '0.1. 1'17 PACKAGE = 'TracRevtreeMergeInfoEnhancer' 18 VERSION = '0.1.0' 19 19 20 20 setup ( 21 21 name = PACKAGE, 22 22 version = VERSION, 23 description = 'Enhancer for the RevtreePlugin , based on svnmerge.py info',23 description = 'Enhancer for the RevtreePlugin for SVN >=1.5', 24 24 author = 'Emmanuel Blot', 25 25 author_email = 'emmanuel.blot@free.fr', 26 26 license='BSD', 27 url='http://trac-hacks.org/wiki/RevtreePlugin/Merge Enhancer',27 url='http://trac-hacks.org/wiki/RevtreePlugin/MergeInfoEnhancer', 28 28 keywords = "trac revision svg graphical tree browser log", 29 29 install_requires = [ 'TracRevtreePlugin >= 0.5.7', … … 32 32 entry_points = { 33 33 'trac.plugins': [ 34 'revtree.enhancer = merge enhancer'34 'revtree.enhancer = mergeinfoenhancer' 35 35 ] 36 36 }
