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

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

我已经设置了一些 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/

相关文章:

svn - 如何在 Subversion/TortoiseSVN 中对已删除的文件夹执行 "undelete"操作?

git - IntelliJ IDEA 中的 "Revert Commit"和 "Undo Commit"有什么区别?

git - 使用 Git 将最近的提交移动到新分支

c - C、execve 和参数中的 UNIX 简单 shell

bash - 使用 tr 将一个字符替换为多个字符

git - 如何将 svn repo 的主干镜像到 github?

git - 如何按时间顺序记录所有 Git 提交?

git - 用于远程 git 存储库访问的 java api

git - 在 KRL(KUKA 机器人语言)项目中使用 git

linux - 无法在 rpm 安装脚本中读取用户信息