我自動化了一下git工作流程,並且在使用git gem的in_branch方法時發現了一些好奇的行爲,並想知道是否有人可以解釋這個問題出現的原因或方式?下面是一些測試代碼應該重現該問題:在git gem中打破in_branch?
#!/usr/bin/env ruby
require 'git'
# git details
repo_name = 'SOME_REPO'
working_dir = "#SOME_DIR/git_test_repo"
repo_owner = 'SOME_GIT_USER'
repo_host = 'SOME_GIT_HOST'
repo_dir = "#{working_dir}/#{repo_name}"
remote_repo = "[email protected]#{repo_host}:#{repo_owner}/#{repo_name}.git"
branch_name = 'testbranch'
commit_message = 'log line breaking in_branch test'
Dir.mkdir(working_dir) unless Dir.exist?(working_dir)
Dir.chdir(working_dir)
Git.clone(remote_repo, repo_name) unless Dir.exists?(repo_dir)
repo = Git.open(repo_dir)
repo.pull(remote = 'origin', branch = 'master')
repo.branch(branch_name).in_branch(message = commit_message) do
File.write(repo_dir + '/test.txt', Time.now)
repo.add('.')
# -----this line breaks it --------------
puts 'committing changes'
# ---------------------------------------
end
運行此代碼時,該in_branch塊結束前的最後一個放線,實際運行時,不知何故導致分支的改變將被恢復,但當它被註釋掉時,所有代碼都按預期行事。我已經在塊中的任何地方測試了輸出線,並且它們都表現良好。它似乎發生在許多版本的ruby(自定義安裝,rvm安裝)和不同的操作系統(linux和mac)上。
是否有一些紅寶石的神祕行爲及其終端輸出我需要在這裏知道?