Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Вопросы по Гит, после SVN

661  1 2 3 4 5 все
AlexNek патриот25.07.17 21:09
AlexNek
NEW 25.07.17 21:09 

Общими усилиями переходим на GIT. Репо с историей перетащить удалось, но всё в "плоском виде" ветки и тэги чисто в отдельных каталогах как и транк.

Как проще из всего этого сделать "нормальное дерево"?

Ну и вообще как вы работаете с Гитом?

На сервере нужно иметь обязательно "bare repo" - с этим уже накололись. А на клиенте как делаете?

Нужно чтобы структура каталогов осталась старой. Проблема в том что репо относительно много, а проекты должны иметь определенную структуру каталогов.

Поэтому делаем на клиенте тоже "bare repo" как клон с основного, а с него уже "рабочий бранч" куда нужно.

#1 
  JosefSchwejk постоялец25.07.17 23:09
25.07.17 23:09 
в ответ AlexNek 25.07.17 21:09

Мы не коллеги часом? улыб Сегодня полдня убил на аналогичную задачу. На прошлой работе все это делали "специально обученные люди", здесь же приходится все делать самому и с нуля - и доказывать еще, почему git удобнее.


Что значит "на клиенте"?


#2 
AlexNek патриот25.07.17 23:33
AlexNek
NEW 25.07.17 23:33 
в ответ JosefSchwejk 25.07.17 23:09, Последний раз изменено 26.07.17 01:28 (AlexNek)
Что значит "на клиенте"?

ну тот кто к серверу цепляется, например комп разработчика.


Сегодня полдня убил на аналогичную задачу.

Только полдня? Маловато смущ. Сегодня весь день только Гитом и занимались

Что выяснил - о переносе каталогов заботится не нужно, главное больше ничего не менять. Тэги и бранчи прийдётся видимо отследить по "названиям" коммитов


Вот что понравилось

https://habrahabr.ru/post/106912/

https://habrahabr.ru/post/174467/

#3 
Simple Nothing is f*cked26.07.17 15:34
Simple
NEW 26.07.17 15:34 
в ответ AlexNek 25.07.17 21:09

Я стараюсь использовать rebase flow, потому что ненавижу спагетти при выводе git log --graph


#4 
Simple Nothing is f*cked26.07.17 15:35
Simple
NEW 26.07.17 15:35 
в ответ JosefSchwejk 25.07.17 23:09

Я думал, эти времена уже давно в прошлом.

#5 
Simple Nothing is f*cked26.07.17 15:40
Simple
NEW 26.07.17 15:40 
в ответ AlexNek 25.07.17 21:09
На сервере нужно иметь обязательно "bare repo" - с этим уже накололись. А на клиенте как делаете?Нужно чтобы структура каталогов осталась старой. Проблема в том что репо относительно много, а проекты должны иметь определенную структуру каталогов.Поэтому делаем на клиенте тоже "bare repo" как клон с основного, а с него уже "рабочий бранч" куда нужно.

Тоже не понимаю. На клиенте и сервере структура репо одинаковая. Клиент - это копия сервера.

Из практических советов:

- использовать хороший diff tool. Если есть Beyond Compare - очень хорошо. Я пользуюсь связкой WinMerge + P4Merge.

- настроить алиасы для комфортной работы в консоли. Мои ленивые коллеги до сих пор пишут git status вместо git st или git log --graph --online вместо git glo.

- использовать rebase before push

#6 
  JosefSchwejk постоялец26.07.17 19:06
NEW 26.07.17 19:06 
в ответ Simple 26.07.17 15:35

Не Вы один, коллега. Сам был, так сказать, крайне удивлён.

#7 
  JosefSchwejk постоялец26.07.17 19:08
NEW 26.07.17 19:08 
в ответ AlexNek 25.07.17 23:33

К серверу цепляется?

Нет, Вы просто клон удаленного делаете в любом удобном месте, хоть десяток. Нет никаких клиентов и прицепов.

#8 
AlexNek патриот26.07.17 21:31
AlexNek
NEW 26.07.17 21:31 
в ответ Simple 26.07.17 15:40
настроить алиасы для комфортной работы в консоли

Как это работа в консоли может быть комфортной? Для меня комфортна исключительно работа с мышкой.


А Beyond Compare уж фиг его знает сколько лет пользую. Проблема была как его студии скормить. Нигде нет настроек. Перепробовал несколько .gitconfig пока правильный не нашел.

Но удобство пользования всё равно гораздо хуже.

Раньше в студии при коммите можно было глянуть отличия по интересующим файлам. Для гита в студии подобной возможности пока не нашел.

