繁体   English   中英

将子文件夹从 TFVC 存储库迁移到 git

[英]Migrate subfolder from TFVC repository to git

我正在尝试将单个Core子目录从 TFVC 存储库迁移到 git 存储库。 源在多个项目中使用,其他子目录从不使用,但需要在克隆存储库时获取。 它们在概念上也是不相关的。

回购布局看起来像这样:

$Project/Repo1/Main
$Project/Repo1/dev/branch1
    +branch2
    ...
    +branchN
$Project/Repo1/release/RelBranch1
...

每个分支都有一个扁平的文件夹结构,包含重要的Core目录和其他未使用的目录(这些不是空的,只是与Core目录无关):

<branch-folder>
|-Core
|-Other
|-Other2
|-...
|-OtherN

我看到这种情况发生的唯一方法是使用git-tfs将源迁移到 git ,然后在第一次提交中删除其他目录。 这似乎很笨拙,对回购历史的任何调查都会带回不需要的目录? 有没有更好的方法来实现所需的回购结构?

git 中的新布局应仅包含 repo 的Core子目录,其中包含所有分支和尽可能多的历史记录。 幸运的是,在所有情况下,没有提交引用来自Core目录和任何Other目录的文件。


理想情况下,我想将来自不同 TFVC 存储库的几个子目录合并到一个 git 存储库中,但我专注于这个问题的核心问题。 目前,我将每个迁移到一个单独的 repo,然后使用子模块将它们粘合在一起。

您可以分两步执行此操作,首先使用git-tfs工具执行迁移。 您将需要 select 迁移的最小变更集。 如果要包含特定分支,则应至少在分支之前包含变更集:

# make a new directory and move into it

git tfs clone $TeamURL $TFSProjectToClone .  --changeset=$MinimumChangeset --branches=auto
git tfs verify

然后您可以使用git filter-repo过滤存储库,readme.md 有一个示例,说明如何过滤特定子目录的存储库。

git filter-repo --path src/

# Add remote and push

其中src是保存在存储库中的唯一目录。 您还可以使用此工具重命名目录和标签。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM