【问题标题】:git bundle with git-svngit 与 git-svn 捆绑
【发布时间】:2013-02-14 03:12:22
【问题描述】:

我正在尝试将 git-bundle 与 git-svn 存储库一起使用。本质上,我需要创建一个离线 git 存储库,其中包含我们生产 SVN 系统的克隆。 SVN 仓库是通过 git-svn 克隆的,效果很好。它会克隆我们的代码,并将其列在 remotes/* 下。

现在是困难的部分。我需要将其与我们的离线存储库保持同步。离线环境无法访问互联网,并且只能通过单向方法(例如 cd 等)获取更新。这是一种单向交易。我想用 git-bundle 做到这一点。问题似乎归结为 git-svn 将 svn 存储库标记为远程。我曾尝试使用git bundle create ____.bundle --all 签出一个包...它有效,但它只包括我的主人。它不包括遥控器参考。但是,我需要获取所有这些信息。

这有意义吗?任何提示/建议?应该明确的是,我们不会提交到 SVN 端的 git 存储库,它将是只读的。在离线方面,我们将分支远程分支,并在那里提交。

谢谢!

【问题讨论】:

    标签: git git-svn git-bundle


    【解决方案1】:

    虽然 git svn 最初设置了一些东西,所以 svn 分支显示为 遥控器,可以通过更改用于创建分支的 refspec 来更改。 但是,这应该在从 svn 存储库中获取任何内容之前完成。

    git svn init --stdlayout http/svn.server/path svnclone
    cd svnclone
    edit .git/config
    

    然后将fetchbranches 行,可能还有tags 行更改为 看起来像:

    fetch = trunk:refs/heads/trunk
    branches = branches/*:refs/heads/*
    tags = tags/*:refs/tags/*
    

    如果 svn 存储库没有使用标准布局,您可以将其指定为 通常在致电git svn init。在这种情况下,你想离开 冒号之前的上述行的部分,因为它们只是改变 冒号后的部分。

    设置完成后,您可以使用git svn fetch 实际复制 内容。由于分支进入refs/heads 命名空间,git 包括 bundle 命令会将它们视为本地分支。只要那个克隆 仅用作其他克隆的来源(通过捆绑或只是 使用克隆命令)它应该不是问题。虽然如果有一个svn 名为 mastertrunk 的分支很可能是个问题。

    【讨论】:

    • 谢谢,我试过了,但遇到了问题。我将conf设置为将trunk获取到refs/svn/trunk,并将分支设置为refs/svn/branches/* ...它们似乎没有出现。我用--stdlayout 和--normalize-url 做了一个初始化。运行 git branch -a 只显示主...但是如果我运行 git show-ref,它们似乎都出现了。知道如何解决这个问题..?
    • 只有refs/heads 中的引用才会被 git 视为普通分支。尝试改用refs/heads/svn/trunkrefs/heads/svn/branches*
    猜你喜欢
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2014-12-03
    • 2011-01-29
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多