Программно определить разницу между git-svn и git-репозиториями?

StackOverflow https://stackoverflow.com/questions/400822

Вопрос

У меня есть некоторые настройки оболочки, которые динамически определяют псевдонимы в зависимости от того, какой тип репозитория VC содержит CWD - так, например, «d» запускает «svn diff» или «git diff», в зависимости от.(На основе этот пост в блоге, если кому-то интересно...)

Я хотел бы определить некоторые псевдонимы по-разному в зависимости от того, нахожусь ли я в репозитории git или репозитории git-svn.Есть ли простой способ определить разницу между ними?

Это было полезно?

Решение

Вы должны быть немного осторожны при выборе того, какие именно репозитории являются репозиториями git-svn.Репозиторий может содержать более одного репозитория svn.

Решение Kafka будет работать только в том случае, если репозиторий svn был клонирован с опцией -s или --std-layout, в которой на самом деле есть является отделение trunk.

Ответ Codelogic будет работать только в том случае, если существует репозиторий svn с именем svn - нет никаких требований, чтобы это было правдой.

Самый простой способ проверить, есть ли является svn-remote в конфигурации:

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

Это позволит найти любой настроенный репозиторий git-svn, как бы он ни назывался.Он завершится со статусом 0, если совпадение есть, и со статусом 1, если совпадения нет.

Но это не означает, что репозиторий svn действительно используется.Также может случиться так, что кто-то импортировал репозиторий svn, но использует его как подмодуль или как слияние поддеревьев, или даже не использует вообще.Если метаданные в репозитории git-svn включены, вы можете увидеть, использовалась ли какая-либо ревизия svn в текущем HEAD, используя что-то вроде этого:

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

Но это, пожалуй, слишком запутанно.Вам решать.

Другие советы

Вероятно, вы можете использовать вывод git config команда, позволяющая различать репозитории git и git-svn.

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

должен возвращать синхронизируемый URL-адрес svn, если он есть.

Существует также ветка под названием «trunk» и ветка под названием «trunk@[REV».Однако я думаю, что подход codelogics проще и чище.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top