克隆git存储库,并将所有者包含在文件夹结构中

托克

我正在寻找一种克隆git存储库的方法,例如从GitHub,并在下载的文件夹结构中包括所有者或组织。

例如,当angular-cliangular当前文件夹中的组织克隆存储库时,我希望它在当前的工作目录中这样克隆它angular/angular-cli

我尝试使用谷歌搜索解决方案,但找不到解决方案,因为基本上所有结果都告诉我如何克隆存储库。我当然可以做到,但是我希望有一些工具可以帮助我使这一过程自动化。也许是bash或powershell脚本,甚至直接内置到git中。

编辑:与另一个问题相反,我正在寻找一种工具,该工具可根据源(例如Github)和用户/组织(例如Angular)自动将存储库放置在正确的文件夹结构中。

托克

更新:由于我对这个旧的问答很满意,所以我想更新我的帖子。我最近开始将此脚本放入PowerShell模块(GitManagement)中,该模块可在以下位置找到:https : //github.com/totkeks/PowerShell-Modules


我自己在powershell中构建了一个解决方案。您可以通过名称和用于解析URL并为存储库构建相应路径的正则表达式配置不同的Git提供程序。

<#
    .DESCRIPTION
    Clone git repositories including the project/user/organization/... folder structure
#>
Param(
    [parameter(Mandatory = $true)]
    [String]
    $Url
)

#------------------------------------------------------------------------------
# Configuration of available providers
#------------------------------------------------------------------------------
$GitProviders = @{
    "Azure"  = {
        if ($args[0] -Match "https://(?:\w+@)?dev.azure.com/(?<Organization>\w+)/(?<Project>\w+)/_git/(?<Repository>[\w-_]+)") {
            return [io.path]::Combine($Matches.Organization, $Matches.Project, $Matches.Repository)
        }
    }

    "GitHub" = {
        if ($args[0] -Match "https://github\.com/(?<UserOrOrganization>\w+)/(?<Repository>[\w-_]+)\.git") {
            return [io.path]::Combine($Matches.UserOrOrganization, $Matches.Repository)
        }
    }
}


#------------------------------------------------------------------------------
# Find the right provider and clone the repository
#------------------------------------------------------------------------------
$Match = $GitProviders.GetEnumerator() |
    Select-Object @{n = "Provider"; e = {$_.Key}}, @{n = "Path"; e = {$_.Value.invoke($Url)}} |
    Where-Object { $_.Path -ne $null } |
    Select-Object -First 1

if ($Match) {
    Write-Host "Found match for provider: $($Match.Provider)"

    if ($Global:ProjectsDir) {
        $TargetDirectory = [io.path]::Combine($Global:ProjectsDir, $Match.Provider, $Match.Path)
    }
    else {
        Write-Error "No projects directory configured. Aborting."
    }

    git clone $Url $TargetDirectory
}
else {
    Write-Error "No match found for repository url: $Url"
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将所有者更改为文件夹中的当前用户,并将其包含在主目录中?

将GIT存储库子文件夹克隆到具有相同文件夹结构的现有Repo中

将GIT存储库子文件夹克隆到具有相同文件夹结构的现有Repo中

如何将文件整理为包含文件夹的所有者

git clone:恢复包含存储库中的文件夹

如何自动检查/确保所有外部库是否都包含在Eclipse中的lib文件夹中?

如何更改文件或文件夹的所有者?

如何在不指定每个分支的情况下将git存储库的所有分支克隆到它们自己的文件夹中?

列出某个时刻存在于Git存储库分支中的文件夹的所有子文件夹

更改文件夹的所有者和权限

更改Linux中文件夹的所有者

无法更改文件夹的所有者

使用if命令获取文件夹的所有者

将文件夹中的所有更改提交到git存储库

保存在特定文件夹中后,将所有者更改为文件

将所有文件包含在文件夹中-PHP

将所有文件包含在一个捆绑包的文件夹中

将干预图像保存在Laravel 5的所有者文件夹中

仅将文件夹权限授予 BASH 中的 root 和所有者

git 如何识别存储库所有者?

TortoiseGit:是否可以只克隆 git 存储库中的特定文件夹?

克隆临时文件夹中的git存储库时出现权限错误

防止删除文件夹所有者的文件夹

更改根文件夹和子文件夹的所有者(Ubuntu 13.04)

查看文件夹内文件夹的大小和所有者

允许所有用户在HDD中创建文件夹,但只有所有者可以读取/写入/删除自己的文件夹

Google jib - 更改所有文件和文件夹的所有者

如何通过 Ansible 将 Git Repo 克隆到所有文件夹中

Xcode 5“文件夹已包含git存储库”