簡體   English   中英

使用 reposurgeon 將沒有主干的 svn 存儲庫遷移到 git

[英]Migrating a svn repository without trunk to git using reposurgeon

我正在嘗試將舊的 svn 存儲庫轉換為 git。在閱讀了幾篇描述使用 git-svn 執行此任務的缺點的帖子后,尤其是對於具有非標准布局的存儲庫,我決定給 reposurgeon 一個 go。之后最初使用來自 Ubuntu package 源 (4.3) 的版本,我切換到最新版本(4.14;從源構建)以防萬一。

遺憾的是,到目前為止,我只能生成一個空的 git 存儲庫。 看來我還沒弄清楚如何正確使用 reposurgeon。

這是我嘗試轉換的 svn 存儲庫的基本結構:

  • 分支機構
    • 1.0.x
    • 1.1.x
  • 標簽
    • 發展
      • 1.0.0
      • 1.0.1
      • 1.0.2
      • 1.1.0
    • 生產
      • 1.0.0
      • 1.0.1

存儲庫中還有更多內容,但這就是它的要點。 這里要注意的重要一點是

  1. 沒有后備箱
  2. 標簽結構不扁平

現在我正在嘗試運行最少數量的步驟。 我使用http://www.catb.org/~esr/reposurgeon/repository-editing.html#quickstart作為指南,因此在為存儲庫創建作者 map 之后,我執行了以下操作:

repotool mirror URL project-mirror
reposurgeon
  read project-mirror
  authors read <project-mirror.map
  prefer git
  rebuild project-git

當我在 reposurgeon 中運行read project-mirror時(項目鏡像是我使用 repotool 創建的鏡像的目錄),我得到以下 output:

reposurgeon: nonexistent source "test" on pathmap copy
reposurgeon: component "test" to be deleted is missing
reposurgeon: 1898910: missing required date field
* project-mirror
reposurgeon: 2 new log message(s)

首先創建一個 SVN 轉儲(在我的本地鏡像上使用repotool exportsvnadmin dump )並讀取它會導致相同的結果。

運行rebuild project-git會產生以下結果:

reposurgeon: not trying to checkout an empty repository
reposurgeon: rebuild is complete.
reposurgeon: preserved files restored.

這將創建一個空的 git 存儲庫:沒有提交,沒有分支,沒有標簽。 我不希望我在上面發布的命令鏈導致我想要的結果(畢竟它甚至在文檔中提到到達那里是一個迭代過程),但我希望至少有一些提交和/ 或 git 存儲庫中的分支。

任何指向正確方向的指示將不勝感激。

PS:可能還需要注意,SVN 服務器在此過程中可以而且不得以任何方式進行更改。 我只有對相關存儲庫的讀取權限。 我對這個 SVN 服務器沒有任何形式的管理權限。

轉換您的存儲庫不應該代表一個問題。 這里有一些值得檢查的東西:

  1. 指定來源類型; 為此使用sourcetype svn
  2. 通過branchify branches/* tags/development/* tags/production/*指定嵌套標簽結構

您可能還想展平標簽名稱,例如

branchmap :tags/development/(.+):tags/dev_\1: \
          :tags/production/(.+):tags/prod_\1:

暫無
暫無

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

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