Как проверить действительные имена ветвей Git?Python

Программы на Python
Ответить
Anonymous
 Как проверить действительные имена ветвей Git?

Сообщение Anonymous »

Я разрабатываю хук git post-receive на Python. Данные передаются на стандартный ввод со строками, похожими на

Код: Выделить всё

ef4d4037f8568e386629457d4d960915a85da2ae 61a4033ccf9159ae69f951f709d9c987d3c9f580 refs/heads/master
Первый хеш — это старая ссылка, второй — новая ссылка, а третий столбец — это обновляемая ссылка.

Я хочу разделить это на 3 переменные, одновременно проверяя ввод. Как проверить имя ветки?

В настоящее время я использую следующее регулярное выражение

Код: Выделить всё

^([0-9a-f]{40}) ([0-9a-f]{40}) refs/heads/([0-9a-zA-Z]+)$
Этот вариант не принимает все возможные имена ветвей, как указано в man git-check-ref-format. Например, он исключает ветку по имени build-master, что является допустимым.

Бонусные знаки

На самом деле я хочу исключить любую ветку, которая начинается с «build-». Можно ли это сделать в одном и том же регулярном выражении?

Тесты

Учитывая отличные ответы ниже, я написал несколько тестов, которые можно найти по адресу
https://github.com/alexchamberlain/gith ... re-test.py.

Состояние: все приведенные ниже регулярные выражения не компилируются. Это может указывать на проблему с моим скриптом или несовместимым синтаксисом.

Подробнее здесь: https://stackoverflow.com/questions/120 ... anch-names
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»