我使用git-svn创建了一个SVN存储库的Git Clone.这样做时,我指定了--prefix为远程分支添加前缀的选项.我现在想摆脱这个前缀.
有没有办法更新或删除前缀而无需重新克隆存储库?
基本上我使用了初始克隆,--prefix=Project所以我最终得到了Project/trunk 并Project/feature-branch作为我的远程跟踪分支.我想要的是让trunk刚刚被召唤trunk和feature-branch被召唤svn/feature-branch.
我做了以下似乎有效的方法.
在.git/config我更新了fetch,branches和tags设置以更新本地引用.它是:
[svn-remote "svn"]
url = http://subversion/......
fetch = trunk:refs/remotes/Project/trunk
branches = branches/*:refs/remotes/Project/*
tags = tags/*:refs/remotes/Project/tags/*
Run Code Online (Sandbox Code Playgroud)
我改成了
[svn-remote "svn"]
url = http://subversion/......
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/svn/*
tags = tags/*:refs/remotes/svn/tags/*
Run Code Online (Sandbox Code Playgroud)
.git/refs/remotes我在内部移动了Project文件夹中的主干,其余的引用Project进入了一个名为的新文件夹svn.结构是:
我改为:
我还对其中的文件夹进行了相同的重组.git/svn/refs/remotes/.
最后我触发了一个git svn fetch.我必须指定-r参数来限制我用于初始克隆的相同起始修订版,但它似乎没有重新获取旧版本.
注意:当前的解决方案可能不再适用于 git 2.0+(2014 年 4 月)
请参阅Johan Herland ( ) 提交的fe191fc ,它强调了您现在应该有一个前缀的事实(并且没有没有像 ' ' 这样的前缀的svn 分支):jherlandtrunk
git svn设置默认值--prefix='origin/'--prefix默认情况下没有前缀是有问题的:
git-svn默认情况下,将其 Subversion 跟踪引用直接放入refs/remotes/*.
这与 Git 的使用约定背道而驰refs/remotes/$remote/*这与 Git 用于存储远程跟踪分支此外,
git-svn与常规 git 远程结合存在着破坏 refs/remotes 下的引用的风险(例如,如果您有一个git remote名为“tags”且带有“v1”分支的分支,它将与 git-svn 的 Subversion 中“”标记的跟踪分支重叠v1。
| 归档时间: |
|
| 查看次数: |
2517 次 |
| 最近记录: |