git-as-svn, 用于git仓库的Subversion前端服务器( java )

分享于 

6分钟阅读

GitHub

  繁體 雙語
An attempt to serve the svn:// protocol from git repositories (in java)
  • 源代码名称:git-as-svn
  • 源代码网址:http://www.github.com/bozaro/git-as-svn
  • git-as-svn源代码文档
  • git-as-svn源代码下载
  • Git URL:
    git://www.github.com/bozaro/git-as-svn.git
    Git Clone代码到本地:
    git clone http://www.github.com/bozaro/git-as-svn
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/bozaro/git-as-svn
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    项目

    Join the chat at https://gitter.im/bozaro/git-as-svnBuild StatusDownload

    文档链接

    你可以通过链接阅读文档:

    是什么?

    这个项目是用于git仓库的Subversion服务器( svn协议)的实现。

    它允许你使用控制台 svn。TortoiseSVN。SvnKit和类似工具来处理git存储库。

    我们为什么需要它?

    这个项目是由一个在另一个项目中工作的部门组成的两个阵营:

    • 已经品尝过Git且不想使用 Subversion ( 程序员)的人;
    • 不是从Git实际使用的人,而且不想与他一起工作,但是爱用 Subversion ( 例如设计师)。

    将项目划分为两个存储库不是出于各种原因。

    至此,看到了项目( http://git.q42.co.uk/git_svn_server.git,带有Proof-of-concept实现git服务器的git服务器。 之后,svn服务器在git之上,并没有完全疯狂的想法( 这只是个疯狂的想法) 并启动这个项目。

    项目状态

    实现状态:

    • git子模块- 部分
      • git模块透明映射到 svn
      • 不支持git子模块修改
    • lfs
    • svn属性- 部分
      • 某些文件映射到svn属性( 示例: .gitignore )
      • 不支持自定义属性
      • 提交要求提交文件/目录的属性与存储库中的数据完全匹配
    • svn checkout,更新,switch,diff - 工作
    • svn提交- 工作
    • ,,允许复制和移动命令,但是在存储库中复制信息丢失
    • svn cat,ls - 工作
    • svn重播( svnsync ) - 工作

    系统要求

    服务器端:

    • Java 8 +
    • Git 版本库

    在客户端,强烈建议使用该工具支持 Subversion 1.8 +。

    协议描述

    集成

    现在我们支持GitLab集成( 请参见 GitLab。示例):

    • 从GitLab启动加载库列表( 没有动态更新)
    • 通过 GitLab API进行身份验证

    用于 Git SSH用户的 ( git-lfs-authenticate )

    为了支持SSO身份验证,你需要创建文件 /usr/local/bin/git-lfs-authenticate 内容:

    
    #!/bin/sh
    
    
    # TOKEN - token parameter in!lfs section
    
    
    # BASE - base url
    
    
    TOKEN=secret
    
    
    BASE=http://localhost:8123
    
    
    curl -s -d"token=${TOKEN}" -d"external=${GL_ID}" ${BASE}/$1/auth/lfs
    
    
    
    

    你还需要一些GitLab的补丁:

    • #230 ( gitlab外壳): 将git-lfs-authenticate添加到服务器白名单( 合并到 7.14.1 ) 中;
    • #237 ( gitlab外壳): 使用原始参数( 合并到 8.2.0 ) 执行git-lfs-authenticate命令;
    • #9591 ( gitlabhq ): 通过SSH密钥标识( 合并到 8.0.0 ) 添加用于查找用户信息的API。
    • #9728 ( gitlabhq ): 显示没有分支( 合并到 8.2.0 )的存储库的"空知识库页面"。

    用于 Git HTTP用户的

    反向代理

    你需要通过修改才能将git-as-svn添加到GitLab反向代理 /var/opt/gitlab/nginx/conf/gitlab-http.conf file:

    • 添加 git-as-svn upstream 服务器:
    
     upstream gitsvn {
    
    
     server localhost:8123 fail_timeout=5s;
    
    
     keepalive 100;
    
    
     } 
    
    
    
    
    • 添加资源重定向:
    
     location ~ ^.*.git/info/lfs/{
    
    
     proxy_read_timeout 300;
    
    
     proxy_connect_timeout 300;
    
    
     proxy_redirect off;
    
    
    
     proxy_http_version 1.1;
    
    
     proxy_set_header Connection"";
    
    
    
     proxy_set_header Host $http_host;
    
    
     proxy_set_header X-Real-IP $remote_addr;
    
    
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    
     proxy_set_header X-Forwarded-Proto $scheme;
    
    
     proxy_set_header X-Frame-Options SAMEORIGIN;
    
    
    
     proxy_pass http://gitsvn;
    
    
     }
    
    
    
    

    还需要在git-as-svn配置文件的web 部分中设置 baseUrl 参数。!

    :如何使用

    /debian在 ubuntu/debian上的安装

    你可以通过命令将Git安装为 Subversion:

    # Add package sourceecho"deb https://dist.bozaro.ru/debian/"| sudo tee/etc/apt/sources.list.d/dist.bozaro.ru.list
    curl -s https://dist.bozaro.ru/signature.gpg | sudo apt-key add -# Install packagesudo apt-get update
    sudo apt-get install git-as-svn

    从二进制文件运行

    要快速运行,需要:

    • 安装 Java 1.8或者更高版本
    • 下载二进制文件存档:https://github.com/bozaro/git-as-svn/releases/latest
    • 解压归档文件后,你可以运行服务器执行:
      bin/git-as-svn --config doc/config.example --show-config
    • 测试连接:
      svn ls svn://localhost/example
      使用登录/密码:测试/测试

    结果:

    • 服务器在目录中创建带有示例提交的裸存储库: example.git
    • 服务器将在 svn://localhost/example/url ( 登录/密码) 上可用: 测试/测试)

    JAVA  Server  rep  REPO  GIT  Repository  
    相关文章