簡體   English   中英

Git SVN和外部

[英]Git SVN and externals

我想開始使用git-svn來處理使用中央SVN存儲庫的項目。 問題是我們正在使用Windows,並且SVN項目使用外部,以便能夠在兩個不同的項目中重用一些代碼。 在Unix系統中,我們會使用軟鏈接,但由於我們堅持使用Windows,因此我們決定使用外部作為Windows xp中限制的解決方法。 如果您有更好的解決方案,我們將非常樂意聽到這一點! svn結構如下:

branch
tag
trunk
 -web
  --views
     ---External to commonFiles
-admin
  --views
    ---External to commonFiles
-commonFiles

我是否有可能使用git-svn,如果可以,我該怎么辦呢?

編輯我一直在尋找好的解決方案很長一段時間但在寫完這篇文章之后我開始思考這實際上與svn:externals有多大關系。 如果我使用git svn,我會得到這個

branch
tag
trunk
 -web
  --views
     ---commonFiles (empty folder since externals didn't work)
-admin
  --views
    ---commonFiles (empty folder since externals didn't work)
-commonFiles

由於我在git中有commonFiles文件夾,我可以使用與git中的svn相同的技術嗎? 要將空的commonFiles文件夾鏈接到使用git維護的commonFiles?

是的,您應該能夠通過git子模塊獲得git equivelant。 .git文件夾和.gitmodules文件將與web和管理員簽出的級別存在。 外部文件夾中將存在.git文件夾。 您可能希望忽略git中的.svn文件夾,反之亦然svn。

希望這可以幫助!

由於不利意味着交叉路口是一個不錯的選擇。

簽出時,源代碼樹將如下所示:

branch
tag
trunk
 -web
  --views
-admin
  --views
-commonFiles

外部已被省略。 獲取外部列表,可以在現有存儲庫上使用以下命令:

svn propget svn:externals -R

對於相對外部(以...開頭),這很簡單。 您可以使用mklink創建聯結。 在此示例中,運行以下命令:

mklink /J trunk\web\views\commonFiles trunk\commonFiles
mklink /J trunk\admin\views\commonFiles trunk\commonFiles

您可以將這些命令添加到git-hook以確保它們在簽出時創建。

您可以嘗試使用多個repos的分離工作樹 ,然后使用mr工具 方便多個回購工作。

我現在想出了一個適合我的解決方案! 我發現在windows xp中可以使用一種叫做交匯點的東西。 連接類似於mount,區別在於如果刪除文件夾,其他文件夾也將被刪除。 所以我最終做的是在我的commonFiles文件夾之間創建聯結,並將忽略添加到包含視圖的文件夾中。

branch
tag
trunk
 -web
  --views
     ---commonFiles (junction to *, ignored in git)
-admin
  --views
    ---commonFiles (junction to *, ignored in git)
-commonFiles (*, controlled by git)

暫無
暫無

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

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