仅将特定文件从 svn 存储库导入到 git

问题描述 投票:0回答:3

我正在尝试将一些文件从 SVN 导入到新的 git 存储库。

例如,我在 SVN 中有以下内容:

  files/file1
  files/file2
  files/file3
  files/image1
  files/image2

我只想导入

files/image*
文件。

这可能吗?

git git-svn
3个回答
1
投票

我从你的标签中假设你正在使用 git-svn ?如果是这样,请查看

--ignore-paths
选项。在
git svn init
git svn clone
上使用它可以将您传递的值保留在本地配置中,或者在
git svn fetch
上使用它来忽略每次获取。


0
投票

查看此链接。 http://ivanz.com/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/希望这有帮助!


  1. 在 .git/config 中定义新分支:

    [svn-remote "release-branch"]
    url = svn+ssh://[email protected]/source/branches/mono-2-2/mcs
    fetch = :refs/remotes/git-svn-release-branch
    
  2. 导入SVN分支。 SVN_BRANCHED_REVISION 是 SVN 中发生分支时的修订版本。

    [~]$ git svn fetch release-branch -r SVN_BRANCHED_REVISION
    
  3. 将本地 Git 分支挂接到远程分支:

    [~]$ git branch --track release git-svn-release-branch
    
  4. 查看并更新

    [~]$ git checkout release
    [~]$ git svn rebase
    

完成!


0
投票

由于 git-svn 的 --ignore-paths 确实忽略文件和目录,但仍然保留引用这些被忽略文件的提交历史记录,我发现结果有时令人困惑。 --ignore-refs 到目前为止对我来说失败了。恕我直言,在颠覆方面进行过滤要容易得多。特别是当相关的 subversion 目录很大而子集很小时。当然,这仅在您想迁移到新的 git 存储库时可用。

subversion 附带 svnrdump 将存储库转储到文件中,并使用 svndumpfilter 删除该文件中的路径。然后,您使用 svnadmin 将转储加载到新存储库中,可以选择立即停止,然后进行手动调整(过滤的路径可能会导致不存在的父目录)。以及通过 git-svn 导入的已清理的 svn 存储库。

管理工具说明:https://svnbook.red-bean.com/en/1.7/svn.reposadmin.maint.html(对于真正的旧版本的 svn)

© www.soinside.com 2019 - 2024. All rights reserved.