pf-gitmodule.ps1
function Sync-Git_Module { $folder = Get-Git_RootFolder $file = "$folder\.gitmodules" $content = Invoke-Exe git config -f $file --list $configItemList = $content | Get-Like_Match 'submodule.*.*=*' $moduleList = $configItemList.1 | Select-Object -Unique foreach ($module in $moduleList) { $path = Invoke-Exe git config -f $file "submodule.$module.Path" $url = Invoke-Exe git config -f $file "submodule.$module.Url" $branch = Invoke-Exe git config -f $file "submodule.$module.Branch" Invoke-Exe git submodule add -b $branch -f --name $path $url $path } } function Sync-Git_Module_Branch { $folder = Get-Git_RootFolder $file = "$folder\.gitmodules" $content = Invoke-Exe git config -f $file --list $configItemList = $content | Get-Like_Match 'submodule.*.*=*' $moduleList = $configItemList.1 | Select-Object -Unique foreach ($module in $moduleList) { $path = Invoke-Exe git config -f $file "submodule.$module.Path" $path = "$folder/$path" $branch = Invoke-Exe git config -f $file "submodule.$module.Branch" -OkExitCode 0,1 if ($branch) { Invoke-InLocation -path $path -script { Invoke-Exe git checkout $branch } } } } |