[英]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個步驟解決。
首先,刪除所有錯誤跟蹤的分支。
將正確的分支添加到存儲庫。
要刪除有問題的遠程引用,可以使用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.