Нумерация версий Git с централизованным рабочим процессом - PullRequest
3 голосов
/ 05 декабря 2009

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

  1. Новый разработчик делает "git clone"
  2. В своей локальной копии он редактирует .git / hooks / pre-commit для вызова version.sh

version.sh (который входит в корень проекта) берет номер версии из "git description" и сохраняет его в файле.

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

Поскольку на сервере нет рабочей копии, простое обращение к нему (pre | post) -рассмотренных хуков там не работает, поэтому мне интересно, есть ли способ сделать это.

Ответы [ 2 ]

4 голосов
/ 07 декабря 2009

Как насчет hooks/update в центральном репо, который отклоняет коммиты без изменений в файле версии (с именем VERSION в приведенном ниже примере)?

#! /bin/bash

refname="$1"
oldrev="$2"
newrev="$3"

if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
  echo "Usage: $0 <ref> <oldrev> <newrev>" >&2
  exit 1
fi

if [ "$refname" != "refs/heads/master" ]; then
  exit 0
fi

if diff -bq <(git show $oldrev:VERSION) \
            <(git show $newrev:VERSION) >/dev/null
then
  echo "$0: VERSION unchanged; rejecting update" >&2
  exit 1
fi
1 голос
/ 06 декабря 2009

Проект x264 автоматически генерирует номер версии, подсчитывая коммиты git в истории. Он перенесен из svn, где версии назывались, например, r678, но кто-то создал скрипт для генерации чисел из git.

http://git.videolan.org/?p=x264.git;a=blob;f=version.sh;hb=HEAD

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...