Git 合并会破坏 `git svn info` 元数据

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

我已成功使用

git svn
从非常旧的 svn 服务器获取项目。
git svn info
的输出显示:

  • master
    指向
    https://svn-server/repos/myProject
  • feature-new
    指向
    https://svn-server/repos/branches/myProject

但是,将
feature-new
合并到
master
会更改映射,导致
master
指向
https://svn-server/repos/myProject/myProject/myBranch

我该如何解决这个问题?

SVN 存储库:

  1. 主干:https://svn-server/repos/myProject
  2. 分支:https://svn-server/repos/branches/myProject

获取流程:

1.从 svn 克隆

git svn init https://svn-server/repos --trunk=myProject --branches=branches/{myProject} myProject

2.设置作者文件

git config svn.authorsfile ~/authors.txt
  1. 编辑
    .git/config
    的内容:
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false  
        logallrefupdates = true
        ignorecase = true
        precomposeunicode = true
[svn-remote "svn"]
        url = https://svn-server/repos/myProject
        fetch = myProject:refs/remotes/git-svn/trunk
        branches = branches/{myProject}/*:refs/remotes/feature-new/*
[svn]
        authorsfile = ~/authors.txt
git svn fetch
  1. 确认远程分支:
git branch -r

结果:

feature-new/myProject
git-svn/trunk
  1. 签出
    feature-new/myProject
    并重命名:
git checkout feature-new/myProject
git switch -c feature-new
git git-svn
1个回答
0
投票

我真的不能推荐这个,但是我也不能真的推荐使用古老的 SVN 存储库!

将整个分支 diff 为补丁并应用它

git svn fetch
git checkout feature
git diff master > ../feature.patch
git checkout -  # back to master
git apply ../feature.patch

我没有测试实例,但是你可以通过将 git log 嵌入到提交消息中来使发生的事情更加明显,这有一个相当高的限制SVN 注释的最大长度


最后,尽管这对于您的情况可能不可行,但将项目转换为 git 或 Mercurial 可能是可持续发展的最佳举措

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