[英]Missing branches cloning a non-standard svn repository using git-svn clone
我是一個完整的 git 新手,我想使用 git-svn 克隆我的 svn 存儲庫。 但是,運行 clone 命令后分支丟失了。
回購布局如下:
trunk/
branches/team/releases/release-1
branches/team/releases/release-2
...
branches/development/user1/feature1
branches/development/user1/feature2
branches/development/user2/feature3
branches/development/user2/feature4
...
tags/release1
tags/release2
我使用的命令是:
git svn clone --trunk=/trunk --branches=branches/*/* --tags=tags/*/* --prefix=svn/ --authors-file=authors.txt <my-repo> <git-repo-name>
我已經嘗試將分支選項修改為/branches/development/user1/*
和/branches/development/user1/*/*
(並且也一起使用)並再次運行clone
命令以查看是否有任何其他分支被拾取但他們不是。
可以再次運行clone
還是我必須從頭開始並刪除 git repo?
如果我在克隆后運行git branch -r
,我所能看到的就是:
svn/development/user1
svn/development/user1
svn/team/releases
svn/trunk
note that all the tags are present but omitted for brevity
我如何獲得丟失的分支?
這不是Cloning a Non-Standard Svn Repository with Git-Svn或如何通過 git-svn 使用嵌套分支的副本。
事實上,無需重新克隆整個存儲庫就可以做到這一點,這對於大型 subversion 存儲庫可能需要數小時。 我通過編輯.git
目錄中的config
文件來正確設置我的分支和標簽。
如果你做一個普通的git svn fetch
,什么都不會發生。 訣竅是欺騙/強制 Git 重新獲取所有修訂:
git svn fetch 0:HEAD
此命令導致所有標簽/分支都被引入,而無需經歷冗長乏味的主干導入,它足夠聰明,可以跳過在初始運行中已經導入的主干修訂。 我現在在我現有的 Git 存儲庫中有我的 SVN 標簽/分支,而沒有新的克隆。
您可以多次指定 --branches 標簽。 從文檔:
這些是 init 的可選命令行選項。 這些標志中的每一個都可以指向相對存儲庫路徑 (--tags=project/tags) 或完整 url (--tags= https://foo.org/project/tags )。 您可以指定多個 --tags 和/或 --branches 選項,以防您的 Subversion 存儲庫在多個路徑下放置標簽或分支。 選項 --stdlayout 是將主干、標簽、分支設置為相對路徑的一種簡寫方式,這是 Subversion 的默認設置。 如果還給出了任何其他選項,則它們優先。
在您的情況下,請嘗試:
git svn clone \
--branches=branches/team/releases/* \
--branches=branches/development/user1/* \
--branches=branches/development/user2/* \
...等等。
可以再次運行 clone 還是我必須從頭開始並刪除 git repo?
一般來說,你應該從頭開始嘗試。 該工具並不是一個更新腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.