crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Litkevich Yuriy
  опции профиля:
сообщение 26.1.2010, 19:49
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Тут можно потрепаться на эту тему.
Хотя впрочем преимущества Git'а для меня, УЖЕ, стали очевидны. Помимо самой, нормальной, идеи веток и меток. Обнаружил ещё одно существенное преимущество Git'а - компактность хранилища.

Есть у меня зеркало проекта AOS, весьма не рационально ребята там структуру организовали, в том числе и бинари там держат.

SVN-Зеркало весит = 544 649 КиБ
Его Git-клон весит = 144 680 КиБ
т.е. более чем в 3,5 раза меньше.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 27.1.2010, 15:41
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Iron Bug @ 27.1.2010, 17:25) *
в git'e это удобно сделано?
по сравнению с Git'ом в SVN'е это вообще никак не сделано.

на мой нынешний взгляд, SVN у Git' пока выигрывает за счёт интуитивного GUI, Git-gui и Git-tk довольно кривые и неуклюжие

Цитата(Iron Bug @ 27.1.2010, 17:25) *
а в чём особое удобство ветвлений в git?
попробую рассказать на примере.
Ветки существуют двух типов:
1) Ветка сопровождения
2) Функциональная ветка
Первая нужна для сопровождения минорных версий программы
Вторая - для эксперементов и т.д.

Теперь рабочий цикл по первому типу веток - Ветка сопровождения:
1) Принимается решение о выпуске новой версии программы, допустим v1.1.0
SVN:
a) trunk копируется в branches с новым именем v1.1.x - это ветка сопровождения;
b ) вновь созданный каталог branches/v1.1.x копируется в tags с именем v1.1.0 - это метка
c) фиксируются изменения в хранилище.
Итого имеем два дубля trunk'а (ну что-то там с экономится сожмётся..., это и так понятно)

GIT:
a) на текущем состоянии ветки master (аналог trunk) делается новая ветка (по сути получается пометка) именем v1.1.x - это ветка сопровождения;
b ) на этойже ветке (v1.1.x) создаётся метка с именем v1.1.0 - это метка (в git'е, метка - просто именованное состояние)
Итого, ничего не фиксируется, только на каждое из перечисленных двух действий создаются служебные записи в хранилище (в Git'е оно локальное)

Идём дальше, исправление ошибок

Работаем над основной веткой (trunk/master).
Предположим, что приняли сообщение об ошибке в выпуске v1.1.0, от пользователя.
Нашли ошибку в ветке сопровождения, исправили. Далее:
SVN:
1) зафиксировали изменения (исправление ошибки) в хранилище (ветка v1.1.x)
2) копируем branches/v1.1.x в tags с именем v1.1.1 - это новая метка (предположим, что сразу выпускаем заплату не накапливая)
3) фиксируем изменения
4) сливаем текущее состояние ветки branches/v1.1.x в trunk (чтобы в главной ветке тоже было исправлено)

GIT:
1) зафиксировали изменения (исправление ошибки) в хранилище (ветка v1.1.x), с этого момента в хранилище появляется фактическая ветка которая содержит diff относительно точки ветвления
2) на этойже ветке (v1.1.x) создаётся метка с именем v1.1.1 (это по прежнему просто именованное состояние)
3) ---
4) сливаем текущее состояние ветки branches/v1.1.x в master (чтобы в главной ветке тоже было исправлено)

Итого ручной работы минимум, дубликатов минимум, а слияние в Git'е более наглядное/интуитивное.
Плюс Git отслеживает не только перемещения файлов по каталогам, но и функций из одного файла в другой (когда такое обнаруживается можно увидеть соответствующую пометку вместо полного diff'а)

Теперь рабочий цикл по второму типу веток - Функциональная ветка:
Необходимо провести эксперимент, нужно создать ветку от главной
SVN:
1) trunk копируется в branches с новым именем foo - это функциональная ветка;
2 ) рабочая копия переключается на эту ветку (опционально, зависит от стратегии работы с рабочей копией)
3) делаются изменения, фиксируются в хранилище (многократно).
4) Принимается решение на слияние, осуществляется слияние
5) фиксируются изменения
6) функциональная ветка удаляется за не надобностью
7) фиксируются изменения
Итого имеем уже не нужную ветку в истории хранилища (оно пухнет)

