3

我有一个使用 GIT 开发的项目。我需要为不喜欢 GIT 的用户创建一个仅 SVN 镜像的存储库。我用谷歌搜索了一些关于它的说明,但都失败了。其中一部分是为 Linux 编写的——我有 Windows。其中一部分建议创建空存储库,然后将其与主 GIT 存储库同步——这并不是我真正想要的。他们中的一部分简单并没有在不同阶段失败并带有神秘消息。所以我决定在这里问。我深入研究了 git-svn 命令描述,不顾一切地试图让这个东西自己工作。我也失败了。Github svn export 太不稳定,无法依赖。现在我请你帮忙。

所以,这里的任务。

  1. 我有许多链接远程的本地 GIT 存储库(我自己的存储库、sf.net、github 等)。
  2. 我想从我的本地存储库中创建一个支持 SVN 的 GIT 存储库来镜像我的开发。
  3. SVN 存储库将是一个只读镜像。如果 SVN 保留更改历史记录会很好,但如果这是不可能的 - 我没有打扰。
  4. 仅应将一个分支镜像到 SVN。它可能是主分支或任何其他专用于镜像的分支 - 不打扰以太。
  5. SVN 将驻留在 SourceForge 上。

有没有可能让这件事真正发挥作用?

4

2 回答 2

1

我认为SubGit是要走的路。

问题是 SubGit 将自己的钩子直接安装到 Subversion 和 Git 存储库中。所以,我怀疑是否可以为托管服务提供商设置它,比如 sourceforge 或谷歌代码。

如果您创建自己的 Subversion 存储库,使用 SubGit 设置甚至是读写镜像也没什么大不了的:

  1. 创建 Subversion 存储库:

    $ svnadmin create $SVN_REPO
    
  2. 克隆 Git 存储库:

    $ git clone --mirror $GIT_REMOTE_REPO $GIT_REPO
    
  3. 配置 SubGit:

    $ subgit configure $SVN_REPO
    
  4. 调整 SubGit 配置文件:

    # Specify 'git.default.repository = $GIT_REPO'
    #     at $SVN_REPO/conf/subgit.conf
    
  5. 添加作者映射:

    # Add all the authors as
    # svnauthor = Git Author <git.author@company.com>
    #     into $SVN_REPO/conf/authors.txt
    
  6. 将 SubGit 安装到 Subversion 存储库中:

    subgit install $SVN_REPO
    

安装完成后,您可以将 $GIT_REPO 克隆为另一个远程并推送到此存储库以将所有提交转换为 Subversion 存储库。

可以将更改提交到 Subversion 存储库,SubGit 会自动将它们转换为 Git 提交,因此您可以取回它们。

SubGit 是一个商业项目,但它对开源项目是免费的。有关详细信息,请参阅SubGit 文档git-svn比较。

于 2012-07-19T12:51:19.673 回答
0

git svn initgit svn clone旨在连接到现有的 SVN 存储库,所以我建议以下内容。

  1. 设置一个空的 SVN 存储库
  2. 设置一个新的 git reposvn git clone
  3. 将本地 git 存储库拉入新存储库
  4. 做一个git svn dcommit你想与 SVN repo 共享的分支

另一种完全不同的方法是在同一个工作文件上使用 git 和 SVN。您只需确保分别忽略 .git 和 .svn 目录。然后,您将 git 命令用于 git,将 SVN 命令用于 SVN。

当然,使用这种方法,您必须手动同步您希望在两个存储库中拥有的每个提交,但如果您不关心在两个存储库中都有所有提交,这可能就足够了。

于 2012-04-17T22:16:56.577 回答