#9 
dymanoid знакомое лицо26.07.17 21:40
dymanoid
NEW 26.07.17 21:40 
в ответ Simple 26.07.17 15:40

Насчёт rebase можно сейчас холивар развести. Я против безусловного rebase.

#10 
  JosefSchwejk постоялец26.07.17 22:29
NEW 26.07.17 22:29 
в ответ dymanoid 26.07.17 21:40

Спор известен и давишен. Но кому вишня, а кому и крыжовник.


#11 
  JosefSchwejk постоялец26.07.17 22:30
NEW 26.07.17 22:30 
в ответ AlexNek 25.07.17 21:09

Вы по SSH рельсы прокладывали? Или?

#12 
AlexOtt местный житель26.07.17 22:48
AlexOtt
NEW 26.07.17 22:48 
в ответ AlexNek 25.07.17 21:09

Надо было импортировать через git svn - тогда бы ветки и бранчи были бы корректно замаплены. Если структура была стандартной, как trunk/branches/tags, то это просто ключ -

#13 
AlexOtt местный житель26.07.17 22:49
AlexOtt
NEW 26.07.17 22:49 
в ответ AlexNek 26.07.17 21:31

TortoiseGit для винды. Visual Studio должен работать из коробки

#14 
dymanoid знакомое лицо26.07.17 23:19
dymanoid
NEW 26.07.17 23:19 
в ответ AlexNek 26.07.17 21:31

GitExtensions ещё можно глянуть. Довольно неплохой GUI для винды.

#15 
AlexNek патриот26.07.17 23:25
AlexNek
NEW 26.07.17 23:25 
в ответ JosefSchwejk 26.07.17 19:08
К серверу цепляется?

Это я просто с сетями последнее время сижу...


Пока вот что выяснил - может еще кому "переходящему" пригодится.


Гит имеет два типа репозитория: "голый" (bare) и с рабочей копией. Отличия очень важные. Для того чтобы несколько человек могли коммитится в репозиторий он должен быть обязательно "голым".

Кроме того рабочую копию с "голого" репозитория можно разместить в любом каталоге и таких копий может быть достаточно много.

Визуал студия может работать только с репозиториями у которых есть рабочая копия.

Различать эти случаи довольно просто:

- "голый" репозиторий имеет стандартную структуру каталогов, в котором вашего проекта никак не видно

- репозиторий с рабочей копией имеет папку ".git".

- рабочая копия без репозитория имеет файл ".git".


Гит не работает с файловой структурой как свн, поэтому перемещать файлы и каталоги можно без опаски. Хотя не рекомендуют перемещение и изменение одновременно.

Понятие "веток" и "тэгов" имеется также, хотя это просто метки к коммитам.

"Стандарт работы" следующий:

- создается "голый" репозиторий доступный для всех разработчиков.

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

- после клонирования определенная ветка может быть автоматом скопирована как рабочя копия.

- Все изменения делаются в рабочей копии. Изменения можно просмотреть и переместить все или некоторые в специальное временное хранилище - staging area

- Изменения из staging area можно сохранить в локальной копии репозитория.

- Изменения из локального репозитория нужно переслать в общий репозиторий.

- Изменения из общего репозитория можно стащить в локальный.


#16 
AlexNek патриот26.07.17 23:27
AlexNek
NEW 26.07.17 23:27 
в ответ JosefSchwejk 26.07.17 22:30
Вы по SSH рельсы прокладывали? Или?

не, пока просто папочки на обычном файловом сервере. С Гит сервером пока проблемы.

#17 
AlexNek патриот26.07.17 23:31
AlexNek
NEW 26.07.17 23:31 
в ответ AlexOtt 26.07.17 22:48
Надо было импортировать через git svn

Вроде так народ и делал, но получилась одна мастер ветка с полной структурой каталогов "trunk/branches/tags"

Одну ветку "вынес", но не получилось туда перенести все коммиты из этой ветки.

#18 
AlexNek патриот26.07.17 23:36
AlexNek
NEW 26.07.17 23:36 
в ответ AlexOtt 26.07.17 22:49
TortoiseGit для винды. Visual Studio должен работать из коробки

Git Extention мне больше понравился, хотя у него часто вылет по нулевому указателю происходит.

Студия да, работает из коробки, но по сравнению с "анком" намного фиговей и не поддерживает рабочие копии вне репозитория.

А я было уж обрадовался, что не надо будет "лишнего" в проектах держать.

#19 
  JosefSchwejk постоялец27.07.17 08:37
NEW 27.07.17 08:37 
в ответ AlexNek 26.07.17 23:36

#20 
1 2 3 4 5 все