我已经设置了一些 shell 东西,根据 CWD 包含的 VC 存储库类型动态定义别名 - 例如,'d' 运行 'svn diff' 或 'git diff',具体取决于。(基于this blog post,如果有人感兴趣......)
我想根据我是在 git repo 还是在 git-svn repo 中定义一些别名。有没有一种简单的方法来区分两者之间的区别?
我已经设置了一些 shell 东西,根据 CWD 包含的 VC 存储库类型动态定义别名 - 例如,'d' 运行 'svn diff' 或 'git diff',具体取决于。(基于this blog post,如果有人感兴趣......)
我想根据我是在 git repo 还是在 git-svn repo 中定义一些别名。有没有一种简单的方法来区分两者之间的区别?
您可能可以使用git config
命令的输出来区分 git 和 git-svn 存储库。
git config --get svn-remote.svn.url
应该返回同步到的 svn URL,如果有的话。
在确定哪些存储库确切是 git-svn 存储库时,您应该小心一点。一个存储库可能包含多个 svn 存储库。
Kafka 的解决方案只有在使用 -s 或 --std-layout 选项克隆 svn 存储库时才有效,其中实际上有一个 branch trunk
。
Codelogic 的答案只有在调用 svn 存储库时才有效svn
——并不要求这是真的。
检查配置中是否有 svn-remote 的最简单方法是:
$ git config --get-regexp ^svn-remote
这将找到任何配置的 git-svn 存储库,无论它们被称为什么。如果匹配,它将以状态 0 退出,如果不匹配,它将以状态 1 退出。
但是,这并不意味着真正使用了 svn 存储库。也可能是有人导入了 svn 存储库,但使用 is 作为子模块或子树合并,甚至根本不使用。如果 git-svn 存储库中的元数据已打开,您可以使用以下内容查看当前 HEAD 中是否使用了任何 svn 修订:
$ git rev-list -1 --grep='git-svn-id' HEAD
但这可能有点太令人费解了。你决定。
还有一个称为trunk 的分支和一个称为trunk@[REV] 的分支。但是,我认为 codelogics 方法更容易和更清洁。