簡體   English   中英

如何使用非標准布局正確初始化存儲庫的git-svn克隆?

[英]How to properly initialize git-svn clone of a repository with nonstandard layout?

我正在嘗試將git與具有以下粗略布局的svn存儲庫一起使用:

RepositoryHone

  • ->文件
  • -> ExtraDocuments
  • ->游樂場
  • ->操場_dev
  • ->操場平衡_變化
  • ->工具

游樂場包含主要開發分支(trunk),而游樂場_dev,游樂場_balance_change和其他未顯示的是分支。

在分支中,布局如下所示:

  • ->建立
  • ->庫
  • ->箱
  • -> src

我主要想使用Playground和Playground_dev,所以我已經運行:

git svn初始化svn :: / server.address:port / RepositoryHome -T操場-b操場_dev

git svn獲取

但是,當我運行git branch -r檢查分支的導入方式時,我感到越來越恐懼,除了“起源/樹干”之外,還有“分支”,例如“起源/ bin”,“起源/ lib” ,“ origin / src”等。

如何確保本地工作副本/ git存儲庫與服務器之間的分支正確映射?

由於過程需要很多時間(大約16個小時),是否可以在不完全獲取的情況下解決問題?

對於git svn選項-b並不意味着“這是一個分支”,這意味着“這是一個目錄,所有子目錄分支”如此git svn init -b playground_dev需要的子目錄playground_dev為分行。

我看不出有什么簡單的方法可以克服這個問題。 我建議將兩次克隆到單獨的存儲庫中並合並這些存儲庫。 就像是:

git svn clone svn::/server.address:port/RepositoryHome -T playground playground
git svn clone svn::/server.address:port/RepositoryHome -T playground_dev playground_dev

cd playground
git fetch ../playground_dev trunk:playground_dev
cd ..
rm -rf playground_dev

最后一個命令獲取從目錄分支“主干” playground_dev在當前目錄一個新的分支“playground_dev”。

該問題可以通過2個步驟解決。

  1. 首先,刪除所有錯誤跟蹤的分支。

  2. 將正確的分支添加到存儲庫。

要刪除有問題的遠程引用,可以使用git branch -r找到它們,然后使用git branch -D刪除它們。

我還沒有找到用於第二步的基於“適當”命令行的解決方案,但是幸運的是git-svn文檔,更具體地說是Configuration部分提供了足夠的詳細信息來手動執行操作。

最重要的是,不能僅僅設置一個分支來跟蹤svn remote; 在配置中,僅識別“分支”鍵,這需要使用通配符替換。

因此,只需在.git/config手動添加另一個svn remote,復制已存在的svn,即可更改遠程名稱和“ fetch”鍵的值。 這樣一來,您可以設置與單個遠程svn分支相對應的分支,然后照常工作。

暫無
暫無

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

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