我已经设置了一些 shell 东西,可以根据 CWD 包含的 VC 存储库类型动态定义别名——因此,例如,'d' 运行 'svn diff' 或 'git diff',具体取决于。 (基于 this blog post ,如果有人感兴趣...)
我想根据我是在 git 存储库还是 git-svn 存储库中来定义一些不同的别名。有没有简单的方法来区分两者之间的区别?
最佳答案
在确定哪些存储库是 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 存储库,但将其用作子模块或子树 merge ,甚至根本不使用。如果 git-svn 存储库中的元数据已打开,您可以使用以下内容查看当前 HEAD 中是否使用了任何 svn 修订版:
$ git rev-list -1 --grep='git-svn-id' HEAD
但这可能有点太复杂了。您决定。
关于svn - 以编程方式区分 git-svn 和 git repos 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/400822/