【发布时间】:2020-07-07 16:29:55
【问题描述】:
我的问题是我有一个客户,我们称他们为“Evil Corp”,它通过我们使用 GitHub 存储库的各种项目为我的公司提供大量业务。让我们取 2 并称它们为“TotallyNotPolluting”和“CoveringUpPolluting”。
我希望我的员工能够在克隆时将“TotallyNotPolluting”存储库克隆到文件夹“EvilCorp”中。
行为:
所以起始结构是:
E:
└── Work
└── Repos
- 具有起始文件夹结构:
E:\Work\Repos开始 - 在 Git Bash/GitHub Desktop/任何克隆 repo 'TotallyNotPollluting' (选择的位置是起始文件夹结构
E:\Work\Repos) - 有结束文件夹结构:
E:\Work\Repos\EvilCorp\TotallyNotPolluting - 在 Git Bash/GitHub Desktop/无论克隆 repo 'CoveringUpPolluting' (选择的位置是起始文件夹结构
E:\Work\Repos) - 有结束文件夹结构:
E:\Work\Repos\EvilCorp\CoveringUpPolluting
所以最终的结构是:
E:
└── Work
└── Repos
└── EvilCorp
├── TotallyNotPolluting
└── CoveringUpPolluting
这样,所有存储库都被组织到客户端文件夹中,而无需员工采取额外步骤。
这可能吗?要让克隆操作创建然后克隆到(如果不存在)或克隆到(如果存在)父目录?
注意:我已经研究过使用子模块,但我不想要包含其他存储库的存储库“EvilCorp”。我只想要克隆时的文件夹。
【问题讨论】:
-
我可能误解了你的问题,但是如果你创建一个顶级仓库“Evil Corp”并在其中创建子文件夹,然后将项目添加到各个文件夹,那么人们将不得不总是克隆“Evil Corp” “回购,他们最终将获得所有其他子项目。但是,不建议将多个不相关的项目保存在一个 repo 中。如果我理解错了,请更正。
-
@prabodhprakash 我在问题的底部添加了一个 NOTE,即我不想要包含其他 repos 的 repo 'EvilCorp'。我只想创建一个文件夹并然后克隆到其中,或者如果该文件夹已经存在直接克隆到其中。
-
你可以写一个脚本来为你做这件事。一个简单的 shell 脚本,它转到父文件夹并检查单个文件夹(如果存在),检查该文件夹中的 repo - 如果不存在任何内容,请克隆 repo。如果子文件夹不存在,如果首先创建子文件夹然后克隆 repo。因此,您可以在 github 上拥有多个不同的 repos,并在客户端拥有一个可执行的 shell 脚本来管理它们。
-
@prabodhprakash 我将如何在克隆上自动执行此操作?有没有办法将 shell 脚本注入到 Git 进程中进行克隆?如果您知道如何,请将其作为答案提交,如果可行,我会接受。
-
现在在手机上,早上第一件事就是发送脚本。脚本将做什么 - 创建一个父文件夹(例如:\\work\\repos),然后将创建单独的子文件夹,并在每个子文件夹中克隆一个 repo。如果存在文件夹/子文件夹/repo,它将跳过。另外,我使用的是 mac,所以您必须进行调整才能使其在 Windows 中运行。预期是否正确?