我有一些shell的东西设置,动态定义别名取决于什么样的VC repo CWD包含 - 例如,'d'运行'svn diff'或'git diff',具体取决于。 (基于this blog post,如果有人感兴趣...)以编程方式告诉git-svn和git repos之间的区别?
我想定义一些别名,取决于我是否在git repo与git-svn repo中。有没有简单的方法来分辨两者之间的差异?
我有一些shell的东西设置,动态定义别名取决于什么样的VC repo CWD包含 - 例如,'d'运行'svn diff'或'git diff',具体取决于。 (基于this blog post,如果有人感兴趣...)以编程方式告诉git-svn和git repos之间的区别?
我想定义一些别名,取决于我是否在git repo与git-svn repo中。有没有简单的方法来分辨两者之间的差异?
在决定哪些存储库完全是git-svn存储库时,应该小心一点。存储库可能包含多个svn存储库。如果svn库与-s或--std布局选项克隆,其中有实际是分支trunk
卡夫卡的解决方案才有效。
Codelogic的答案只有在存在一个名为svn
的svn存储库时才会起作用 - 没有要求那是真的。
最简单的方法来检查是否有是一个SVN远程的配置是:
$ git config --get-regexp ^svn-remote
这将找到任何配置的git-svn库,不管他们是所谓的。如果匹配,它将以状态0退出,如果没有匹配,则退出1。
但是,这并不意味着svn库真的被使用。也可能是某人导入了一个svn存储库,但是使用是作为子模块或作为子树合并,甚至根本不存在。如果混帐SVN仓库元数据已被打开,你可以看到,如果任何SVN版本已在当前HEAD通过使用像这样使用:
$ git rev-list -1 --grep='git-svn-id' HEAD
但是,这也许有点太令人费解。你决定。
您可以使用git config
命令的输出来区分git和git-svn回购。
git config --get svn-remote.svn.url
应该返回被同步到的svn URL,如果有的话。
还有一个叫trunk的分支和一个叫做trunk @ [REV]的分支。然而,我认为代码学方法更简单,更清洁。
谢谢 - rev-list位对我而言太复杂;在我自己摸索一点之后,我可能会做'如果[-d .git/svn]'并从那里开始。我意识到它不会处理一般情况,但它涵盖了我的全部。 再次感谢。 – genehack 2009-01-02 21:19:48