Вопросы по Гит, после SVN
Общими усилиями переходим на GIT. Репо с историей перетащить удалось, но всё в "плоском виде" ветки и тэги чисто в отдельных каталогах как и транк.
Как проще из всего этого сделать "нормальное дерево"?
Ну и вообще как вы работаете с Гитом?
На сервере нужно иметь обязательно "bare repo" - с этим уже накололись. А на клиенте как делаете?
Нужно чтобы структура каталогов осталась старой. Проблема в том что репо относительно много, а проекты должны иметь определенную структуру каталогов.
Поэтому делаем на клиенте тоже "bare repo" как клон с основного, а с него уже "рабочий бранч" куда нужно.
Что значит "на клиенте"?
ну тот кто к серверу цепляется, например комп разработчика.
Сегодня полдня убил на аналогичную задачу.
Только полдня? Маловато . Сегодня весь день только Гитом и занимались
Что выяснил - о переносе каталогов заботится не нужно, главное больше ничего не менять. Тэги и бранчи прийдётся видимо отследить по "названиям" коммитов
Вот что понравилось
На сервере нужно иметь обязательно "bare repo" - с этим уже накололись. А на клиенте как делаете?Нужно чтобы структура каталогов осталась старой. Проблема в том что репо относительно много, а проекты должны иметь определенную структуру каталогов.Поэтому делаем на клиенте тоже "bare repo" как клон с основного, а с него уже "рабочий бранч" куда нужно.
Тоже не понимаю. На клиенте и сервере структура репо одинаковая. Клиент - это копия сервера.
Из практических советов:
- использовать хороший diff tool. Если есть Beyond Compare - очень хорошо. Я пользуюсь связкой WinMerge + P4Merge.
- настроить алиасы для комфортной работы в консоли. Мои ленивые коллеги до сих пор пишут git status вместо git st или git log --graph --online вместо git glo.
- использовать rebase before push
настроить алиасы для комфортной работы в консоли
Как это работа в консоли может быть комфортной? Для меня комфортна исключительно работа с мышкой.
А Beyond Compare уж фиг его знает сколько лет пользую. Проблема была как его студии скормить. Нигде нет настроек. Перепробовал несколько .gitconfig пока правильный не нашел.
Но удобство пользования всё равно гораздо хуже.
Раньше в студии при коммите можно было глянуть отличия по интересующим файлам. Для гита в студии подобной возможности пока не нашел.
К серверу цепляется?
Это я просто с сетями последнее время сижу...
Пока вот что выяснил - может еще кому "переходящему" пригодится.
Гит имеет два типа репозитория: "голый" (bare) и с рабочей копией. Отличия очень важные. Для того чтобы несколько человек могли коммитится в репозиторий он должен быть обязательно "голым".
Кроме того рабочую копию с "голого" репозитория можно разместить в любом каталоге и таких копий может быть достаточно много.
Визуал студия может работать только с репозиториями у которых есть рабочая копия.
Различать эти случаи довольно просто:
- "голый" репозиторий имеет стандартную структуру каталогов, в котором вашего проекта никак не видно
- репозиторий с рабочей копией имеет папку ".git".
- рабочая копия без репозитория имеет файл ".git".
Гит не работает с файловой структурой как свн, поэтому перемещать файлы и каталоги можно без опаски. Хотя не рекомендуют перемещение и изменение одновременно.
Понятие "веток" и "тэгов" имеется также, хотя это просто метки к коммитам.
"Стандарт работы" следующий:
- создается "голый" репозиторий доступный для всех разработчиков.
- каждый разработчик делает себе его локальную копию - так называемый процесс клонирования.
- после клонирования определенная ветка может быть автоматом скопирована как рабочя копия.
- Все изменения делаются в рабочей копии. Изменения можно просмотреть и переместить все или некоторые в специальное временное хранилище - staging area
- Изменения из staging area можно сохранить в локальной копии репозитория.
- Изменения из локального репозитория нужно переслать в общий репозиторий.
- Изменения из общего репозитория можно стащить в локальный.
TortoiseGit для винды. Visual Studio должен работать из коробки
Git Extention мне больше понравился, хотя у него часто вылет по нулевому указателю происходит.
Студия да, работает из коробки, но по сравнению с "анком" намного фиговей и не поддерживает рабочие копии вне репозитория.
А я было уж обрадовался, что не надо будет "лишнего" в проектах держать.