RW Access git repository using svn (git-svnserver)?

允我心安 提交于 2019-12-30 00:08:16

问题


Is there a program that does what git-svn does, but in a situation where the repository on the server is git, and the developer uses svn?

I know that github.com allows svn access to the git repositories they host, but it doesn't look like they've released this project open source (yet?), and using their servers is not an option for me (not even their private repositories).

EDIT: I think what I am looking for is a parallel to 'git-cvsserver' -- git-svnserver. In a bit of searching, I found some 2-3 year old threads on the git mailing list, but it doesn't look like anyone has made significant progress. I hope someone can correct me on that.

Are there any git-svnserver projects currently underway? I'd hate to have duplicate effort, but it seems that GitHub is the farthest along, but nobody else can have it.


回答1:


Take a look at SubGit.

SubGit is server-side solution, it enables Subversion access to Git repository and vice versa. You may refer to documenation for more details, but in general it is fairly easy to use SubGit:

SubGit needs local access to Git repository you're pushing to. Create Subversion repository on the same machine:

    $ svnadmin create $SVN_REPOS

then run

    $ subgit configure $SVN_REPOS

This command creates $SVN_REPOS/conf/subgit.conf file, adjust its git.default.repository option just as follows:

    [git "default"]
    repository = /path/to/your/git/repository.git

You can specify many Git repositories synced to single Subversion repository, just add necessary [git "identifier"] sections.

You can also specify arbitrary repository layout, e.g. the standard one looks like this:

    trunk = trunk:refs/heads/master
    branches = branches/*:refs/heads/*
    shelves = shelves/*:refs/shelves/*
    tags = tags/*:refs/tags/*

You can also adjust $SVN_REPOS/conf/authors.txt to map svn author names to git identities.

After that run:

    $ subgit install $SVN_REPOS
    $ ... let initial translation complete ... 
    $ TRANSLATION SUCCESSFUL

At this moment you have Subversion repository and its Git counterpart which are continuously synchronized, i.e. SubGit immediately translates svn revision into git commit on every svn commit and git commit into svn revision on every git push.

So, you can commit changes to created Subversion repository and keep all changes in sync with the main Git repository.




回答2:


This is Python code to serve a git repository over svn protocol:

http://git.q42.co.uk/git_svn_server.git




回答3:


SVNGit is exactly what you want. It is an opensource servlet library for SVN clients to access Git repositories.




回答4:


I believe the git-svn link is meant to be driven by git (to monitor -- rebase or dcommit -- a SVN branch).
Meaning you could first clone whatever git repo you need on your local server (where you also use SVN), and use that for 'git-svn' commands between your local Git repo and your SVN workspace.

Once your local Git repo reflects adequately your SVN repo, you can push back to the remote Git server.



来源:https://stackoverflow.com/questions/3662114/rw-access-git-repository-using-svn-git-svnserver

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!