![](/img/trans.png)
[英]Convert an SVN repository to git with reposurgeon without creating .gitignore files?
[英]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 存儲庫的基本結構:
存儲庫中還有更多內容,但這就是它的要點。 這里要注意的重要一點是
現在我正在嘗試運行最少數量的步驟。 我使用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 export
或svnadmin 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 服務器沒有任何形式的管理權限。
轉換您的存儲庫不應該代表一個問題。 這里有一些值得檢查的東西:
sourcetype svn
。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.