Method: MGit::Workspace.setup_config
- Defined in:
- lib/m-git/workspace.rb
.setup_config(strict_mode: true) ⇒ Object
解析配置文件(完成后可使用@config获取配置对象)
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/m-git/workspace.rb', line 40 def setup_config(strict_mode:true) # 记录旧config哈希 hash_sha1 = config.hash_sha1 if !config.nil? # 调用manifest_hook HooksManager.execute_manifest_hook(strict_mode:strict_mode) # 解析config @config = Manifest.parse(source_config_dir) # 是否更新了配置表 did_update = hash_sha1.nil? || hash_sha1 != config.hash_sha1 # --- 同步工作区 --- begin # 从配置中读取 should_sync_workspace = MGitConfig.query_with_key(root, :syncworkspace) if should_sync_workspace # 同步工作区仓库(缓存或弹出) Utils.sync_workspace(root, config) else # 若禁止同步的话,则将缓存弹出(若有的话) config.light_repos.each { |light_repo| if !Dir.exist?(light_repo.abs_dest(root)) pop(root, light_repo) end } end rescue Error => _ Output.("MGit配置读取失败,跳过工作区同步!") end # ------------------ # --- 同步.git实体 --- begin # 从配置中读取 manage_git = MGitConfig.query_with_key(root, :managegit) if !manage_git Utils.pop_git_entity(root, config) else # 当前逻辑是如果配置了托管.git的话,此时不压入.git,而是只把新下载仓库的.git压入 # 后续如果有需要的话可以打开下面这个注释,这样在每次执行mgit指令时都会根据配置压入.git,起到同步的作用 # Workspace.push_git_entity(@root, @config) end rescue Error => _ Output.("MGit配置读取失败,跳过.git同步!") end # ------------------ did_update end |