2

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

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

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

谢谢!

4

1 回答 1

3

尽管 git svn 最初进行了设置,以便 svn 分支显示为远程,但可以通过更改用于创建分支的 refspec 来更改。但是,这应该在从 svn 存储库中获取任何内容之前完成。

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

然后更改fetchandbranches行,并可能将tags行更改为:

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

如果 svn 存储库没有使用标准布局,您可以像往常一样在调用git svn init. 在这种情况下,您希望将上述行的部分保留在冒号之前,因为它们只是更改冒号之后的部分。

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

于 2013-02-28T04:17:01.093 回答