我想创建一个用于跟踪svn仓库(使用git-svn)的git仓库的备份。我可以为此使用git push --mirror,还是在需要恢复备份时会丢失任何与git-svn相关的信息?git push --mirror足够作为与git-svn一起使用的存储库的备份吗?
6
A
回答
3
有可能git push
或git bundle
不包括svn元数据。
但根据git svn
intro,你可以尝试并恢复这些svn元数据。
(免责声明:没有直接测试)
重建的git - svn的元数据
如果通过git-clone
复制从别的地方(例如,从repo.utsl.gen.nz
)库,或者如果你只是吹它离开了,那么你就不会有任何SVN元数据 - 只是提交。
在这种情况下,您需要重新生成SVN元数据,例如只保留树干最新版本--将在您运行git-svn fetch
时重建其元数据。
$ git update-ref refs/remotes/trunk origin/svn/trunk
$ git svn init https://svn.perl.org/parrot/trunk
Using higher level of URL: https://svn.perl.org/parrot/trunk => https://svn.perl.org/parrot
$ git svn fetch
Rebuilding .git/svn/git-svn/.rev_db.d31e2699-5ff4-0310-a27c-f18f2fbe73fe ...
r17220 = 78ad11bf2f61b35e1cb32a978ab546d198be8a2e
r17219 = 605264b06d84670ec402d7a7a21c0016cae3a928
r17218 = a8ceba9c503d2be8e8e69a3df454017322906cf5
...
与重建
git-svn
元数据需要记住的重要事情是使裁判看起来就像他们看起来和新的进口;您可以使用上述的git update-ref
,通过复制.git/refs/
内部的参考文件或使用git pack-refs
然后编辑.git/packed-refs
来完成此操作。
要测试您是否正确,请使用git show-ref
- 可能与新SVNHEAD
克隆进行比较。
相关问题
- 1. “git push --mirror”足以备份我的存储库吗?
- 2. Rsyncing git repo足够好的备份解决方案吗?
- 3. 维护git存储库的备份
- 4. “git push all”(多个存储库)不起作用
- 5. git push fatal:不是git存储库:'。'
- 6. Jenkins的Git插件不能与BitBucket存储库一起工作
- 7. Git钩子脚本可以与存储库一起管理吗?
- 8. 如何将Git与多个远程存储库一起使用?
- 9. Git push:没有足够的权限将对象添加到存储库中。对象
- 10. git - 使用分支作为备份
- 11. 使用远程“起源”存储库的git使用情况
- 12. 手动备份为mercurial存储库
- 13. 如何将Git存储库的版本与另一个版本的Git存储库链接Git存储库
- 14. 存储库模式可以与Asp.net webforms一起使用吗?
- 15. Git存储库内的Git存储库
- 16. 使用git作为cron和ssh别名的备份工具
- 17. Git push -u origin master在存储库重命名后不工作
- 18. git push --mirror给出“未能推送一些裁判”
- 19. 将本地Git存储库与主Subversion版本库一起使用
- 20. 备份使用.git?
- 21. SVN存储库的Windows备份
- 22. git - 将sub git存储库视为unittests的正常存储库?
- 23. Android没有足够的存储空间
- 24. 选择足够的Rails会话存储
- 25. “git push”与远程的“git fetch”一样
- 26. Git归档存储库作为一个完整的功能存储库?
- 27. 无法备份隐藏文件的Mercurial存储库备份
- 28. 我们可以使用HDFS来存储git存储库吗?
- 29. 如何备份与Core Data - iPhone应用程序一起存储的数据?
- 30. shell_exec('git push origin master')将不起作用
感谢您的回答。 git update-ref给我的信息是:“fatal:origin/svn/trunk:不是有效的SHA1”,但是git show-ref列出了git repo镜像的refs/remotes/trunk。我可以跳过update-ref吗? – fawick 2010-01-18 16:25:55
我在'git svn init'之后用'git update-ref refs/remotes/trunk origin/master'获得了更好的结果。 但是,与上面的例子不同,我使用'git svn init'和-t/-b选项来设置标签和分支,所以我还必须为每个标签设置参考。 (通过在原始git-svn克隆上运行'git show-ref'获得。) – seanf 2011-04-08 12:56:46