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

时间:2016-02-04 07:05:55

标签: git svn frontend

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

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

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

(奖励问题是,如果可以在一些合理的设置下基于git做类似的事情 - 这是一个使svn用户能够使用他们习惯的命令的包装器,而实际上他们针对git服务器工作。

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

(如果有可能继续使用git命令反驳人们必须学习{{1},那么可以将奖金问题视为切换到svn的论据的一部分。不会那么强大。)

1 个答案:

答案 0 :(得分:1)

git-svn的目的是促进从svngit的过渡。

它通过提供:

来实现这一目标
  • Svn存储库导入本地Git存储库的方法;
  • 将提交从本地Git存储库发送回中央Svn存储库的有限方法;它是有限的,因为Svn仅提供Git个功能的有限子集,Svn提供的Git功能不属于Git。此外,git-svn小组没有必要努力使Svn成为一个完整的Svn客户,因为正如我之前所说,其目的是帮助Git用户进行过渡;
  • 一个类似git-svn命令行的命令行,带有特定的附加内容。

在命令行中使用Git一段时间之后,您会发现您已经学习了最常用的svn命令。

在现有脚本中使用git-svn确实是一个合法的理由,希望svn的前端模仿svn的命令行。

您有两种选择:

  1. 编写一个使用git-svn选项接受命令行的包装器脚本,并将其转换为git-svn命令行。
  2. 修改脚本以使用svn代替git
  3. 如果您计划迁移到git-svngit只是一个调整阶段(这就是它应该是这样),那么您将不得不修改脚本以使用svn而不是bash才能完成迁移。

    svn命令转换为git-svn命令的简单#!/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工作副本),直到中央存储库迁移到{{1} }。开发人员可以使用git-svn和本地Git存储库,直到他们决定完全切换到Git为止。

    这就是我们三年前的做法。一些开发人员需要一个住宿时间,他们使用git-svn来缩小差距;其他开发人员直接跳转到Git命令行或隐藏技术细节(例如命令行)的各种Git GUI界面,让您专注于代码。除了许多其他人之外,一个好的Git GUI客户端是Atlassian SourceTree

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