Який правильний спосіб перевірити дані фіксації в Git?


13

Моя мета - перевірити дані фіксації, які не відповідають певним вимогам, а потім відхилити або створені комісії, або перенести їх у віддалений сховище.

Проблема створення гачка перед фіксацією полягає в тому, що важко розгортатись багатьом людям, яким доводиться вручну оновлювати файл гака, який попередньо здійснює. Крім того, Git не дозволяє вам мати підмодулі в папці .git, що було б дуже просто для розгортання, на жаль.

Інший варіант, який я бачу, - це перевірка в тому, я вважаю, що гачок оновлення на віддаленій стороні, який перевірятиме кожну компресію, яку підштовхує девіз, і відхиляє натискання, якщо будь-яка з команд не виконає тести.

Хтось має уявлення про цю проблему? І якщо так, чи можете ви надати або вказати мені на приклад скрипта оновлення гака? Я трохи розгублений, як це працює.


4
Це чудове перше питання.
Daenyth

Відповіді:


7

спершу слід розібратися, чи не хочете ви, щоб не було зроблено некваліфікований код чи його відсунули / опублікували назад вгору.

на мою думку, пізніший є більш здійсненним.

з DVCS як git. ви не хочете контролювати те, як кожен розробник використовує своє місцеве сховище. і ти справді не можеш контролювати це.

гачок, який попередньо здійснює, добре працює як основна перевірка та санітарія, якщо кожен, хто бере участь, сприймає це добровільно. ми насправді це несанкціоновано застосовуємо в нашій компанії. однак це завжди можна пропустити git commit --no-verify.

з іншого боку, серверний гак не втручається в локальний робочий процес програміста, і переконує, що інші в проекті базують свою роботу лише на коді, який відповідає певним критеріям. зазвичай це те, що люди шукають, коли впроваджують автоматичні перевірки.

ця автоматична перевірка не призначена для заміни контролю якості, я думаю, що зазвичай досягається при перегляді коду або програмуванні пари.

якщо ви знайомі з github , ви помітите, що "тягнути запит" - це ще один підхід до цього питання. багато проектів з відкритим кодом і компанії використовують запит на притягування github для контролю дозволу філії та перегляду коду. але вона потребує людської взаємодії, тому, можливо, це не те, про що ви просите.


1

Як ви вже зазначали, робити це на клієнті, хоча технічно це можливо, мабуть, не практично. Крім того, багато користувачів git здійснюють проміжну роботу, тому драконівські перевірки кожної комісії є контрпродуктивними.

Стандартним рішенням буде гачок на стороні сервера. Ви, мабуть, налаштували pre-receiveгачок, який запускається кожного разу, коли надходить натискання, і який може відхилити натискання, якщо захоче. Решта залежить від точних чеків, які ви хочете зробити.

Це пояснено у Pro Git , глава 7.3 Настроювання Git - Git Hooks .


Дякую за вашу відповідь, і я дуже люблю новий веб-сайт Git. Єдине моє питання полягає в тому, що важко почати писати свої власні гачки, особливо тому, що ви не знаєте, де саме ви перебуваєте в процесі та для чого слід перевіряти. Якщо я намагаюся записати гачок перед отриманням, чи вважаю я, що пульт має гілку відстеження того, що я натискаю? Звідки я знаю? Я хотів би, щоб була така особливість git, яка дозволила б вам вчасно моделювати те, що у вас є.
dalanmiller
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.