вопрос про Git

всем привет

возник вопрос: как лучше ставить задачу исполнителю - делая для него ветку-задание в которой уже проиндексированы нужные файлы или пусть сам и ветку по заданию делает и файлы индексирует?

речь идет о командной разработке посредством Git

использует кто-нибудь Git?

Мы на работе используем ветки. Обычно есть основная ветка и рабочая. Дополнительные создаем тогда, когда пишем что-то масштабное, что может войты в релиз после выхода рабочей ветки в релиз. Но созданием веток и так далее оыбчно занимаается сам программист.

Смотря что именно подразумевается. На работе так же используем ветки, master - текущая ветка у нас, dev - ветка с последними билдами для тестировщиков, release - ветка с билдами, которые на продакшене. Дополнительные не создаем, все пилим в master, в dev ветку сливаемся вечером обычно, либо через день и делаем билды.

Если opensource проект - fork и pull-request отдельных фич, и так же ветки релиза и dev.

Я работаю один, по этому не заморачивался и все кидаю в мастер. Если фрилансер и закрытый проект - давайте доступ в отдельную ветку, сами потом делайте merge если все ок.

P.S. структуры гита все делал я, хотя как по мне каждый программист должен уметь это делать, просто у наших девов был всегда svn.

а какой смысл одиночке использовать Git?

есть же история на каждый файл если работаете в NetBeans

p.s. о каком билде идет речь если в PHP не надо компилировать (делать билд)

или вы компилируете php?

Смысл есть, не всегда ведь работаешь на работе, иногда дома, иногда где то еще. Fetch/pull и push в конце работы, и все девайсы можно синхронизировать. Так же работаю в phpStorm, sublime (где как), по этому история нужна (да и бывает система может упасть или еще что то). Документация вся хранится там же в md, довольно удобно. Ну и главное, вы же не вечны, вдруг смените работу или еще что то, другим людям может понадобиться и история и прочее.

В целом одиночке подходит svn для этих целей, но я привык к гиту, мне удобнее (хотя периодически приходится сталкиваться и с svn).

Билды это больше к нашим девам, они пишут под iOS, вот они и делают. Я иногда правлю приложения под андроид, так же делаю билды.

А если про пхп, билдом например может называтся CI система: code review, тесты, выкатывание на тестовый сервер.

про одиночку = может я не догоняю из-за того, что работаю в НетБинсе, но даже работая из разных точек с одного приложения всегда можно загрузить нужный файл/файлы и продолжить трудиться…

про билды = выкатывание на тестовый сервер всего проекта сразу? может более оправдано отлаживать проблемное место на отдельном URL, доступ к которому ограничить авторизацией или пулом IP-адресов?

про свой вопрос = видимо корректнее будет самому создать ветку, проиндексировать на ней файлы и указать на нее конкретному разработчику

а как программист принимает решение: какие именно файлы ему надо проиндексировать на своей ветке?

не цапанет он лишнее из чужой работы, что может привести к конфликту?

Я работаю локально во всех местах, иначе получится каша. Билд выкатывается у меня без тестов, к push-у git привязан хук, который делает checkout в папку на сервере(clean), потом эта папка синхронизируется с тестовым сервером, и можно тестить проверять все.

А вот для отладки лучше использовать локалку, xdebug там все дела.

Насчет загрузить, гитом быстрее, + не надо поднимать фтп соединение.

Про ваш вопрос, смотря какая сложность задачи. Если высокая и(или) требует много времени, то да, создайте ветку и пускай человек трудится, если же задача простая или быстро решаема - можно прямо в дев ветке работать.

Конфликты резолвятся ручками когда несколько человек сливаются.

это так сложно?! :)

да мне сам принцип интересен

конечно - локально…

на каждом рабочем месте своя версия

ну это понятно, что конфликты решаются…

но если есть возможность избежать конфликтов заранее - зачем бегать по полю с граблями?

Работайте над разным функционалом, правильно настройте gitignore, добавляйте в коммиты только файлы которые правили (нужны).

Так избежите много конфликтов, но как показывает практика, они все равно будут. Через пару недель не будете замечать.

Нет, но storm например может начать информацию для синхронизации, это занимает некоторое время. Мне больше так подходит) раньше работал так же, качал с сервера - на сервер.

ок => спасибо за мнение

Посмотрите в сторону git-flow ( habrahabr.ru/post/106912/ ), это очень удобная модель ведения разработки.

Очень рекомендую установить правила именования саб-веток, например future/{НОМЕР_ЗАДАЧИ}-{ФАМИЛИЯ_АВТОРА}-{НАЗВАНИЕ_ЗАДАЧИ}.

Так имеет смысл установить правила по именованию коммитов, например jira-овский вариант очень удобен.

На счет правильно настроенного .gitignore и .gitattributes - это святое, с этого нужно начинать))

В случае работы в команде еще хорошей практикой будет поднятие окружения под vagrant ( www.youtube.com/watch?v=jBMXVFVGrcc ), максимально приближенный к production серверу. За счет разницы окружений можно словить баги во время релиза на production, а в этот момент они, как правило, ОЧЕНЬ неприятные.