我想创建一个git存储库的备份,用于跟踪svn存储库(使用git-svn).我可以为此目的使用git push --mirror,还是在需要恢复备份时丢失任何与git-svn相关的信息?
有可能git push或git bundle不包含 svn 元数据。
但根据git svnintro,您可以尝试恢复这些 svn 元数据。
(免责声明:未直接测试)
重建 git-svn 元数据
如果您从其他地方(例如,从repo.utsl.gen.nz)通过复制了存储库git-clone,或者您只是将其删除,那么您将不会有任何 SVN 元数据 - 只是提交。
在这种情况下,您需要重建 SVN 元数据,例如,为了保持 trunk 最新 -git-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
...
Run Code Online (Sandbox Code Playgroud)
重建元数据时要记住的关键
git-svn是使引用看起来就像从新导入时一样;您可以使用git update-ref上面的方法来完成此操作,通过在内部复制 refs 文件.git/refs/,或者使用git pack-refs然后编辑.git/packed-refs.
要测试您是否正确,请使用git show-ref- 也许与新的 SVNHEAD克隆进行比较。
| 归档时间: |
|
| 查看次数: |
1219 次 |
| 最近记录: |