Я начинаю новый проект Zend Framework, в котором я буду сотрудничать с дизайнером. Я собираюсь поддерживать этот код проекта с помощью git, и обычно дизайнеры не говорят на git (или на любом другом языке программирования), поэтому я хочу облегчить ему задачу, иначе я боюсь, что он вообще не будет использовать git. Мой план - дать ему немного Git gui, и с этим он должен использовать только базовые функции git, такие как фиксация, diff, выборка, слияние, push и pull.
Я использую gitolite для поддержки общей копии нашего репозитория git, и поскольку он имеет детализированная система разрешений,Я дам дизайнеру доступ RW только к выделенной ветке (дизайну) и доступ для чтения к другим ветвям.
Для простоты я хотел бы предоставить ему доступ только к некоторым папкам в основном проекте (который следует за Структура, рекомендованная ZF ), к которой ему нужен доступ для выполнения своей работы. В то же время я хочу, чтобы мы оба могли слиться друг с другом.
Уменьшенная структура для его ветви должна быть такой:
/
application/
layouts/
scripts/
views/
scripts/
public/
css/
images/
js/
Я знаю, что могу использовать подмодули для этой задачи, но это будет боль для обслуживания, потому что я должен разделить свой проект на (как минимум) 4 подрепозитория, он должен иметь доступ только к подрепозиториям, и у него будет 3 репозитория для работы. По этой причине, если это единственное решение, я откажусь от этой идеи.
Некоторые ссылки, которые я уже читал, заставляют меня думать, что то, о чем я прошу, возможно:
Вот мой вопрос:
дизайн
( git checkout -b design
и git mv / rm
]?) git merge design
из основной ветки и наоборот) Я обнаружил еще одно возможный подход к проблеме, заданной этими двумя вопросами SO
Я попытался реализовать первое после git rm all-undeeded-stuff
в ветке дизайна, я делаю фиксацию в главной ветке, которая включает файл в пути из белого списка и другой файл в черных списках путей, но git merge
завершился ошибкой со следующим сообщением
CONFLICT (delete/modify): application/Bootstrap.php deleted in HEAD and modified in master. Version master of application/Bootstrap.php left in tree.
Затем я добавил новый каталог в главную ветвь, и при слиянии из проекта добавляется новый каталог. Я поместил отладочное эхо в драйвер и увидел, что он не вызывался в обоих случаях, возможно, потому, что это не настоящее слияние.
Я еще не пробовал второй подход (.gitignore), но если я понял, что этот подход не соответствует моим потребностям, потому что он будет игнорировать только файлы из черного списка в ветке дизайна, но они будут извлечены в ветке дизайна, нарушив мои требования.
Я продвинул свои эксперименты на ] GitHub
Я думаю, что в настоящее время для этого нет решения. С текущей реализацией git это просто недостижимо.
Я бы хотел возразить, но боюсь, что этого не произойдет.