class: AbstractFileBrowser
authorClaus Gittinger <cg@exept.de>
Tue, 28 May 2013 12:34:21 +0200
changeset 12777 0221a2b95d8c
parent 12776 78edd417bde1
child 12778 b7c50fd7cd7a
class: AbstractFileBrowser added: #commitFilesToCVS: #cvsCommitFiles: changed: #cvsCommit
AbstractFileBrowser.st
--- a/AbstractFileBrowser.st	Mon May 27 10:32:39 2013 +0200
+++ b/AbstractFileBrowser.st	Tue May 28 12:34:21 2013 +0200
@@ -5438,6 +5438,16 @@
 
 !AbstractFileBrowser methodsFor:'menu actions-scm-cvs'!
 
+commitFilesToCVS:files
+    |numFiles|
+
+    (numFiles := files size) > 0 ifTrue:[
+        self withActivityIndicationDo:[
+            self cvsCommitFiles:files
+        ]
+    ]
+!
+
 cvsAddAndCommit
     self cvsAddAndCommitAsBinary:false
 !
@@ -5503,16 +5513,23 @@
 !
 
 cvsCommit
-    |nSel log logArg msg cmd selectedFiles sel executionBlock nameString|
+    |selectedFiles|
 
     selectedFiles:= self currentSelectedFiles.
-    nSel := selectedFiles size.
-
-    nSel == 1 ifTrue:[
-        msg := resources string:'Enter log message for checkIn of "%1"' with:(selectedFiles first baseName)
+    self cvsCommitFiles:selectedFiles
+!
+
+cvsCommitFiles:files
+    |nFiles log logTmp s logArg msg executionBlock nameString |
+
+    nFiles := files size.
+    nFiles == 0 ifTrue:[^ self].
+
+    nFiles == 1 ifTrue:[
+        msg := resources string:'Enter log message for checkIn of "%1"' with:(files first baseName)
     ] ifFalse:[
-        nSel > 1 ifTrue:[
-            msg := resources string:'Enter log message for %1 files to checkIn' with:nSel printString
+        nFiles > 1 ifTrue:[
+            msg := resources string:'Enter log message for %1 files to checkIn' with:nFiles printString
         ] ifFalse:[
             msg := resources string:'Enter log message for checkIn'
         ]
@@ -5525,34 +5542,37 @@
         initialAnswer:nil.
 
     log isNil ifTrue:[^ self].
+    log := log replChar:$"  withString:'\"'.
 
     OperatingSystem isMSWINDOWSlike ifTrue:[
-        logArg := '-m "' , log , '"'.
+        "/ save the log message into another tempFile ...
+        logTmp := Filename newTemporary.
+        s := logTmp writeStream.
+        s nextPutAll:log.
+        s close.
+
+        logArg := '-F "', logTmp pathName, '"'.
     ] ifFalse:[
         logArg := '-m ''' , log , ''''.
     ].
 
-    sel := self currentSelectedObjects.
-    sel isEmpty ifTrue:[ ^ self ].
-
     executionBlock := [:stream |
-        log notNil ifTrue:[
-            sel size > 0 ifTrue:[
-                sel do:[:fn |
-                    | dir nameArg |
-
-                    nameArg := '"',fn baseName,'"'.
-                    dir := fn directory.
-                    cmd := 'cvs commit ',logArg,' ' , nameArg.
-                    (self getExecutionBlockForCommand:cmd inDirectory:dir) value:stream.
-                ]
+        [
+            files do:[:fn |
+                | dir nameArg cmd |
+
+                nameArg := '"',fn baseName,'"'.
+                dir := fn directory.
+                cmd := 'cvs commit ',logArg,' ' , nameArg.
+stream showCR:fn pathName.
+                (self getExecutionBlockForCommand:cmd inDirectory:dir) value:stream.
             ] 
-        ]
+        ] ensure:[
+            logTmp notNil ifTrue:[ logTmp remove ].
+        ].
     ].
     nameString := 'Command> cvs commit'.
     self makeExecutionResultProcessFor:executionBlock withName:nameString.
-
-    "Modified: / 04-12-2006 / 13:16:39 / cg"
 !
 
 cvsCompareWithNewest
@@ -9201,10 +9221,10 @@
 !AbstractFileBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.520 2013-05-21 20:06:34 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.521 2013-05-28 10:34:21 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.520 2013-05-21 20:06:34 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.521 2013-05-28 10:34:21 cg Exp $'
 ! !