簡體   English   中英

使用 git-svn clone 克隆非標准 svn 存儲庫的缺失分支

[英]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.

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