MCRepositoryBrowser.st
branchjv
changeset 982 230ed8c7d051
parent 970 fa5b935ff989
child 984 269c09751322
--- a/MCRepositoryBrowser.st	Wed Apr 15 06:40:20 2015 +0100
+++ b/MCRepositoryBrowser.st	Wed Apr 15 11:26:04 2015 +0100
@@ -1211,23 +1211,44 @@
 
 versionCompareWithImage
 
-    | version snapshot |
+    | version package snapshot snapshotCS packageCS diffset diffCS |
 
     self withWaitCursorDo:[
         version := self selectedVersionAsMCVersion.
         version isNil ifTrue:[ ^ self ].
         snapshot := version snapshot.
-        (Tools::ChangeSetBrowser2 
-                on: (snapshot asChangeSet name:('Diff for: ',version fileName))
-                label: version info name)
+        snapshotCS := snapshot asChangeSet.
+        snapshotCS name: version info name.
+        ProjectDefinition allSubclassesDo:[ :def |
+            ((def class compiledMethodAt: #monticelloName) notNil and:[
+                def monticelloName = version package name]) ifTrue:[ 
+                package := def package.
+            ].
+        ].
+        package := Dialog requestProject:(resources string: 'Package to compare with') initialAnswer:package suggestions: nil.
+        package isNil ifTrue:[ ^ self ].
+        packageCS := ChangeSet forPackage: package.
+        "/ Remove St/X specific method and classes (used for package management)
+        packageCS := packageCS reject:[:chg |  
+            chg changeClass theNonMetaclass isProjectDefinition or:[ chg isMethodDefinitionChange and:[ AbstractSourceCodeManager isVersionMethodSelector: chg selector ]]
+        ].
+        diffset := snapshotCS diffSetsAgainst: packageCS.  
+        diffCS := ChangeSet new.
+        diffCS addAll: (diffset onlyInReceiver).
+        diffCS addAll: (diffset changed collect:[:pair | pair first ]).
+        diffCS addAll: (diffset onlyInArg collect:[ :chg | chg asAntiChange ]).
+        diffCS name: (resources string: 'Diffs between %1 (MC version) and %2 (in image)' with: version info name with: package).
+        (Tools::ChangeSetBrowser2 on: diffCS)
             beOneColumn;
             showSame: false;
             targetNamespace:targetNamespace;
             targetPackage:targetPackage;
-            open
+            allowRemove: true;        
+            open       
     ].
 
-    "Modified: / 01-11-2014 / 00:04:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 15-04-2015 / 10:50:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 15-04-2015 / 10:13:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 versionInspect
@@ -1366,6 +1387,11 @@
     ^ '$Header: /cvs/stx/stx/goodies/monticello/MCRepositoryBrowser.st,v 1.38 2015-02-09 13:57:08 cg Exp $'
 !
 
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
     ^ '$Id: MCRepositoryBrowser.st,v 1.38 2015-02-09 13:57:08 cg Exp $'
 ! !