这可能在多大程度上?是否有这样的包装(或者可能是前端更合适的名称)?
例如,这将如何工作。使用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
的论据的一部分。不会那么强大。)
答案 0 :(得分:1)
git-svn
的目的是促进从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
而不是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
做得更好。