2012-10-10 45 views
0

我試圖用ruby將一些文件上傳到svn倉庫。 但簽出後,剩下的代碼沒有被執行。Ruby代碼未被執行

r = SvnRepository.new("#{repDir}") 
r.checkout("", ".", user, pass) 

puts "NOT EXECUTING!" 
`cp -r #{compFold} ./trunk/#{compFold}` 
r.add("trunk", "./#{compFold}") 
r.commit("trunk", "Component #{compFold} uploaded", user, pass) 

r.checkout代碼:

def checkout(repository, working_copy_path, user = nil, pass = nil) 
    #result = `cd #{working_copy_path} && #{@svn} co file:///#{@repository_base}/#{repository}` 
    check = "cd #{working_copy_path} && #{@svn} co #{@repository_base}/#{repository}" 
    if user != nil 
     check = check + " --username #{user}" 
     if pass != nil 
      check = check + " --password #{pass}" 
     end 
    end 

    result = exec(check) 
    result[/d+/] 
end 

回答

0

內部checkoutexec呼叫替換當前的進程與一個爲正在執行的程序。因此,exec永遠不會返回。有關更多詳細信息,請參閱the docs

您可以使用spawn替換exec,以使您能夠執行獨立於控制過程的過程。調用spawn將返回可以使用Process進行監視的新進程的PID。

+0

你說這是真的。 但我不想執行不同的線程。 它正確地更改** exec(檢查)爲\'#{check} \ **。**。 – user1573607