我正在尝试将托管在大型 WordPress 插件仓库中的 WordPress 插件移至 Git。
我厌倦了使用git-svn
并且花费的时间太长(单个插件超过 4-5 小时)并且我有将近 20 个插件要迁移。
我的机器上有已签出的 SVN 存储库。.svn
有什么方法可以让我们只使用存储在文件夹中的历史信息而不连接到 SVN 服务器将 SVN存储库导入 Git ?
我正在尝试将托管在大型 WordPress 插件仓库中的 WordPress 插件移至 Git。
我厌倦了使用git-svn
并且花费的时间太长(单个插件超过 4-5 小时)并且我有将近 20 个插件要迁移。
我的机器上有已签出的 SVN 存储库。.svn
有什么方法可以让我们只使用存储在文件夹中的历史信息而不连接到 SVN 服务器将 SVN存储库导入 Git ?
您的机器上没有 SVN存储库。你有一个工作副本。
与 Git 不同的是,SVN 在检出工作副本时不会下载整个存储库以及整个历史记录。它只是下载文件的最新版本。
所以不,从工作副本中获取 SVN 项目的历史是不可能的。
不,但是,您有一些选择。
Git 和 SVN 处理历史的方式完全不同。当您签出 SVN 存储库时,.svn 目录仅保存最近的提交,以便可以将其与工作目录进行比较或还原。
另一方面,Git 克隆了整个历史。有某些例外,例如浅克隆,但对于大多数用途,Git 需要一个完整的存储库来执行诸如显示历史记录或计算差异之类的事情。
If you don't mind a truncated history, you can look at the --depth
or --revision
flags for git-svn
. These flags will allow you to limit the number of revisions you retrieve from the SVN repository, trading history and functionality for speed.
However, while you could import your SVN working copy as a new Git repository, the .svn directories don't hold any actual history. You must connect to the SVN repository to access the history, so you can't import from a working copy.
However, you might consider mirroring the Subversion repository and then running git-svn
locally against your mirror. You will still need a complete copy of your SVN repository, but mirroring the repository takes less time than retrieving Subversion commits one at a time over a network connection with git-svn
.
请注意,您仍然无法做您想做的事,但这是提高 SVN->Git 迁移速度的另一个可行替代方案。除了速度提升之外,这还将在 Git 方面产生更完整的历史记录。
.svn
工作副本中的 dir 不包含 repo 的完整历史记录,仅包含 WC 中数据的“原始副本”(以及一些额外的元数据) - 如果不与 repo 交互,您将无法获得完整的历史记录建议的工作流程可能是这样的:
svnadmin dump| svndumpfilter
的垃圾场。svnrdump | svndumpfilter
可能,一个完整的 svnrdump 并稍后过滤它cat DUMP| svndumpfilter include
会更加省时;