0

我正在尝试使用 ruby​​ 将一些文件上传到 svn 存储库。但是在签出之后,其余的代码并没有被执行。

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
4

1 回答 1

0

exec对inside的调用checkout将当前进程替换为正在执行的程序的进程。因此,exec永远不会回来。有关更多详细信息,请参阅文档

您可以替换execspawn以使您能够执行与控制流程分开的流程。调用spawn将返回新进程的 pid,然后您可以使用Process.

于 2012-10-10T10:22:01.420 回答