Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有使用`svn`语法的`git svn`包装器?_Git_Svn_Frontend - Fatal编程技术网

是否有使用`svn`语法的`git svn`包装器?

是否有使用`svn`语法的`git svn`包装器?,git,svn,frontend,Git,Svn,Frontend,这在多大程度上是可能的?有没有这样的包装器(或者前端是更合适的名称) 例如,这将如何工作。使用git-svn时,您将使用git-svn-clone而不是svn-co(IIRC),因此当执行svn-co时,包装器将翻译此内容,并在实际中执行git-svn-clone 也许这是个坏主意,因为可能有无法处理的重要案例(因此是第一个问题)。也许这是个好主意(因此是第二个问题) (另一个问题是,在某种合理的设置下,基于git是否可以做类似的事情-这是一个包装器,它可以让svn用户在实际操作git服务器时能

这在多大程度上是可能的?有没有这样的包装器(或者前端是更合适的名称)

例如,这将如何工作。使用
git-svn
时,您将使用
git-svn-clone
而不是
svn-co
(IIRC),因此当执行
svn-co
时,包装器将翻译此内容,并在实际中执行
git-svn-clone

也许这是个坏主意,因为可能有无法处理的重要案例(因此是第一个问题)。也许这是个好主意(因此是第二个问题)

(另一个问题是,在某种合理的设置下,基于
git
是否可以做类似的事情-这是一个包装器,它可以让
svn
用户在实际操作
git
服务器时能够使用他们习惯的命令)

背景是我们目前使用的是
svn
,还有一些脚本(或makefile)使用
svn
命令。我担心的是,这一事实会使它不适合使用
git svn
(从那时起,脚本和makefile将不再像预期的那样工作)

(如果有可能继续使用
svn
命令,奖金问题可以被视为切换到
git
的论点的一部分,相反的论点是人们必须学习
git
不会那么强。)的目的是促进从
svn
git
的转换

它通过提供以下内容来实现这一目标:

  • Svn
    存储库导入本地
    Git
    存储库的方法
  • 将提交从本地
    Git
    存储库发送回中央
    Svn
    存储库的有限方式;它是有限的,因为
    Svn
    只提供了
    Git
    功能的有限子集,并且有
    Svn
    功能不是由
    Git
    提供的;另外,
    Git
    团队努力使
    Git svn
    成为一个完整的
    svn
    客户机是没有意义的,因为正如我前面所说,它的目的是帮助
    svn
    用户进行转换
  • 与Git的命令行类似的命令行,带有特定的附加项
在命令行中使用
git svn
一段时间后,您会发现您已经学会了最常用的
git
命令


事实上,在现有脚本中使用
svn
是希望为
git svn
创建一个前端的正当理由,该前端模仿
svn
的命令行

您有两个选择:

  • 编写一个包装器脚本,使用
    svn
    选项接受命令行,并将其转换为
    git svn
    命令行
  • 修改脚本以使用
    git svn
    而不是
    svn
  • 如果您计划迁移到
    git
    ,而
    git svn
    只是一个适应阶段(应该是这样的),那么您必须修改脚本以使用
    git
    而不是
    svn
    ,以完成迁移

    svn
    命令转换为
    git svn
    命令的简单
    bash
    脚本如下所示:

    #!/bin/bash
    
    SVN_CMD=$1
    shift
    
    # If $1 is empty then display some help
    # ... not provided here ...
    
    case "$SVN_CMD" in
      "checkout" )
        git svn clone "$@"
      ;;
    
      "update" )
        git svn fetch "$@"
      ;;
    
      "add" )
        git add "$@"
      ;;
    
      "commit" )
        git svn dcommit "$@"
      ;;
    esac
    
    对于其中一些命令,您可能需要添加额外的选项以匹配当前的设置和工作流。其中一些可能不需要
    “$@”
    部分这不是一个经过测试的脚本,它只是我现在想象的一个草图。


    我认为,更好的选择是让脚本使用
    svn
    和它们自己的代码工作副本(作为
    svn
    工作副本),直到中央存储库迁移到
    Git
    。开发人员可以使用
    git svn
    和本地
    git
    存储库,直到他们决定是时候完全切换到
    git

    三年前我们就是这样做的。一些开发人员需要一段适应时间,他们使用
    gitsvn
    来缩小差距;其他开发人员直接跳到
    Git
    命令行或各种
    Git
    GUI界面,隐藏技术细节(例如命令行),让您专注于代码。一个好的
    Git
    GUI客户机是许多其他客户机之外的


    当我们最终决定完全切换到
    Git
    时,脚本很容易转换和测试。关于存储库,我建议您尝试进行转换。它比git svn做得更好。

    你反对学习git命令行工具吗?SVN和Git之间完全没有1:1的映射关系@VonC可能还有别的话要说。@TimBiegeleisen不,实际上我更喜欢git。否则,使用git svn就没有意义了,是吗?我当然意识到他们没有1:1的地图,这就是为什么我问在多大程度上这是可能的。