4

我已经设置了一些 shell 东西,根据 CWD 包含的 VC 存储库类型动态定义别名 - 例如,'d' 运行 'svn diff' 或 'git diff',具体取决于。(基于this blog post,如果有人感兴趣......)

我想根据我是在 git repo 还是在 git-svn repo 中定义一些别名。有没有一种简单的方法来区分两者之间的区别?

4

3 回答 3

5

您可能可以使用git config命令的输出来区分 git 和 git-svn 存储库。

git config --get svn-remote.svn.url

应该返回同步到的 svn URL,如果有的话。

于 2008-12-30T17:31:08.133 回答
5

在确定哪些存储库确切是 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

但这可能有点太令人费解了。你决定。

于 2008-12-30T22:31:35.967 回答
0

还有一个称为trunk 的分支和一个称为trunk@[REV] 的分支。但是,我认为 codelogics 方法更容易和更清洁。

于 2008-12-30T20:05:06.480 回答