2016-10-07 4 views
0

В моем репозитории git у меня есть файл workflow.vsd, который представляет диаграмму, созданную в Microsoft Visio.Git принудительно фиксировать пар файлов

Поскольку не у всех в нашей команде установлен Visio, кто бы ни изменил workflow.vsd, также должен создать корреспондент workflow.png.

Проблема в том, что люди часто фиксируют новую версию файла vsd и забывают зафиксировать png, делая изображение устаревшим.

Есть ли какой-либо способ для git разрешить фиксацию только в том случае, если оба одинаковые хэш-код фиксации установлены как workflow.vsd, так и workflow.png?

Другими словами, я хочу совершить только проект Visio и только если PNG также поручены:

git add workflow.vsd worflow.png 
git commit 

и это должно терпеть неудачу:

git add workflow.vsd 
git commit 
+2

Вы можете использовать привязку предварительной фиксации, чтобы проверить, соответствует ли ваша команда вашим правилам, но каждый должен установить свой собственный крюк предварительной фиксации. Если у вас есть центральный сервер, на котором вы можете установить крючки, вы можете настроить крюк pre-receive, который отклоняет толки, которые не соответствуют вашим правилам. Если вы используете рабочий процесс pull, вы можете отклонить запросы на загрузку, которые не соответствуют вашим правилам. Возможны комбинации некоторых или всех из них. – torek

ответ

2

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

Вы можете проверить эти файлы с помощью строки git status -s | grep "workflow.vsd".

Вы также можете проверить наличие png и сбой, если он отсутствует, или запустить скрипт, который автоматически генерирует png, как предлагает escitalopram.

1

Я рекомендовал бы против этой установки , Пользователям не требуется вводить генерируемые элементы в контроль версий. В программировании мы создаем инструменты для автоматического создания производных файлов из «исходных файлов», таких как vsd. Возможно, вы можете заглянуть в Make-файлы или Maven или любой инструмент сборки, который вам подходит (хотя я не знаю, есть ли инструмент для создания png из vsds).

Если у вас должен быть png при управлении версиями, другой способ обойти это будет commit hook, либо на «сервере git», либо в локальных хранилищах. Тем не менее, у вас должен быть инструмент, который может автоматически генерировать png.

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

+0

Я согласен с вами, поскольку я обычно использую инструменты построения для создания таких файлов. Но в этом случае высшее руководство решило иначе, поскольку некоторые из них по-прежнему имеют старые версии Office (без Visio) и хотят удобство просмотра потока непосредственно в браузере, когда они нажимают ссылку на битбакет. –