class MGit::Clean

@!scope [command] clean 清除所有仓库中工作区的变更 follow git combinatorial command eg: git add . && git reset –hard

Public Class Methods

description() click to toggle source
# File lib/m-git/command/clean.rb, line 54
def self.description
  "强制清空暂存区和工作区,相当于对指定或所有仓库执行\"git add . && git reset --hard\"操作"
end
usage() click to toggle source
# File lib/m-git/command/clean.rb, line 58
def self.usage
  "mgit clean [(-m|-e) <repo>...] [-h]"
end

Public Instance Methods

enable_repo_selection() click to toggle source
# File lib/m-git/command/clean.rb, line 46
def enable_repo_selection
  true
end
enable_short_basic_option() click to toggle source
# File lib/m-git/command/clean.rb, line 50
def enable_short_basic_option
  true
end
execute(argv) click to toggle source
# File lib/m-git/command/clean.rb, line 11
def execute(argv)

  Output.puts_start_cmd

  # 清除中间态
  OperationProgressManager::PROGRESS_TYPE.each { |type, type_value|
    if OperationProgressManager.is_in_progress?(Workspace.root, type_value)
      Output.puts_processing_message("清除#{type.to_s}中间态...")
      OperationProgressManager.remove_progress(Workspace.root, type_value)
      Output.puts_success_message("清除成功!")
    end
  }

  do_repos = []
  all_repos.each { |repo|
    do_repos.push(repo) if repo.status_checker.status != Repo::Status::GIT_REPO_STATUS[:clean]
  }

  if do_repos.length > 0
    Workspace.check_branch_consistency
    Output.puts_processing_message("正在将改动加入暂存区...")
    _, error_repos1 = Workspace.execute_git_cmd_with_repos('add', '.', do_repos)
    Output.puts_processing_message("正在重置...")
    _, error_repos2 = Workspace.execute_git_cmd_with_repos('reset', '--hard', do_repos)
    Output.puts_succeed_cmd(argv.absolute_cmd) if error_repos1.length + error_repos2.length == 0
  else
    Output.puts_success_message("所有仓库均无改动,无须执行。")
  end

end
validate(argv) click to toggle source
# File lib/m-git/command/clean.rb, line 42
def validate(argv)
  Foundation.help!("输入非法参数:#{argv.git_opts}。请通过\"mgit #{argv.cmd} --help\"查看用法。") if argv.git_opts.length > 0
end