GIT:
1) на текущем состоянии ветки master (аналог trunk) делается новая ветка именем foo - это функциональная ветка;
2 ) рабочий каталог переключается на эту ветку (обязательно)
3) делаются изменения, фиксируются в хранилище (многократно).
4) Принимается решение на слияние, переключают рабочий каталог на master
5) осуществляется слияние выбранной ветви (из списка ветвей) с master'ом (история правок самой функциональной ветви копируется при слиянии)
6) функциональная ветка удаляется за не надобностью
7) запускам сборщик мусора git gc, после этого удалённые ветви не востановить, т.к. они полностью удаляются из хранилища (опционально)
Итого, функциональные ветви, как коротко живущие можно полностью удалять из хранилища. А так как фнкциональные ветки явление частое и, можно сказать, основное, то они вносят наибольший вклад в вес.
Сверх того, отсутствие или перебои связи на твою работу вообще никак не влияют.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Litkevich Yuriy   Git против SVN   26.1.2010, 19:49
- - Kagami   У git'а проблемы с докачкой...   26.1.2010, 20:39
|- - azure   Цитата(Kagami @ 26.1.2010, 19:39) У git...   27.1.2010, 13:17
- - Litkevich Yuriy   пока не напарывался. Однако скорость git svn fetch...   26.1.2010, 20:45
- - Tonal   У git-а под виндой с русскими названиями файлов по...   27.1.2010, 9:04
- - Litkevich Yuriy   Цитата(Tonal @ 27.1.2010, 12:04) У git-а ...   27.1.2010, 10:28
- - Iron Bug   пока меня и svn устраивал всегда... а в чём особое...   27.1.2010, 14:25
- - Litkevich Yuriy   Цитата(Iron Bug @ 27.1.2010, 17:25) в git...   27.1.2010, 15:41
- - Iron Bug   надо подумаьть. меня не волнуют перебои связи. я с...   27.1.2010, 20:36
- - Litkevich Yuriy   Я не сказал, но это может быть важно, Git в сравне...   27.1.2010, 21:03
|- - Iron Bug   Цитата(Litkevich Yuriy @ 27.1.2010, 23:03...   28.1.2010, 12:18
|- - AD   Git(ом) не пользовался, а вот SVN-ом пользуюсь. Но...   28.1.2010, 17:29
- - Tonal   Цитата(Litkevich Yuriy @ 27.1.2010, 13:28...   28.1.2010, 8:18
- - Litkevich Yuriy   Цитата(Tonal @ 28.1.2010, 11:18) Если реп...   28.1.2010, 11:41
|- - Tonal   Цитата(Litkevich Yuriy @ 28.1.2010, 14:41...   29.1.2010, 9:11
- - igor_bogomolov   Цитата(Litkevich Yuriy @ 28.1.2010, 11:41...   28.1.2010, 11:57
- - Litkevich Yuriy   Цитата(Iron Bug @ 28.1.2010, 15:18) а оди...   28.1.2010, 14:23
- - Iron Bug   вот невозможность извлечь версию в любое место мен...   28.1.2010, 15:37
- - Kagami   Можно придумать небольшой костыль по извлечению оп...   28.1.2010, 16:08
- - igor_bogomolov   Цитата(Kagami @ 28.1.2010, 16:08) Можно п...   28.1.2010, 16:29
- - Litkevich Yuriy   Цитата(AD @ 28.1.2010, 20:29) как Git улу...   28.1.2010, 18:28
|- - AD   Цитата(Litkevich Yuriy @ 28.1.2010, 18:28...   28.1.2010, 18:30
|- - AD   Цитата(Litkevich Yuriy @ 28.1.2010, 18:28...   28.1.2010, 18:36
- - Litkevich Yuriy   Цитата(AD @ 28.1.2010, 20:29) как так, чт...   28.1.2010, 18:32
- - Litkevich Yuriy   Цитата(Kagami @ 28.1.2010, 19:08) Можно п...   28.1.2010, 18:46
- - Litkevich Yuriy   ещё один минус Git'а (на виндовозе! ) черз...   28.1.2010, 19:42
- - Litkevich Yuriy   Видимо всё таки не в проводнике а в Git Bash. Вот ...   29.1.2010, 15:09
- - Tonal   И в Фаре, и в проводнике. Ну да похоже таки почини...   1.2.2010, 9:30
- - Litkevich Yuriy   Tonal, я здесь всё таки эксплорера не вижу, а толь...   1.2.2010, 15:02
- - Tonal   В экплопёре то же самое. Такое впечатление, что gi...   3.2.2010, 8:41
- - Litkevich Yuriy   Цитата(Tonal @ 3.2.2010, 11:41) Может нуж...   3.2.2010, 11:54
- - Litkevich Yuriy   тут обнаружил, что SVN теперь стал подпроект Апача...   1.4.2010, 16:52
- - Iron Bug   поставила я ради эксперимента GIT. что сразу не по...   10.10.2010, 17:03
- - igor_bogomolov   Цитата(Iron Bug @ 10.10.2010, 18:03) что ...   10.10.2010, 18:52
- - Iron Bug   я пока всё же останусь на SVN. привычнее, работа с...   10.10.2010, 19:00
- - Kagami   У меня всегда есть копия репозитория на удаленном ...   10.10.2010, 20:57
- - igor_bogomolov   Почему вы должны использовать Git вместо Subversio...   17.6.2011, 8:43
- - panter_dsd   igor_bogomolov, хорошие статейки. Отправлю начальс...   17.6.2011, 9:21
- - panter_dsd   igor_bogomolov, хорошие статейки. Отправлю начальс...   17.6.2011, 9:22
- - Litkevich Yuriy   Цитата(panter_dsd @ 17.6.2011, 12:22) Что...   17.6.2011, 10:12
- - ufna   Не люблю GIT. Локальные копии и т.п. - это гуд ког...   17.6.2011, 10:38
- - panter_dsd   ufna, почаще push.   17.6.2011, 10:52
- - Iron Bug   Цитата(ufna @ 17.6.2011, 12:38) Не люблю ...   17.6.2011, 12:42
- - Litkevich Yuriy   Цитата(panter_dsd @ 17.6.2011, 13:52) ufn...   17.6.2011, 17:43
- - Litkevich Yuriy   Тему разделил: Вопросы по SVN   10.9.2011, 20:53
- - Litkevich Yuriy   Полезность. В связи с появлением собственного инт...   23.1.2013, 4:13
- - Iron Bug   Цитата(Litkevich Yuriy @ 23.1.2013, 7:13)...   24.1.2013, 11:44
- - Litkevich Yuriy   На сайт не могу ничего кроме типового (файлы, испо...   25.1.2013, 21:12
- - Iron Bug   блин, я забыаю, что у тебя сайт, а не сервер во м...   26.1.2013, 12:45
- - alexy   Забрел на эту тему, все не прочитал, но могу расск...   1.2.2013, 19:48
- - Iron Bug   Цитата(alexy @ 1.2.2013, 22:48) Я пользов...   1.2.2013, 20:44


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 12.6.2025, 12:24