Как получить правильный счет git rev-list с мелким клоном? - PullRequest
0 голосов
/ 10 октября 2019

Мне показалось, что добавление номера редакции git в версию моего проекта во время сборки gradle - это очень умная идея, например major.minor.commit. Это реализуется через

git rev-list --count HEAD

Теперь я использую gitlab ci, который получает только последние 50 коммитов:

Fetching changes with git depth set to 50...

Так что я получаю номер версии 50 все время,Короче говоря, как мне получить правильный счет с мелким мерзавцем-клоном?

1 Ответ

1 голос
/ 11 октября 2019

(Примечание: это касается только подсчета количества, а не того, является ли это хорошей идеей. Что касается того, является ли это хорошей идеей: подумайте, что произойдет, если у вас есть три копии репозитория, одна из какой-то центральной точки, втораябудучи пользователем A, к которому пользователь A добавил один коммит, а третий - пользователем B, к которому пользователь B добавил один коммит. Каково количество в хранилище пользователя A? Что это такое в пользовательском B?)

't.

Git не может смотреть на коммиты других репозиториев (ну, кроме случаев, когда вы используете git fetch, а они дают вашему Git эти коммиты для вашего Git, чтобы вставить его в свой собственныйхранилище - но в этот момент это не коммиты других хранилищ: они ваши сейчас, или, точнее, теперь они общие).

git rev-listКоманда перечисляет - или с --count, просто считает - фиксирует в вашем хранилище. Таким образом, вам нужен достаточно глубокий репозиторий, чтобы подсчитать все коммиты, о которых вы заботитесь, то есть все коммиты обратно в корень. Так что не используйте неглубокий репозиторий.

Обратите внимание, что для первоначальной настройки полного репозитория может потребоваться некоторое время, но после этого, git fetch из апстрима только даст вам новый фиксация, которая обычно занимает не более нескольких секунд.

...