以编程方式告诉git-svn和git repos之间的区别?

时间:2008-12-30 16:54:09

标签: svn git shell git-svn visual-c++

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

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

3 个答案:

答案 0 :(得分:5)

您可以使用git config命令的输出来区分git和git-svn repo。

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

应该返回正在同步的svn URL(如果有的话)。

答案 1 :(得分:5)

在决定哪些存储库完全是git-svn存储库时,您应该小心一点。存储库可能包含多个svn存储库。

Kafka的解决方案仅在使用-s或--std-layout选项克隆svn存储库时才有效,其中 分支trunk

Codelogic的答案只有在有一个名为svn的svn存储库时才有效 - 没有要求这是真的。

在配置中检查是否 svn-remote的最简单方法是:

$ git config --get-regexp ^svn-remote

这将找到任何已配置的git-svn存储库,无论它们被调用。如果匹配,它将以状态0退出,如果没有匹配则退出。

但是,这并不意味着真正使用了svn存储库。也许某人已导入svn存储库,但使用的是子模块或子树合并,甚至根本不存在。如果已打开git-svn存储库中的元数据,则可以通过使用以下内容查看当前HEAD中是否已使用任何svn修订:

$ git rev-list -1 --grep='git-svn-id' HEAD

但这可能有点过于复杂。你决定了。

答案 2 :(得分:0)

还有一个名为trunk的分支和一个名为trunk @ [REV]的分支。 但是,我认为代码逻辑方法更简单,更清晰。