On Tue, 29 Sep 2015, Nicolai Hess wrote:



2015-09-29 14:27 GMT+02:00 Nicolai Hess <nicolaih...@web.de>:


      2015-09-29 14:02 GMT+02:00 Nicolai Hess <nicolaih...@web.de>:


            2015-09-29 10:14 GMT+02:00 Thierry Goubier 
<thierry.goub...@gmail.com>:

Yes! Thanks!

Can you run a makefile under Windows? I can prepare one which calls and loads 
everything to run the tests for gitfiletree.

Or just trying to load something like SmaCC from github...

Gofer new url: 'http://smalltalkhub.com/mc/Pharo/MetaRepoForPharo50/main'; 
configurationOf: 'GitFileTree'; loadDevelopment

Metacello new baseline: 'SmaCC'; repository: 
'gitfiletree://github.com/ThierryGoubier/SmaCC?protocol=https'; load

If you manage to get through the SmaCC loading without a crash or a lockup, 
then it means it nearly certainly works.



No, it does not work, in MCFileTreeGitRepository 
class>>#runProcessWrapperGitCommand:in:
...


(Smalltalk
        at: #ProcessWrapper
        ifAbsent: [ self error: 'Please load ProcessWrapper' ])
        ifNotNil:
            [ :pW |
            | command |
            command := pW new
                useStdout;
                useStderr;
                startWithCommand:
                    self gitCommand , ' -C "'
                        ,
                            (MCFileTreeFileUtils current directoryPathString: 
aDirectory)
                        , '" ' , aCommandString.
            r := command upToEnd.                                
"<<<<<<<<<<<<-------------------  MNU False>>upToEnd"
...

somehow, the command is a boolean false, instead of a ProcessWrapper.


1. git has to be on the path
2. windows does not understand /usr/bin/git
3. changing the above to

(Smalltalk
        at: #ProcessWrapper
        ifAbsent: [ self error: 'Please load ProcessWrapper' ])
        ifNotNil:
            [ :pW |
            | command |
            command := pW new
                useStdout;
                useStderr;
                startWithCommand:(
                    self gitCommand , ' -C "'
                        ,
                            (MCFileTreeFileUtils current directoryPathString: 
aDirectory)
                        , '" ' , aCommandString)

There's a semicolon missing from the end of the line.

                 yourself.
            r := command upToEnd.

makes it loading the git repository, but crashes afterwards.

(with latest vm, I 'll try again with stable vm)

 


still crashes, happens on calling #exitCode

Does #isRunning return true when #exitCode is called? If so, the crash is to be expected - aka it's a known issue. This is because one must not request for the exit code, by sending #exitCode, before the process has terminated.

If it keeps crashing, then you should consider enabling the plugin's log to see what's happening.

Levente


 

 

Thierry
 
 

      Am I writing that code correctly? If you see the equivalent code using 
OSProcess[2], you understand that, as
      GitFileTree is a heavy hitter(*) on the external commands framework, I am 
prepared to work very closely with
      that layer including inside the vm plugin code (and David T Lewis helped 
me a lot to fix random lockups we
      had).

      Thierry

      (*) Running the gitfiletree integration tests launches probably over a 
hundred external commands in quick
      succession.

      
[1]https://github.com/dalehenrich/filetree/blob/pharo5.0/repository/MonticelloFileTree-Git.package/MCFileTreeGitRepository.class/class/runProcessWra
      pperGitCommand.in..st

      
[2]https://github.com/dalehenrich/filetree/blob/pharo5.0/repository/MonticelloFileTree-Git.package/MCFileTreeGitRepository.class/class/runOSProcessG
      itCommand.in..st


            Levente









Reply via email to