Use git checkout instead of git reset

With this change, if the checkout fails, it will stop with an error.

The purpose is to avoid deleting working branch history when
developing gem.
This commit is contained in:
dearblue
2019-12-15 13:07:31 +09:00
parent dc15c2838f
commit f08d9b288d
2 changed files with 13 additions and 8 deletions
+7 -1
View File
@@ -279,7 +279,7 @@ module MRuby
class Command::Git < Command
attr_accessor :flags
attr_accessor :clone_options, :pull_options, :checkout_options, :reset_options
attr_accessor :clone_options, :pull_options, :checkout_options, :checkout_detach_options, :reset_options
def initialize(build)
super
@@ -288,6 +288,7 @@ module MRuby
@clone_options = "clone %{flags} %{url} %{dir}"
@pull_options = "--git-dir %{repo_dir}/.git --work-tree %{repo_dir} pull"
@checkout_options = "--git-dir %{repo_dir}/.git --work-tree %{repo_dir} checkout %{checksum_hash}"
@checkout_detach_options = "--git-dir %{repo_dir}/.git --work-tree %{repo_dir} checkout --detach %{checksum_hash}"
@reset_options = "--git-dir %{repo_dir}/.git --work-tree %{repo_dir} reset %{checksum_hash}"
end
@@ -306,6 +307,11 @@ module MRuby
_run checkout_options, { :checksum_hash => checksum_hash, :repo_dir => shellquote(dir) }
end
def run_checkout_detach(dir, checksum_hash)
_pp "GIT CHECKOUT DETACH", dir, checksum_hash
_run checkout_detach_options, { :checksum_hash => checksum_hash, :repo_dir => shellquote(dir) }
end
def run_reset_hard(dir, checksum_hash)
_pp "GIT RESET", dir, checksum_hash
_run reset_options, { :checksum_hash => checksum_hash, :repo_dir => shellquote(dir) }
+6 -7
View File
@@ -86,14 +86,13 @@ module MRuby
if File.exist?(gemdir)
if $pull_gems
git.run_pull gemdir, url
# Jump to the top of the branch
git.run_checkout(gemdir, branch)
git.run_reset_hard gemdir, "origin/#{branch}"
git.run_checkout gemdir, branch
git.run_pull gemdir, url
elsif params[:checksum_hash]
git.run_reset_hard(gemdir, params[:checksum_hash])
git.run_checkout_detach gemdir, params[:checksum_hash]
elsif lock
git.run_reset_hard(gemdir, lock['commit'])
git.run_checkout_detach gemdir, lock['commit']
end
else
options = [params[:options]] || []
@@ -105,9 +104,9 @@ module MRuby
# Jump to the specified commit
if params[:checksum_hash]
git.run_reset_hard gemdir, params[:checksum_hash]
git.run_checkout_detach gemdir, params[:checksum_hash]
elsif lock
git.run_reset_hard gemdir, lock['commit']
git.run_checkout_detach gemdir, lock['commit']
end
end