Обновить
44
Артем Навроцкий@Bozaro

Программист

12
Подписчики
Отправить сообщение
Исходные данные художников лежат в Subversion.
Там безумные объемы и нет таких жестких требований к соответствию данных и кода.
Время на разработку ушло не большое — вся история есть на GitHub.
  • начало разработки: 11 августа 2014 года.
  • первая относительно рабочая сборка: 27 августа 2014 года (спустя 16 дней после старта).

Разработка по остаточному принципу. Задействовано два человека.
Сама идеология мастер-мастер репликации порождает кучу вопросов:
  • как делать коммит-хуки?
  • какой репозиторий первичен?
  • как происходит одновременный коммит через Git и Subversion?
  • как делать резервную копию без остановки сервиса?
  • как восстановится соответствие репозиториев друг-другу, если в час X отключить питание?
  • что делать, если один из репозиториев умрет?

Мы не знаем, на них ответов и это нас останавливает.

Но, справедливости ради, пока мы тыкали в него палочкой, он вел себя стабильно.
Под Windows нет официальной 64-х битной версии Git-а.
Есть не официальная сборка: github.com/slonopotamus/wingit
Я допускаю, что Perforce — хороший инструмент.

Но, такова жизнь: пока не появится в команде хоть кто-то, кто с ним работал ранее, вероятность его использования минимальна.

Буду очень признателен, если предоставите хоть какой-то внятный обзор на тему «почему Perforce — хорошо».
4 Гб это смешной размер. Он даже много меньше моей рабочей копии.

Лично у меня, git-репозиторий раздувался до ~250Гб (получен через git svn, рабочая копия ~30Гб). Git его вполне нормально переваривал. Mercurial, к слову, развалился на гораздо меньших объемах.

Но нужно отметить, что 32-х битная сборка git-а не может с ним ничего сделать.
WEB-морда красивая, но наших проблем она не решает.
В конечном счете, git-as-svn крутится на машине с gitlab-ом и все счастливы.
Для того, чтобы Perforce попал в список рассматриваемых вариантов, кто-то должен был его предложить и объяснить, почему он лучше. Таких людей не оказалось.

Беглый взгляд на Perfoce не выявил никаких преимуществ. К тому же очень настораживает тот факт, что данные о рабочей копии лежат на сервере. То есть для нормальной работы требуется подключение к серверу, причем быстрое.
GitLab, в отличие от GitHub, не позволяет работать с Git-репозиторием через Subversion-клиент.
Да, бинарные ассеты.
Это боль, страдание и унижение.
А какие есть альтернативы?

Мы рассматривали варианты:
  • Использовать всем Subversion.
    Разработчки могут использовать git svn или аналоги, но он не дает возможности работать вдвоём над одной фиче-веткой. Плюс боль и страдание с ветками стабильных версий
  • Использовать всем Git.
    Не вышло. Производительность падает, а недовольство растёт.
  • Использовать SubGit.
    Есть опасение, что мастер-мастер связка репозиториев развалится в самый неподходящий момент.
  • Переезд на GitHub.
    Не подходит, т.к. репозиторий должен быть внутри компании.
  • Переезд на GitHub Enterprice.
    Дорого.
  • Распилить на два репозитория.
    Нужны дополнительные телодвижения для того, чтобы поддерживать соответствие между ними. Особенно тяжело будет при работе со стабильными ветками для боевого кода.
  • Написать git-as-svn.
    Нужно время на разработку и поддержку.


Все варианты — дрянь. Приходилось выбирать меньшее зло.
Основная проблема: «Git не даёт никаких преимуществ и создаёт дополнительные проблемы, если файлы не поддаются мержу» свойственна всем распределенным системам контроля версий, в том числе и Mercurial-у.
Согласен.
В Git и Subversion разный workflow. И нашей целью было совместить оба варианта.
Есть еще красивая обучалка:
pcottle.github.io/learnGitBranching/
Если данные нельзя мержить, то Git лишь добавит им проблем без какой-либо выгоды.
Хуже того: же они будут лишены механизма блокировок, который ранее снижал вероятность получения конфликтов.
Основную боль в Subversion вызывает то, что нельзя сохранить в системе контроля версий какой-либо промежуточный результат крупных изменений (к примеру: я поменял 100500 файлов, починил компиляцию, но не починил тесты) без разламывания общей версии.
Так же при обновлении нельзя откатиться до состояния «до обновления», т.к. надо разрешить все конфликты любой ценой — обратной дороги нет.
Теоретически это должно решаться ветками, но в Subversion это крайне неудобный механизм.
Дизайнеры не работают с кодом, они работают с данными.
Данные и код сильно взаимосвязаны. Из-за этого желательно держать их в одном репозитории.

Пример из жизни:
  • программисты пишут блоки для игровой логики;
  • дизайнеры составляют используют эти блоки для описания поведения игровых предметов.
У Git нет официального консольного клиента для 64-х битной платформы.
Мне известен только один свежий 64-х битный клиент: github.com/slonopotamus/wingit/releases

Так как Git использует паки через отображение файла на память, использование 32-х битной сборки накладывает серьезное ограничение на размер репозитория.
У Git нет официального консольного клиента для 64-х битной платформы.
Мне известен только один свежий 64-х битный клиент: github.com/slonopotamus/wingit/releases

Так как Git использует паки через отображение файла на память, использование 32-х битной сборки накладывает серьезное ограничение на размер репозитория.
12 ...
8

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность