我已经设置了一些shell内容,根据当前工作目录中包含的版本控制库的类型动态定义别名-因此,例如,“d”运行“svn diff”或“git diff”,具体取决于什么。 (基于这篇博客文章,如果有人感兴趣...)
我想根据是否在git repo与git-svn repo中定义一些别名不同。 有没有一种简单的方法来区分这两者之间的差异?
我想根据是否在git repo与git-svn repo中定义一些别名不同。 有没有一种简单的方法来区分这两者之间的差异?
git config
命令的输出来区分git和git-svn存储库。git config --get svn-remote.svn.url
如果有同步svn的URL,应该返回正在同步的svn URL。
在决定哪些仓库确切是git-svn仓库时,您需要小心。一个仓库可能包含多个svn仓库。
Kafka的解决方案仅在使用-s或--std-layout选项克隆svn仓库时才能生效,在其中实际上确实有一个分支trunk。
Codelogic的答案仅在存在名为svn的svn仓库时才能生效--没有必要满足这一条件。
检查配置中是否有svn-remote的最简单方法是:
$ git config --get-regexp ^svn-remote
这将查找任何已配置的git-svn存储库,无论它们叫什么。如果有匹配项,则状态码为0;如果没有匹配项,则状态码为1。
但是,这并不意味着svn存储库真的被使用。可能也是因为有人将svn存储库导入,但将其用作子模块或子树合并,甚至根本没有使用。如果在git-svn存储库中启用了元数据,您可以使用以下内容查看当前HEAD中是否使用了任何svn修订:
$ git rev-list -1 --grep='git-svn-id' HEAD
还有一个名为trunk的分支和一个名为trunk@[REV]的分支。 不过,我认为codelogics的方法更简单、更清晰。