Hi,

In these patches, I added the kind of change (aka ''action'') information
to each file entry in the TracRevisionLog changelog output format.

That's a small change, but as it mixes some refactorings (patches 1 and 2)
and the feature (patch 3), I think it's good to present it here first.

-- Christian

# HG changeset patch
# User [EMAIL PROTECTED]
# Node ID 1dfa8af34948fe6cb48de183cb78dc57d545507a
# Parent  4ad62f821aaa5d242aba946e0c1c97cb3fcfd0a1
Refactoring log_changelog.cs to use the ClearSilver ''with'' command.

diff -r 4ad62f821aaa -r 1dfa8af34948 templates/log_changelog.cs
--- a/templates/log_changelog.cs	Wed Mar  1 11:41:51 2006 +0100
+++ b/templates/log_changelog.cs	Wed Mar  1 12:08:55 2006 +0100
@@ -5,10 +5,12 @@
 # <?cs var:trac.time ?>
 #
 <?cs each:item = $log.items ?>
-<?cs var:log.changes[item.rev].date ?> <?cs
-     var:log.changes[item.rev].author ?> [<?cs var:item.rev ?>]
-<?cs each:file = $log.changes[item.rev].files ?>
+<?cs with:changeset = log.changes[item.rev] ?>
+<?cs var:changeset.date ?> <?cs
+     var:changeset.author ?> [<?cs var:item.rev ?>]
+<?cs each:file = $changeset.files ?>
 	* <?cs var:file ?>:<?cs 
 /each ?>
-<?cs var:log.changes[item.rev].message ?>
+<?cs var:changeset.message ?>
+<?cs /with ?>
 <?cs /each ?>
# HG changeset patch
# User [EMAIL PROTECTED]
# Node ID 3db75e82897e327025b52bdf84580c2f11c670bc
# Parent  1dfa8af34948fe6cb48de183cb78dc57d545507a
Move the information specific to the changelog format out of the generic `get_changes` function.

diff -r 1dfa8af34948 -r 3db75e82897e trac/versioncontrol/web_ui/log.py
--- a/trac/versioncontrol/web_ui/log.py	Wed Mar  1 12:08:55 2006 +0100
+++ b/trac/versioncontrol/web_ui/log.py	Wed Mar  1 14:27:08 2006 +0100
@@ -157,8 +157,8 @@ class LogModule(Component):
         
         req.hdf['log.items'] = info
 
-        changes = get_changes(self.env, repos, [i['rev'] for i in info],
-                              verbose, req, format)
+        revs = [i['rev'] for i in info]
+        changes = get_changes(self.env, repos, revs, verbose, req, format)
         if format == 'rss':
             # Get the email addresses of all known users
             email_map = {}
@@ -176,9 +176,15 @@ class LogModule(Component):
                 cs['author'] = author_email
                 cs['date'] = util.http_date(cs['date_seconds'])
         elif format == 'changelog':
-            for cs in changes.values():
+            for rev in revs:
+                changeset = repos.get_changeset(rev)
+                cs = changes[rev]
                 cs['message'] = '\n'.join(['\t' + m for m in
-                                           cs['message'].split('\n')])
+                                           changeset.message.split('\n')])
+                files = []
+                for path, kind, chg, bpath, brev in changeset.get_changes():
+                    files.append(chg == Changeset.DELETE and bpath or path)
+                cs['files'] = files
         req.hdf['log.changes'] = changes
 
         if req.args.get('format') == 'changelog':
diff -r 1dfa8af34948 -r 3db75e82897e trac/versioncontrol/web_ui/util.py
--- a/trac/versioncontrol/web_ui/util.py	Wed Mar  1 12:08:55 2006 +0100
+++ b/trac/versioncontrol/web_ui/util.py	Wed Mar  1 14:27:08 2006 +0100
@@ -33,19 +33,15 @@ def get_changes(env, repos, revs, full=N
         changeset = repos.get_changeset(rev)
         message = changeset.message or '--'
         shortlog = wiki_to_oneliner(message, env, db, shorten=True)
-        if format == 'changelog':
-            files = [change[0] for change in changeset.get_changes()]
+        if full:
+            message = wiki_to_html(message, env, req, db,
+                                   absurls=(format == 'rss'),
+                                   escape_newlines=True)
         else:
-            files = None
-            if full:
-                message = wiki_to_html(message, env, req, db,
-                                       absurls=(format == 'rss'),
-                                       escape_newlines=True)
-            else:
-                message = shortlog
-            if format == 'rss':
-                shortlog = rss_title(shortlog)
-                message = str(message)
+            message = shortlog
+        if format == 'rss':
+            shortlog = rss_title(shortlog)
+            message = str(message)
         changes[rev] = {
             'date_seconds': changeset.date,
             'date': format_datetime(changeset.date),
@@ -53,7 +49,6 @@ def get_changes(env, repos, revs, full=N
             'author': changeset.author or 'anonymous',
             'message': message,
             'shortlog': shortlog,
-            'files': files
         }
     return changes
 
# HG changeset patch
# User [EMAIL PROTECTED]
# Node ID 72623bb7b5c9c375d334dd45e721563ee1c3f722
# Parent  3db75e82897e327025b52bdf84580c2f11c670bc
Adding ''action'' information to the text changelog format of the TracRevisionLog

diff -r 3db75e82897e -r 72623bb7b5c9 templates/log_changelog.cs
--- a/templates/log_changelog.cs	Wed Mar  1 14:27:08 2006 +0100
+++ b/templates/log_changelog.cs	Wed Mar  1 14:27:56 2006 +0100
@@ -7,10 +7,19 @@
 <?cs each:item = $log.items ?>
 <?cs with:changeset = log.changes[item.rev] ?>
 <?cs var:changeset.date ?> <?cs
-     var:changeset.author ?> [<?cs var:item.rev ?>]
-<?cs each:file = $changeset.files ?>
-	* <?cs var:file ?>:<?cs 
-/each ?>
+     var:changeset.author ?> [<?cs var:item.rev ?>]<?cs
+  set:idx = 0 ?><?cs
+  each:file = changeset.files ?>
+	* <?cs var:file ?> (<?cs
+    set:action = changeset.actions[idx] ?><?cs
+    if:action == 'add' ?>added<?cs
+    elif:action == 'delete' ?>deleted<?cs
+    elif:action == 'copy' ?>copied<?cs
+    elif:action == 'move' ?>moved<?cs
+    elif:action == 'edit' ?>modified<?cs
+    /if ?>)<?cs
+    set:idx = idx + 1 ?><?cs
+  /each ?>
 <?cs var:changeset.message ?>
 <?cs /with ?>
 <?cs /each ?>
diff -r 3db75e82897e -r 72623bb7b5c9 trac/versioncontrol/web_ui/log.py
--- a/trac/versioncontrol/web_ui/log.py	Wed Mar  1 14:27:08 2006 +0100
+++ b/trac/versioncontrol/web_ui/log.py	Wed Mar  1 14:27:56 2006 +0100
@@ -182,9 +182,12 @@ class LogModule(Component):
                 cs['message'] = '\n'.join(['\t' + m for m in
                                            changeset.message.split('\n')])
                 files = []
+                actions = []
                 for path, kind, chg, bpath, brev in changeset.get_changes():
                     files.append(chg == Changeset.DELETE and bpath or path)
+                    actions.append(chg)
                 cs['files'] = files
+                cs['actions'] = actions
         req.hdf['log.changes'] = changes
 
         if req.args.get('format') == 'changelog':
_______________________________________________
Trac-dev mailing list
[email protected]
http://lists.edgewall.com/mailman/listinfo/trac-dev

Reply via email to