簡體   English   中英

'git svn clone'ing時保留復制的TAG的SVN歷史記錄

[英]Preserve SVN history of copied TAG when 'git svn clone'ing

我正在將一些SVN項目遷移到git。

我想將某個標簽克隆到自己的git存儲庫中。

通過在TAG路徑上執行git svn克隆,我松開了svn復制之前的所有歷史,該歷史首先創建了標記。

有沒有辦法在新的git項目中保留原始歷史記錄? (我可以在自己選擇的IDE中瀏覽SVN歷史記錄,因此SVN似乎能夠提供所需的信息)

提醒:我不希望帶有類似於SVN結構的分支和標簽的主干項目。 我想要一個僅包含TAG和所有歷史記錄(包括標記創建之前的修訂)的單獨項目

檢查--follow-parent標志:

 git svn clone --follow-parent https://path.to/svnroot/repo/tags/0.12

編輯:

但是請注意, git svn只會看到克隆目錄上下文中的內容; svn-tagging通常涉及將一個目錄復制到另一位置,因此您需要整個目錄樹(包含“ trunk”和最后的“ tagX”導向器),以便有足夠的上下文使git起作用。 這樣做的原因是,git將拒絕將任何東西從git-repository本身之外的路徑復制到git-repository本身之外的路徑(這很有意義)。 svn可以查看整個歷史記錄,因為它確實具有完整的上下文(在服務器上,即使您僅在本地計算機上進行了部分簽出)

因此,為了將完整的歷史記錄保存到git svn克隆中,您可能確實確實需要克隆整個項目(也就是說,至少要同時包含主干和tag-dir的目錄)。

所以進行的方式是:

  • 做一個完整的git svn clone你的svn庫中,並可以指定主干/標簽/分支目錄( --trunk--tags--branches如果你有一些特殊的設置或使用標志--stdlayout如果回購在組織標准的/ trunk,/ tags /...、/ branches / ...方式)

  • 這將為您提供一個帶有多個git分支和git標簽的git存儲庫,您可以在其中刪除所有不需要的分支/標簽(或不將其推入服務器)

暫無
暫無

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

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