{"thread":{"id":"12833","subject":"[EGIT PATCH 4/4] Show only commits in the current branch.","startedAt":"2008-03-24T02:58:07Z","lastAt":"2008-03-24T13:18:58Z","messageCount":3,"participants":["Roger C. Soares","Robin Rosenberg"],"isPatch":true,"patchVersion":1,"patchTotal":4},"messages":[{"id":"72846","messageId":"1206327487-6543-1-git-send-email-rogersoares@intelinet.com.br","threadId":"12833","inReplyTo":null,"subject":"[EGIT PATCH 4/4] Show only commits in the current branch.","fromName":"Roger C. Soares","fromEmail":"rogersoares@intelinet.com.br","sentAt":"2008-03-24T02:58:07Z","receivedAt":"2008-03-24T02:58:07Z","isPatch":true,"sender":{"key":"rogersoares@intelinet.com.br","avatar":null},"body":"This is a quick hack to have the functionality. It\nfilters the commits returned by GitFileHistory.getHistoryFor.\n\nSigned-off-by: Roger C. Soares <rogersoares@intelinet.com.br>\n---\n org.spearce.egit.ui/icons/elcl16/cbcommits.gif     |  Bin 0 -> 354 bytes\n .../src/org/spearce/egit/ui/GitHistoryPage.java    |   80 ++++++++++++++++++++\n .../egit/ui/PluginPreferenceInitializer.java       |    1 +\n .../src/org/spearce/egit/ui/UIIcons.java           |    3 +\n .../src/org/spearce/egit/ui/UIPreferences.java     |    2 +\n 5 files changed, 86 insertions(+), 0 deletions(-)\n create mode 100644 org.spearce.egit.ui/icons/elcl16/cbcommits.gif\n\ndiff --git a/org.spearce.egit.ui/icons/elcl16/cbcommits.gif b/org.spearce.egit.ui/icons/elcl16/cbcommits.gif\nnew file mode 100644\nindex 0000000000000000000000000000000000000000..21359d460ff9c3332482d503bab5d31a4db02188\nGIT binary patch\nliteral 354\nzcmZ?wbhEHb6krfwSjx!2(7+H=wQAzh<9qM*?tRd;_hIMWhh6&~cJ6!Jy6<t@ejxdz\nzWj_eD?tj*>|5@XKXY~i3H5`0deeh+?!PgZB-&7oWQ-0`e$)UHUhu)SSdRKfHgh~#-\nzFFO38;K+x9!ygNde9SxYG5;u#{FHa}bN12CIY+-_9sQDh^lRqPuh~G`DM5-qSs1w(\nz>=|?zfB@tt2DbVG^9ww5_!wuMZ52MCV<^EOs326!!g!GV%SVs?6+&7LZZprsD?V7_\nzmB_lXLhJA1F1IBNobpN+8KoQZrDa>|MMcC?7{w&}>V<`c@`a`f)$<GT2{H=I77(cC\ns<lxHZ;^yV4XJcXQW@Tq*t!Lhvzjf=D9gI762JhIuqr~lqy(5D)038{o*8l(j\n\nliteral 0\nHcmV?d00001\n\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\nindex d0346a9..5a7e05b 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\n@@ -18,6 +18,7 @@ package org.spearce.egit.ui;\n \n import java.io.IOException;\n import java.text.SimpleDateFormat;\n+import java.util.ArrayList;\n import java.util.Collections;\n import java.util.Date;\n import java.util.HashMap;\n@@ -88,7 +89,9 @@ import org.spearce.egit.core.internal.mapping.GitFileHistoryProvider;\n import org.spearce.egit.core.internal.mapping.GitFileRevision;\n import org.spearce.egit.core.project.RepositoryMapping;\n import org.spearce.egit.ui.internal.actions.GitCompareRevisionAction;\n+import org.spearce.jgit.lib.Commit;\n import org.spearce.jgit.lib.ObjectId;\n+import org.spearce.jgit.lib.Repository;\n import org.spearce.jgit.lib.Tag;\n import org.spearce.jgit.lib.TopologicalSorter;\n import org.spearce.jgit.lib.Repository.StGitPatch;\n@@ -124,6 +127,7 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t/* private */IAction toggleRevCommentAction;\n \t/* private */IAction toggleTooltipsAction;\n \t/* private */IAction findAction;\n+\tprivate IAction currentBranchCommitsAction;\n \n \t/* private */Table table;\n \tprivate MouseMoveListener tableMouseMoveListener;\n@@ -132,6 +136,8 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \n \tprivate boolean hintShowDiffNow;\n \n+\tprivate boolean showOnlyCurrentBranch;\n+\n \tprivate boolean showAllProjectVersions;\n \n \tprivate boolean showAllFolderVersions;\n@@ -146,6 +152,7 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t */\n \tpublic GitHistoryPage(Object object) {\n \t\tsetInput(object);\n+\t\tshowOnlyCurrentBranch = prefs.getBoolean(UIPreferences.RESOURCEHISTORY_SHOW_ONLY_CURRENT_BRANCH);\n \t\tshowAllProjectVersions = Activator.getDefault().getPreferenceStore()\n \t\t\t\t.getBoolean(PREF_SHOWALLPROJECTVERSIONS);\n \t\tshowAllFolderVersions = Activator.getDefault().getPreferenceStore()\n@@ -313,6 +320,27 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\tgetSite().getActionBars().getToolBarManager()\n \t\t\t\t.add(findAction);\n \n+\t\tgetSite().getActionBars().getToolBarManager()\n+\t\t\t\t.add(new Separator());\n+\n+\t\tcurrentBranchCommitsAction = new Action(\"HEAD\", UIIcons.ELCL16_HEAD) {\n+\t\t\tpublic void run() {\n+\t\t\t\tshowOnlyCurrentBranch = isChecked();\n+\t\t\t\tif (historyRefreshJob.cancel()) {\n+\t\t\t\t\tSystem.out.println(\"rescheduling\");\n+\t\t\t\t\thistoryRefreshJob.schedule();\n+\t\t\t\t} else {\n+\t\t\t\t\tSystem.out.println(\"failed to cancel?\");\n+\t\t\t\t}\n+\t\t\t\tprefs.setValue(UIPreferences.RESOURCEHISTORY_SHOW_ONLY_CURRENT_BRANCH, currentBranchCommitsAction.isChecked());\n+\t\t\t\tActivator.getDefault().savePluginPreferences();\n+\t\t\t}\n+\t\t};\n+\t\tcurrentBranchCommitsAction.setToolTipText(\"Show only commits in the current branch\");\n+\t\tcurrentBranchCommitsAction.setChecked(showOnlyCurrentBranch);\n+\t\tgetSite().getActionBars().getToolBarManager()\n+\t\t\t\t.add(currentBranchCommitsAction);\n+\n \t\tAction showAllRepoVersionsAction = new Action(\"R\") {\n \t\t\tpublic void run() {\n \t\t\t\tsetShowAllRepoVersions(isChecked());\n@@ -842,6 +870,37 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\t\t\t\t\t\t\tmonitor,\n \t\t\t\t\t\t\t\tisShowAllRepoVersions());\n \t\t\t\tfileRevisions = Collections.synchronizedList(fileHistoryFor.getFileRevisionsList());\n+\n+\t\t\t\tif(showOnlyCurrentBranch) {\n+\t\t\t\t\t// Filters the history revisions list to show only\n+\t\t\t\t\t// the current selected branch. This is a quick hack to have it working\n+\t\t\t\t\t// TODO: this should probably be retrieved from the fileHistoryProvider.getHistoryFor\n+\t\t\t\t\tList<IFileRevision> filteredFileRevisions = Collections.synchronizedList(new ArrayList<IFileRevision>());\n+\t\t\t\t\tMap<String, String> parentMap = new HashMap<String, String>();\n+\t\t\t\t\tList<ObjectId> commitsToWalk = new ArrayList<ObjectId>();\n+\t\t\t\t\tif (fileRevisions.size() > 0) {\n+\t\t\t\t\t\ttry {\n+\t\t\t\t\t\t\tCommit initialCommit = repositoryMapping.getRepository().mapCommit(currentHead);\n+\t\t\t\t\t\t\tverifyCurrentHeadCommits(repositoryMapping.getRepository(), parentMap, commitsToWalk, initialCommit);\n+\t\t\t\t\t\t} catch (Exception e) {\n+\t\t\t\t\t\t\t// TODO Auto-generated catch block\n+\t\t\t\t\t\t\te.printStackTrace();\n+\t\t\t\t\t\t}\n+\n+\t\t\t\t\t\tfor(IFileRevision rev : fileRevisions) {\n+\t\t\t\t\t\t\tif(rev instanceof GitCommitFileRevision) {\n+\t\t\t\t\t\t\t\tString revId = rev.getContentIdentifier();\n+\t\t\t\t\t\t\t\tif(parentMap.containsKey(revId)) {\n+\t\t\t\t\t\t\t\t\tfilteredFileRevisions.add(rev);\n+\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t} else {\n+\t\t\t\t\t\t\t\tfilteredFileRevisions.add(rev);\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t}\n+\t\t\t\t\t}\n+\t\t\t\t\tfileRevisions = filteredFileRevisions;\n+\t\t\t\t}\n+\n \t\t\t\tfindToolbar.setFileRevisions(fileRevisions, newtags, branches);\n \t\t\t\tDisplay.getDefault().syncExec(new Runnable() {\n \t\t\t\t\tpublic void run() {\n@@ -891,6 +950,27 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\t}\n \t}\n \n+\tprivate void verifyCurrentHeadCommits(Repository repository, \n+\t\t\tMap<String, String> parentMap, List<ObjectId> commitsToWalk, Commit initialCommit) throws IOException {\n+\t\tCommit commit = initialCommit;\n+\t\twhile (commit.getParentIds() != null && commit.getParentIds().length > 0 \n+\t\t\t\t&& !parentMap.containsKey(commit.getCommitId().toString())) {\n+\t\t\tString cid = commit.getCommitId().toString();\n+\t\t\tparentMap.put(cid, cid);\n+\t\t\tcommit = repository.mapCommit(commit.getParentIds()[0]);\n+\t\t\tint parentCount = commit.getParentIds().length;\n+\t\t\tif (parentCount > 1) {\n+\t\t\t\tfor (int i = 1; i < parentCount; i++) {\n+\t\t\t\t\tcommitsToWalk.add(commit.getParentIds()[i]);\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\t\twhile (commitsToWalk.size() > 0) {\n+\t\t\tcommit = repository.mapCommit(commitsToWalk.remove(0));\n+\t\t\tverifyCurrentHeadCommits(repository, parentMap, commitsToWalk, commit);\n+\t\t}\n+\t}\n+\n \tHistoryRefreshJob historyRefreshJob = new HistoryRefreshJob(\"Git history refresh\");\n \t\n \tclass GitHistoryContentProvider implements ILazyContentProvider {\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/PluginPreferenceInitializer.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/PluginPreferenceInitializer.java\nindex c8ca116..3464fe7 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/PluginPreferenceInitializer.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/PluginPreferenceInitializer.java\n@@ -41,6 +41,7 @@ public class PluginPreferenceInitializer extends AbstractPreferenceInitializer {\n \t\tprefs.setDefault(UIPreferences.RESOURCEHISTORY_SHOW_REV_DETAIL, true);\n \t\tprefs.setDefault(UIPreferences.RESOURCEHISTORY_SHOW_REV_COMMENT, true);\n \t\tprefs.setDefault(UIPreferences.RESOURCEHISTORY_SHOW_TOOLTIPS, false);\n+\t\tprefs.setDefault(UIPreferences.RESOURCEHISTORY_SHOW_ONLY_CURRENT_BRANCH, false);\n \n \t\tprefs.setDefault(UIPreferences.FINDTOOLBAR_IGNORE_CASE, true);\n \t\tprefs.setDefault(UIPreferences.FINDTOOLBAR_FIND_IN, 2);\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIIcons.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIIcons.java\nindex a04bb5c..4021fdc 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIIcons.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIIcons.java\n@@ -42,6 +42,8 @@ public class UIIcons {\n \n \t/** Find icon */\n \tpublic static final ImageDescriptor ELCL16_FIND;\n+\t/** Show only commits in the current branch icon */\n+\tpublic static final ImageDescriptor ELCL16_HEAD;\n \t/** Next arrow icon */\n \tpublic static final ImageDescriptor ELCL16_NEXT;\n \t/** Previous arrow icon */\n@@ -67,6 +69,7 @@ public class UIIcons {\n \t\tOVR_CONFLICT = map(\"ovr/conflict.gif\");\n \t\tOVR_ASSUMEVALID = map(\"ovr/assumevalid.gif\");\n \t\tELCL16_FIND = map(\"elcl16/find.gif\");\n+\t\tELCL16_HEAD = map(\"elcl16/cbcommits.gif\");\n \t\tELCL16_NEXT = map(\"elcl16/next.gif\");\n \t\tELCL16_PREVIOUS = map(\"elcl16/previous.gif\");\n \t\tELCL16_COMMIT = map(\"elcl16/commit.gif\");\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIPreferences.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIPreferences.java\nindex 2ff7589..fbc7064 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/UIPreferences.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/UIPreferences.java\n@@ -32,6 +32,8 @@ public class UIPreferences {\n \t/** */\n \tpublic final static String RESOURCEHISTORY_SHOW_FINDTOOLBAR = \"resourcehistory_show_findtoolbar\";\n \t/** */\n+\tpublic final static String RESOURCEHISTORY_SHOW_ONLY_CURRENT_BRANCH = \"resourcehistory_show_only_current_branch\";\n+\t/** */\n \tpublic final static String FINDTOOLBAR_IGNORE_CASE = \"findtoolbar_ignore_case\";\n \t/** */\n \tpublic final static String FINDTOOLBAR_FIND_IN = \"findtoolbar_find_in\";\n-- \n1.5.4.1\n"},{"id":"72868","messageId":"200803240947.15130.robin.rosenberg@dewire.com","threadId":"12833","inReplyTo":"1206327487-6543-1-git-send-email-rogersoares@intelinet.com.br","subject":"Re: [EGIT PATCH 4/4] Show only commits in the current branch.","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2008-03-24T09:47:14Z","receivedAt":"2008-03-24T09:47:14Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"Den Monday 24 March 2008 02.58.07 skrev du:\n> This is a quick hack to have the functionality. It\n> filters the commits returned by GitFileHistory.getHistoryFor.\n\nGood ui, but I don't like the filter (seem you didn't either from your comment) so I suggest inserting this patch\nbefore the 4/4 patch of yours. Then in your patch drop the filter and fix the call to getHistory. This will\nimprove performance since the \"current branch only\" will be the view I (and probably most other people)\nwill use the most.\n\n@@ -868,39 +865,10 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\t\t\t\t\t.getHistoryFor(startingPoint,\n \t\t\t\t\t\t\t\t-1,\n \t\t\t\t\t\t\t\tmonitor,\n-\t\t\t\t\t\t\t\tisShowAllRepoVersions());\n+\t\t\t\t\t\t\t\tisShowAllRepoVersions(),\n+\t\t\t\t\t\t\t\t!showOnlyCurrentBranch);\n \t\t\t\tfileRevisions = Collections.synchronizedList(fileHistoryFor.getFileRevisionsList());\n\nAs a side note, I used the IFileHistory{,Provider} interfaces originally because they existed in Eclipse already.\nThe problem is that it really doesn't fit so the getHistoryFor method used is not part of those interfaces. I was just too lazy to\ncompletely remove the interfaces yet.\n\n-- robin\n\n>From 5935318f49f8bcfdcae81ec12667605e42ea8d9e Mon Sep 17 00:00:00 2001\nFrom: Robin Rosenberg <robin.rosenberg@dewire.com>\nDate: Mon, 24 Mar 2008 08:56:35 +0000\nSubject: [PATCH] Add a flag to GitFileHistory to follow only current branch\n\nSigned-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../egit/core/internal/mapping/GitFileHistory.java |   17 ++++++++++++-----\n .../internal/mapping/GitFileHistoryProvider.java   |    8 +++++---\n .../src/org/spearce/egit/ui/GitHistoryPage.java    |    3 ++-\n 3 files changed, 19 insertions(+), 9 deletions(-)\n\ndiff --git a/org.spearce.egit.core/src/org/spearce/egit/core/internal/mapping/GitFileHistory.java b/org.spearce.egit.core/src/org/spearce/egit/core/internal/mapping/GitFileHistory.java\nindex bdef5f1..ea1faa1 100644\n--- a/org.spearce.egit.core/src/org/spearce/egit/core/internal/mapping/GitFileHistory.java\n+++ b/org.spearce.egit.core/src/org/spearce/egit/core/internal/mapping/GitFileHistory.java\n@@ -65,6 +65,8 @@ public class GitFileHistory extends FileHistory implements IAdaptable {\n \n \tprivate final boolean returnAll;\n \n+\tprivate boolean allHeads;\n+\n \t/**\n \t * Construct a {@link GitFileHistory} object for a given resource (path)\n \t * with some filtering applied. The filter could reduce the number of\n@@ -78,11 +80,14 @@ public class GitFileHistory extends FileHistory implements IAdaptable {\n \t * @param returnAll\n \t *            true if all versions should be collected even if the filter\n \t *            does not match.\n+\t * @param allHeads\n+\t *            true if all heads should be followed\n \t */\n-\tpublic GitFileHistory(IResource resource, int flags, IProgressMonitor monitor, boolean returnAll) {\n+\tpublic GitFileHistory(IResource resource, int flags, IProgressMonitor monitor, boolean returnAll, boolean allHeads) {\n \t\tthis.resource = resource;\n \t\tthis.flags = flags;\n \t\tthis.returnAll = returnAll;\n+\t\tthis.allHeads = allHeads;\n \t\tString prefix = RepositoryMapping.getMapping(resource).getSubset();\n \t\tString[] prefixSegments = prefix!=null ? prefix.split(\"/\") : new String[0];\n \t\tString[] resourceSegments = resource.getProjectRelativePath().segments(); \n@@ -262,10 +267,12 @@ public class GitFileHistory extends FileHistory implements IAdaptable {\n \t\t\t\tList<Commit> startList = new ArrayList<Commit>();\n \n \t\t\t\tstartList.add(repository.mapCommit(head));\n-\t\t\t\tfor(String branch : repository.getBranches()) {\n-\t\t\t\t\tCommit commit = repository.mapCommit(branch);\n-\t\t\t\t\tif (commit != null)\n-\t\t\t\t\t\tstartList.add(commit);\n+\t\t\t\tif (allHeads) {\n+\t\t\t\t\tfor(String branch : repository.getBranches()) {\n+\t\t\t\t\t\tCommit commit = repository.mapCommit(branch);\n+\t\t\t\t\t\tif (commit != null)\n+\t\t\t\t\t\t\tstartList.add(commit);\n+\t\t\t\t\t}\n \t\t\t\t}\n \t\t\t\tCommit[] starts = startList.toArray(new Commit[startList.size()]);\n \t\t\t\tEclipseWalker walker = new EclipseWalker(\ndiff --git a/org.spearce.egit.core/src/org/spearce/egit/core/internal/mapping/GitFileHistoryProvider.java b/org.spearce.egit.core/src/org/spearce/egit/core/internal/mapping/GitFileHistoryProvider.java\nindex 7847fd5..cbbfaa3 100644\n--- a/org.spearce.egit.core/src/org/spearce/egit/core/internal/mapping/GitFileHistoryProvider.java\n+++ b/org.spearce.egit.core/src/org/spearce/egit/core/internal/mapping/GitFileHistoryProvider.java\n@@ -34,7 +34,7 @@ public class GitFileHistoryProvider extends FileHistoryProvider implements\n \n \tpublic IFileHistory getFileHistoryFor(IResource resource, int flags,\n \t\t\tIProgressMonitor monitor) {\n-\t\treturn new GitFileHistory(resource, flags, monitor, false);\n+\t\treturn new GitFileHistory(resource, flags, monitor, false, true);\n \t}\n \n \tpublic IFileRevision getWorkspaceFileRevision(IResource resource) {\n@@ -58,12 +58,14 @@ public class GitFileHistoryProvider extends FileHistoryProvider implements\n \t *            progress monitor\n \t * @param returnAll\n \t *            true if all revisions are returned and interesting revisions marked.\n+\t * @param allHeads\n+\t *            true if all heads should be followed\n \t *\n \t * @return a {@link GitFileHistory} object.\n \t *\n \t */\n-\tpublic GitFileHistory getHistoryFor(IResource resource, int flags, IProgressMonitor monitor, boolean returnAll) {\n-\t\treturn new GitFileHistory(resource, flags, monitor, returnAll); // TODO: implement flags\n+\tpublic GitFileHistory getHistoryFor(IResource resource, int flags, IProgressMonitor monitor, boolean returnAll, boolean allHeads) {\n+\t\treturn new GitFileHistory(resource, flags, monitor, returnAll, allHeads);\n \t}\n \n }\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\nindex d0346a9..984e54e 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java\n@@ -840,7 +840,8 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable,\n \t\t\t\t\t\t.getHistoryFor(startingPoint,\n \t\t\t\t\t\t\t\t-1,\n \t\t\t\t\t\t\t\tmonitor,\n-\t\t\t\t\t\t\t\tisShowAllRepoVersions());\n+\t\t\t\t\t\t\t\tisShowAllRepoVersions(),\n+\t\t\t\t\t\t\t\ttrue);\n \t\t\t\tfileRevisions = Collections.synchronizedList(fileHistoryFor.getFileRevisionsList());\n \t\t\t\tfindToolbar.setFileRevisions(fileRevisions, newtags, branches);\n \t\t\t\tDisplay.getDefault().syncExec(new Runnable() {\n-- \n1.5.4.3\n"},{"id":"72885","messageId":"47E7AA42.9010202@intelinet.com.br","threadId":"12833","inReplyTo":"200803240947.15130.robin.rosenberg@dewire.com","subject":"Re: [EGIT PATCH 4/4] Show only commits in the current branch.","fromName":"Roger C. Soares","fromEmail":"rogersoares@intelinet.com.br","sentAt":"2008-03-24T13:18:58Z","receivedAt":"2008-03-24T13:18:58Z","isPatch":true,"sender":{"key":"rogersoares@intelinet.com.br","avatar":null},"body":"\nRobin Rosenberg escreveu:\n> Good ui, but I don't like the filter (seem you didn't either from your comment) so I suggest inserting this patch\n> before the 4/4 patch of yours. Then in your patch drop the filter and fix the call to getHistory. This will\n> improve performance since the \"current branch only\" will be the view I (and probably most other people)\n> will use the most.\n>   \nYep, I did it some time ago and haven't gone back to understand the \ngetHistoryFor code. It will be a lot better now, thanks, will do it. :)\n\n[]s,\nRoger.\n"}]}