簡體   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