2016-12-18 3 views
0

Обычно при поиске репозиториев git я ищу каталог .git, но это не всегда работает. Рабочие файлы субмодуля имеют файл .git, подмодули не всегда проверяются, а субмодульные репозитории (и голые репозитории) могут быть в любом месте.Как найти все репозитории git, включая голые?

Я хочу найти каждый репозиторий, клонированный из github, но найти все хранилища достаточно жестко. Есть ли команда или онлайнер, чтобы сделать это?

+0

Что ты имеешь в виду 'Я хочу, чтобы найти все хранилище клонированного из скажу github'? Вы хотите URL-адрес github? Или вы ищете пути на локальном диске? Если вам нужен каталог метаданных или исходный каталог? – Guildencrantz

+0

@Guildencrantz Я имею в виду, что я хочу запустить 'git config remote.origin.url' в каждом репо, выполнение команды не сложно, это поиск репозиториев. – jthill

ответ

1

Минимальный репозиторий содержит два файла, HEAD и config и два каталоги, objects и refs.

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

# find all repositories 
find -name HEAD -execdir \ 
    [ -d refs -a -d objects -a -f config ] \; \ 
    -printf %h\\n # or if your `find` doesn't have `-printf`, just `-print` 

будет делать. Это находит репозиторий, а не его работу; найти worktrees, найти .git еще лучший способ

find -name .git 

или заднюю .git раздражает

find -name .git -printf %h\\n 
+1

Обратите внимание, что это требует, чтобы ваш 'find' имел как' -execdir', так и '-printf'. Первое кажется довольно стандартным, но «-printf» по-прежнему отсутствует в некоторых системах MacOS и FreeBSD, по крайней мере. Я вижу некоторые версии 'find' либо strip' .' из '$ PATH', либо отказываются разрешать' -execdir', если '$ PATH' имеет'. 'В нем тоже. Скорее всего, это хорошо. :-) (Я не ставил '.' на моем пути.) – torek

+0

Yow. Должен улыбаться невиновности любого, кто будет работать с '.' в' PATH' ... Спасибо за примечание, я сложил в примечании '-printf'. – jthill

Смежные вопросы