代码之家  ›  专栏  ›  技术社区  ›  Martin DeMello

SVN存储库的只读Git镜像

  •  15
  • Martin DeMello  · 技术社区  · 15 年前

    设置现有SVN存储库的只读Git镜像和设置提交后挂钩的最佳方法是什么?这样,每当有人提交到SVN时,Git镜像都会自动更新?主要是,我只想在服务器上运行一次git svn clone,然后让人们不必自己克隆整个svn存储库就可以从git签出。

    2 回复  |  直到 9 年前
        1
  •  4
  •   ehabkost    15 年前

    我在一个使用SVN(推送到Github上的公共存储库)的项目上这样做。我没有SVN提交挂钩,但这是在cron作业上:

    #!/bin/bash
    
    repo=/path/to/my-mirror.git
    lockfile="$repo/cron-lock"
    
    if ! lockfile -r1 "$lockfile";then
            exit 1
    fi
    
    export GIT_DIR=$repo
    # update refs/remotes/git-svn:
    git svn fetch -q
    # make 'master' match the git-svn branch:
    git fetch "$repo" refs/remotes/git-svn:refs/heads/master
    # publish to github
    git push github master
    
    rm -f "$lockfile"
    

    如果您从SVN提交钩子(而不是cron作业)触发此操作,它应该可以工作。

    当然,您需要设置一个名为 github 使用 git remote add github [...] . 我使用的Git存储库是一个“裸”存储库(请参见 git init --bare )

        2
  •  2
  •   elixenide Ren    9 年前

    设置SVN/Git镜像(可写)的最佳方法是使用 SubGit -这是专门为此任务开发的工具。免责声明:我是这个工具的开发人员。