簡體   English   中英

Svn 遷移到 Git - 在 Git 中獲取所有已更改文件的狀態,因為在創建分支的位置已更改整體路徑

[英]Svn migration to Git - Getting a status in Git on all changed files since a branch was created where the overall path has changed

我正在處理從 SVN 到 Git 的遷移。 我遇到的問題是,我希望能夠獲得 Git 分支中所有已修改文件的列表,因為該分支已創建。 所有這些分支都是由標簽創建的。

當標簽和分支之間沒有結構變化時,這非常簡單。 您簽出分支,然后運行此命令以檢查分支和標記之間的修改文件。

git diff --diff-filter=M --name-only <TAG>

不幸的是,由於存儲庫是從 SVN 遷移的,因此在某些情況下,當人們從標簽創建分支時,整體路徑已經改變。 標簽中會有這樣的結構。

  • 源代碼

    • 代碼文件1
    • 代碼文件2
    • 代碼文件3
  • 集成測試

在分支中,他們將剛剛從 src 中取出所有內容並將其放在根目錄中,因此分支看起來像這樣......

  • 代碼文件1
  • 代碼文件2
  • 代碼文件3

在這種情況下,Git 檢測到所有文件都已重命名,並且僅將其顯示為狀態(通常出現 R100)。 如果我關閉重命名檢測,那么所有文件都會出現添加狀態。

我嘗試了一些不同的方法,但除了從 SVN 進行不同的遷移並更改路徑之外,似乎沒有其他辦法。 另一種選擇可能是只提取存儲庫的兩個不同副本,檢查一個中的標簽和另一個中的分支,然后進行本地差異,但我希望不必嘗試。

我對這個問題的解決方法是將分支文件移回子文件夾,然后差異可以再次識別修改過的文件。

在分支中創建子文件夾

mkdir 源代碼

將根目錄中的所有內容移動到該子文件夾中,忽略錯誤(將 src 復制到自身時會出錯,-k 開關會忽略跳過嘗試將 src 移動到自身的錯誤)

git mv -k *./src

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM