【问题标题】:SVN to Git using svn-migration-scriptsSVN 到 Git 使用 svn-migration-scripts
【发布时间】:2014-11-13 22:23:09
【问题描述】:

将 SVN 存储库克隆到 Git 存储库可以正常工作。
但是我有

的问题
java -Dfile.encoding=utf-8 -jar c:\svn-migration-scripts.jar clean-git --force

上面列出的命令应该将所有远程标签转换为本地标签。
但我收到:

# Creating annotated tags...
tag has diverged: 1.0_RC1
Creating annotated tag '1.0_RC1' at refs/remotes/tags/1.0_RC1.
# Creating local branches...
# Checking for obsolete tags...
svn: E215004: Authentication failed and interactive prompting is disabled; see t
he --force-interactive option
svn: E215004: Unable to connect to a repository at URL 'http://127.0.0.1/svn/dri
veLearner/tags'
svn: E215004: No more credentials or we tried too many times.
Authentication failed
Deleting Git tag '1.0_RC1' not in Subversion.
Deleted tag '1.0_RC1' (was d200bf6)
# Checking for obsolete branches...
svn: E215004: Authentication failed and interactive prompting is disabled; see t
he --force-interactive option
svn: E215004: Unable to connect to a repository at URL 'http://127.0.0.1/svn/dri
veLearner/branches'
svn: E215004: No more credentials or we tried too many times.
Authentication failed
No obsolete branches to remove.
# Cleaning tag names
# Cleaning branch names

我使用本地 winXP、java 1.7_65、VisualSVN 服务器(http,端口 80)。每个人都可以在读/写模式下使用 Repo。
有趣的是我已经完成了这个过程,但是在同样的问题之后成功地在其他 repo 上,但我不知道我做了什么。
有人有解决办法吗?

【问题讨论】:

标签: git svn clone


【解决方案1】:

这个来自 Atlassian 的 svn-migration-script.java 是垃圾。 以下是如何使用最少的第三方软件并保留本地分支和标签从 SVN 迁移到 Git 的详细说明。

详细教程:
[此原链接已失效]http://www.sailmaker.co.uk/blog/2013/05/05/migrating-from-svn-to-git-preserving-branches-and-tags-3/
[可能替换]https://blog.redbranch.net/2015/06/12/migrating-from-svn-to-git-with-branches-and-tags/

SVN 服务器:
网址:[svn_address]/[project_name]/[project_name]
用户:[用户]
传球:[传球]
(用户 [user] 的访问权限:rw)

目标:
c:[eclipse_workspace][project_name](如果不存在则创建目录)

程序:
++ 在您的系统中安装 svn 和 git(使用 Git Bash)(可选地将它们的“bin”目录添加到 PATH)
++ 确保 svn serwer 在 http 模式下工作(而不是在 https 模式下)
++ 如有必要,请制作 authors.txt
++ 将 svn 克隆到 git:git svn clone --stdlayout --authors-file=c:\authors.txt
[svn_address]/[project_name] c:[eclipse_workspace][project_name] [user] [pass]
如果出现映射错误,命令rebase -b 0x64000000 "c:\program files\git\bin\libsvn_repos-1-0.dll"(或类似的)可能会很有用
++ 从上下文菜单运行 Git Bash(你应该已经安装了这个)
++ 输入 git branch -a 来检查你的分支和标签
++ 在 Git Bash 中输入:

附加分支:

for branch in `git branch -r | grep "branches/" | sed 's/ branches\///'`; do
  git branch $branch remotes/branches/$branch
done

附加标签:

for tag in `git branch -r | grep "tags/" | sed 's/ tags\///'`; do
 git tag $tag remotes/tags/$tag
done

++ 创建裸 git 存储库并推送到那里 [项目](您将失去 SVN 依赖项)
++ 将 [项目] 克隆到目标位置

【讨论】:

  • 对此的小评论。一段时间后(我花了一点时间来熟悉 Git 和辅助工具),我注意到这种导入标签的方式确实创建了本地标签,但也创建了一个分支。但是,在 master 中进行了进一步的提交。
  • 当我想用 bash 脚本附加标签或分支时,我有这个错误:“致命:无法将 'remotes/tags/svn/tags/...' 解析为有效参考”
  • @rainbow 链接已损坏
  • @w33haa 我很遗憾,但我对此无能为力。这个博客不是我的。
【解决方案2】:

这就是我的工作方式(在 Mac OSX 上):

  1. 为对应的 ~/.subversion/auth 文件添加了凭据
  2. 尝试运行 svn log your-repo-url 只是为了查看 svn auth 是否正常工作
  3. 在 Mac 上,这会要求我使用我的钥匙串,我选择了“始终允许”
  4. 在此之后,我的 clean-git 命令也将开始工作

还记录了票证here,但维护者没有给予任何关注

【讨论】:

    【解决方案3】:

    我有相同的程序。 我使用了这个选项。

    --no-delete
    

    如何选择这个选项。

    https://bitbucket.org/atlassian/svn-migration-scripts/src

    如果指定了 --no-delete 选项,将创建分支和标签,但不会删除任何内容。

    【讨论】:

      猜你喜欢
      • 2017-07-21
      • 1970-01-01
      • 2021-09-30
      • 2014-05-13
      • 2014-01-01
      • 2011-07-07
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多