首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >git-svn:`svn switch --relocate`的等价物是什么?

git-svn:`svn switch --relocate`的等价物是什么?
EN

Stack Overflow用户
提问于 2008-11-06 13:44:19
回答 2查看 20.1K关注 0票数 90

我通过git-svn镜像的一个svn存储库已经更改了URL。

在vanilla svn中,您只需执行svn switch --relocate old_url_base new_url_base

如何使用git-svn完成此操作?

简单地更改配置文件中的svn url将失败。

EN

回答 2

Stack Overflow用户

发布于 2008-11-06 13:46:03

Git svn严重依赖于svn URL。从svn导入的每个提交都有一个包含svn URL的git-svn-id

有效的重新定位策略是在新的存储库上调用git-svn clone,并将更改合并到新的关闭上。有关更详细的过程,请参阅本文:

http://www.sanityinc.com/articles/relocating-git-svn-repositories

票数 3
EN

Stack Overflow用户

发布于 2013-08-22 21:22:52

git filter-branch

取自a blog entryThis script一直在为我工作。提供旧的和新的repo URL作为参数,就像svn switch --relocate一样。

该脚本调用git filter-branch来替换提交消息中git-svn-id中的Subversion URL,更新.git/config,并通过使用git svn rebase重新创建git-svn元数据来更新它。虽然git svn clone可能是更健壮的解决方案,但filter-branch方法对于大型存储库(几小时而不是几天)的工作速度要快得多。

代码语言:javascript
复制
#!/bin/sh

# Must be called with two command-line args.
# Example: git-svn-relocate.sh http://old.server https://new.server
if [ $# -ne 2 ]
then
  echo "Please invoke this script with two command-line arguments (old and new SVN URLs)."
  exit $E_NO_ARGS
fi

# Prepare URLs for regex search and replace.
oldUrl=`echo $1 | awk '{gsub("[\\\.]", "\\\\\\\&");print}'`
newUrl=`echo $2 | awk '{gsub("[\\\&]", "\\\\\\\&");print}'`

filter="sed \"s|^git-svn-id: $oldUrl|git-svn-id: $newUrl|g\""
git filter-branch --msg-filter "$filter" -- --all

sed -i.backup -e "s|$oldUrl|$newUrl|g" .git/config

rm -rf .git/svn
git svn rebase
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/268736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档