Ты вполне умеешь управлять своим кодом с помошью архиватора, и прекрасно понимаешь, какое имя архива соответствует состоянию твоего проекта.
Ты вполне в состоянии разархиваровать именно тот архив, который содержит то состояние проекта, на которое нужно откатиться, а потом создашь новый архив, немного отличающийся от архива версии 2.0, и назовёшь его в2.1+фича1_и_2_из в1.арх
Потом, о щастье, в твоём проекте появился поддаван или даже партнёр.
Ты, конечно, сможешь ему объяснить, что имя архива нужно читать так:
первые символы номер текущей версии, а какие-то тонкости можно описать в оставшихся символах имени архива, или в комментариях к архиву.
Просто всё это пройдено разработчиками Linux-а, за много-много лет (с 1991 года, посчитай сам).
И чтобы не придумывать все эти правила, разработчики Linux решили сделать штуку, которая будет понятна всем, кто хочет понять, и даже дать эту штуку любому желающему (даже если ты разработчик не Linux, а, например, 1С, или Postgress, или твоего личного нового Гуглобука).
И да, ты если разработчик, и ищешь работу, вряд ли ты найдёшь нормальную работу в конторе, которая не использует Git.
Хуже другое… Если ты найдёшь контору, в которой не используется Git — ты попал не в ту контору.
И если эта статья оказалась для тебя, просто почитай вот это
git-scm.com/book/ru/v1
(я читал это раза 3, прежде чем)
UPD: ребят, тут комменты были в виде
> Стиль изложения и отношения к пользователям других VCS
Этот пост не про другие СУВ, это пост про то, что начинающие программисты не используют никакую СУВ ваще! ;)
А если контора использует СУВ не Git — ага, это таки призначек
Чмаки всем в этом чате
Комментарии (93)
AllexIn
14.08.2015 17:12+21А в моей конторе Ртуть используется. А в личных проектах — SVN.
«Я могу обойтись без Git-а, ага»
maaGames
14.08.2015 17:14+15Пользователи _________________(вставить название своей любимой системы контроля версий) смотрят на вас, как на _________(заполнить в меру своего воспитания).
vnaz
14.08.2015 17:19-27И что, есть более правильные в современном мире СУВ, чем Git?
vedenin1980
14.08.2015 17:21+21В мире IT нет ничего правильного и неправильного, есть только то что полезно использовать в определенных случаях. А термина СУВ нет вообще.
AllexIn
14.08.2015 17:23+1Правильные для чего?
К примеру мне надо уметь externals подключать, причем не весь репозиторий, а только один каталог из него. Git умеет? А SVN умеет.
Причем не надо думать что я против Git. Я за то, чтобы выбирать инструмент, который задачу решает, а не фанатеть от одного и не пользоваться другими только из-за своего фанатизма.vnaz
14.08.2015 17:28-8Git умеет… Пакеты называется
AllexIn
14.08.2015 17:37+1Ого! Удивили! Что, кроме submodules появился другой инструмент? Это интересно.
А ссылочку на документацию не дадите? А то что-то не гуглится.vnaz
14.08.2015 17:43-16bower
composer
NPM, внезапноAllexIn
14.08.2015 17:46+5Простите, что ЭТО?
речь о подключении части другого репозитория. С возможность работать с ним через VCS, со всеми фишками типа коммитов и дифа. А вы предлагаете инструмент, который тупо подтаскивает нужные зависимости…
Или вы что-то не понимаете, или я…vnaz
14.08.2015 18:04-15Git умеет держать много лет много версий Linux-а…
Наверное, ничего не понимают разработчики Linux-аAllexIn
14.08.2015 18:06+5Вы вообще поняли о каком функционале я спрашивал?
Вы в курсе как работают submodules в Git? У submodules есть ограничение — подключить можно только репозиторий целиком.
Так вот, есть у Git инструмент с тем же функционалом что и submodules, но БЕЗ этого ограничения?
P.S. Причем тут Линукс, вообще, кстати?vnaz
14.08.2015 18:20-18при том, что такая мелочь, как самое популярное ядро ОС при разработке использует Git
degorov
14.08.2015 18:21+2Ядро ОС не является типичным проектом. Тех же игр, про которые ниже пишут, на порядки больше, чем ядер ОС в мире ;)
AllexIn
14.08.2015 18:22+6И что? Или у вас логика работает на уровне «Linux использует Git, а они ж не дураки, значит дураки те, кто не использует Linux».
При чем тут Линукс вообще?
Я попросил решение конкретной проблемы, вы зачем-то Линукс сюда приплели, а озвученную проблему проигнорировали…
REZ1DENT3
14.08.2015 18:21+3P.S. Причем тут Линукс, вообще, кстати?
Я думаю слово интересное ) Ну нравится человеку, что поделать? ;)
avolver
15.08.2015 11:02+4Git умеет работать с «подмодулями» (submodules) и часть репозитория склонировать тоже можно. В терминологии git — это называется sparse checkout: документация, пример использования.
maaGames
14.08.2015 17:26+8Дайте определение слову «правильные» (с) сериал «Посредник»
Практически на любой аргумент в пользу Git, относительно (например)SVN, можно привести контраргумент. Но и на любой аргумент в пользу SVN, относительно Git, так же можно привести контраргумент. Потому что у них диаметрально противоположная идеология использования. Слабые стороны одного являются сильными сторонами другого. И наоборот. А при определённых юзеркейсах они оба сосут у Ртути. А с Солнечной стороны к ним подкрадывается TFS со своими аргументами, тщательно смазанными лубрикантом…
Спор о «правильной» VCS ещё более глупый, чем спор о том, какой ЯП лучше#.
Apx
14.08.2015 17:19+25Мне интересно это статья для розжига холивара vcs систем или кто-то просто после пятничного пива упал лицом на клавиатуру и случайно получился этот пост? (статьёй это назвать сложно...)
vnaz
14.08.2015 17:38-16нет, это статья для тех, кто обходится без СУП, для, извините, начинающих разработчиков…
Если вы не можете оторваться от SVN до сих пор, или вдруг юзаете «Ртуть» по каким-то личным предпочтениям — вовсе не обязательно минусовать посты про то, что нужно использовать хоть какую-то СУВ. А хоть какая-то для начинающих сегодня — только и только Git
(ну, извините, динозавры, если вашу любимую задел)lair
14.08.2015 17:44+3это статья для тех, кто обходится без СУП, для, извините, начинающих разработчиков…
Дадада, особенно с пассажем «если ты найдёшь контору, в которой не используется Git — ты попал не в ту контору».
Evengard
14.08.2015 17:44+4Интересно почему hg вы считаете динозаврной…
vnaz
14.08.2015 17:51-9нет, динозавра — это SVN…
Меркуриал — просто специфическая штука… и, да, наверное, для специфичеких людей она лучше…
Есть просто такой момент, как: все делают в одну сторону, а самые умные — в другую…
но это тема отдельной статьи :)yar3333
15.08.2015 00:36+5Чего-чего? Меркуриал — специфичная штука?? Насколько я знаю, в бизнес-среде он используется куда чаще, чем git. У него, в отличие от git, есть очень даже юзабельный GUI. Если он не мейнстрим в open-source разработке, то, как мне кажется, лишь потому, что так сложилось, но уж точно, не потому что он «специфичный».
REZ1DENT3
14.08.2015 17:36+6Из «статьи»:
И если эта статья оказалась для тебя, просто почитай вот это
git-scm.com/book/ru/v1
(я читал это раза 3, прежде чем)
Видимо прежде чем совершить хабро-самоубийство ;)
p.s.
Извините зато, что назвал этот пост статьей…
demist
14.08.2015 17:42+6прощай, vnaz… это явно хабро-самоубийство…
а я ведь еще помню Ваш пост про MVC… но тогда не получилось…
ToSHiC
14.08.2015 17:47+1У гита есть одна проблемка, в него нельзя положить много кода. Много — это несколько гигабайт, если что. Это одна из причин, почему в гугле используется не он, а другая система контроля версий.
vnaz
14.08.2015 17:57-10если вам в репо нужно класть гигабайт кода — это проблема Git-а?!
давычо?!!!AllexIn
14.08.2015 17:59Ну ок. Мне нужно не гигабайты кода туда класть, а гигабайты ресурсов. Скажем мы делаем игру и выбирем VCS для нее. Какую порекомендуете?
Я встречался с индивидами, которые считают что ресурсам контроль версионности не нужен, или как максимум хватит архивов с подписями. Но вы же не такой, да? И сейчас, уверен, предложите отличное решение.vnaz
14.08.2015 18:11-14ну, хорошо, если вы пишете игру с гигабайтами версионности, может, Git не подходит…
Много ли людей пишут игры с гигабайтами ресурсов?
(а статья/пост, ваще-т, для программеров, а не для других специфических разработчиков)AllexIn
14.08.2015 18:17+1Все геймдевелоперы пишут игры с гигабайтами версионности. К примеру, один только пакет ресурсов для магазина Steam весит около 200 мегабайт. Не говоря уж о незапакованных ресурсах.
Даже ресурсы мелкой аркады под гиг занимают. Что-то более серьезное — гораздо больше.
пост, ваще-т, для программеров, а не для других специфических разработчиков
С каких пор программисты живут в своем отдельном мире? Все программисты работают над проектами. И, внезапно, в этих проектах участвуют не только программисты.
zo_oz
14.08.2015 18:19+10Один ваш комментарий лучше другого, если честно :D
Обороты геймдева? Количество геймдев компаний? Количество разработчиков в геймдев компаниях? А что такое программер, а что такое другой специфический разработчик?
Честно говоря у меня просто создается впечатление, что вы нагло троллите бедных людей, которым приходится что-то объяснять аргументированно, а вам пофиг, сидите дальше ржете над нами.
slonopotamus
14.08.2015 21:32+1В гит можно положить гигабайты игры, мы это сделали и счастливы.
yse
15.08.2015 11:13Сколько времени занимает клон проекта с гигабайтами игры?
slonopotamus
15.08.2015 11:35Часа два. Через SVN игра такого же размера вычекивается заметно медленнее. При этом мы сейчас работаем над интеграцией git-lfs в нашу инфраструктуру и думаем уменьшить время клонирования минут до десяти, выкинув блобы (в основном, текстуры) в git-lfs.
novoxudonoser
16.08.2015 02:06Вот кстати очень достойная штука www.plasticscm.com/pricing.html (чегота ссылка не вставляется)
senia
15.08.2015 11:24Я тут на днях клонировал git реп на 500 метров. Клонирование несколько раз падало с ошибкой. Плюнул и склонировал без истории (--depth=1). Время не засекал, но было долго.
Реп с доками к проекту. Отдельных тяжелых файлов там нет.yse
15.08.2015 11:41У нас репа пару гигабайт, а с историей все 70. Часто приходилось шаманить со всякими настройками, чтобы не падало клонирование (количество потоков, размер окна и проч.). Потом это надоело, вот думаем, на что переложить хранение ресурсов. Западены вроде используют какие-то платные решения, ибо где-то читал, что сами разработчики гита не сильно советуют хранить большие объёмы.
xaizek
15.08.2015 15:29Есть же команды вроде git-annex, git-bup, git-fat. Я что-то подобное использую, но судя по всему оно проприетарное и непубличное. Суть в хранении внутри файла хеша или пути к реальному файлу и замещению его содержимым при git-checkout. Оно хуками/атрибутами всё прозрачно делает. Сами большие файлы при этом храняться где-то в другом месте, доступном по сети, и дополнительно выкачиваются для ускорения на будущее, т.е. после инициализации репозитория оно просто работает.
Fedcomp
15.08.2015 16:32Не все проприетарное. Гитхаб уже анонсировал у себя git-lfs, выше это название уже проскакивало.
Вот кстати и он git-lfs.github.com сам правда не юзал.
И вроде гитхаб или уже использует, или планирует это использовать.
Dolios
15.08.2015 14:49+1Я понимаю, что ваш вопрос был с подколкой, но, если вам действительно интересно, для ресурсов порекомендую использовать digital asset management systems. Я не знаю, как они по русски правильно называются. Например, посмотрите на Alienbrain, контроль версий там точно есть. Пишу про Alienbrain, т.к. приходилось с ним сталкиваться, возможно есть и более хорошие решения.
zo_oz
14.08.2015 18:06+2ну очевидно, что это проблема VCS, а не моя, у меня проблем нет, я просто выберу другую VCS.
Или типа гигабайты кода это что-то из ряда вон выходящее и говорящее о статусе программиста\ов? Ну давайте прикинь на каком объеме кода работает экосистема гугла… git всё еще самое верное решение, да? без него никуда да?
ToSHiC
14.08.2015 18:29Я же не написал, что один файл размером в гигабайты. Файлов много, каждый может быть вполне себе нормальных размеров, но суммарно получается уже много. А если вспомнить ещё и про то, что нужно про все предыдущие ревизии тоже помнить… В итоге клонирование репозитория легко может занять часы.
AMDmi3
14.08.2015 18:45+1Ну если говорить именно о коде, то лучше git как раз пока не справляется никто. svn я не вижу смысла рассматривать — в нём чекаут одной ревизии занимает больше места чем вся история + чекаут в git и крайне неэффективно лежит на диске, а любая операция требует сети и занимает уйму времени (привет svn log --diff). Кроме того, он не умеет важной фичи которую умел даже cvs: обновляться из одного репозитория, а коммитить в другой, что позволило бы ускорить работу с далёким (в смысле пинга) репозиторием с помощью локального зеркала. У hg таких глобальных проблем нет, но он просто медленнее. Это всё показала практика работы с репозиториями FreeBSD (гигабайт чекаут, гигабайт полная история сжатая git).
А что до гугла — то не знаю как сейчас, но когда я там работал там использовался perforce. И это был просто невообразимый ад.AllexIn
14.08.2015 18:50-2Локальные размеры разве имеют какое-то значение? Пара лишних гигов — ни о чем.
Что мешает обновиться из одного SVN репозитория и коммитить в другой? Relocate отменили?AMDmi3
14.08.2015 19:05+1> Локальные размеры разве имеют какое-то значение? Пара лишних гигов — ни о чем.
О чём. Во-первых, эти пара гигов определяют влезут ли горячие данные в кэш файловой системы, и будет ли скорость работы с репозиторием определяться диском или памятью. Во-вторых, даже касательно дисков на таких объёмах они имеют значение — у меня на ноутбуке ssd забит в основном репозиториями, и 1.5 раза это большая разница. В-третьих, если уж собрались сравнивать, то напомню что со стороны git мы считаем полную историю, а я даже не хочу знать сколько места будет занимать вся svn история такого репозитория. В-четвёртых, просто неплохой показатель адекватности vcs.
> Что мешает обновиться из одного SVN репозитория и коммитить в другой? Relocate отменили?
Вы серьёзно предлагаете relocate перед и после каждого коммита?AllexIn
14.08.2015 19:08-1>>Вы серьёзно предлагаете relocate перед и после каждого коммита?
Нет, не предлагаю. Лишь указываю на фактическую возможность. В целом я отношусь к тому типу людей, которые вообще не делают локальных бэкапов в силу использования фонового бэкапера, который позволяет без использования VCS откатиться на любой момент времени.AMDmi3
14.08.2015 19:11+2> Лишь указываю на фактическую возможность.
Ну так на практике от этой возможности толку нет.
> В целом я отношусь к тому типу людей, которые вообще не делают локальных бэкапов в силу использования фонового бэкапера, который позволяет без использования VCS откатиться на любой момент времени.
VCS не имеет отношения к бэкапам.AllexIn
14.08.2015 19:17-1>> VCS не имеет отношения к бэкапам.
Верно. Но функционал локальных коммитов в 90% случаев совпадает с бэкапами.encyclopedist
14.08.2015 20:58Представьте, что мне нужно держать 5 экземпляров одного дольшого-большого репозитория в разных состояниях (например, на разных ветках). С git и hg я могу один раз сделать пулл с удалённого сервера, а в остальных 4 сделать пулл с первого. Более того, эти репозитории не буду занимать в 5 раз больше места, потому что при локальном клонировании git и hg умеют использовать хардлинки.
AllexIn
14.08.2015 21:05Я не агитирую за SVN. Я лишь указал, что не сталкивался с указанными минусами SVN, потому что нет требований(лично меня) которым бы он не удовлетворял.
На мой взгляд, выбор VCS — достаточно сложная вещь и идеальной VCS пока нет.
Я выбрал SVN для личных проектов, потому что мне нужны были externals из каталога репозиториев и только SVN мне это дал. При этом я понимаю что в больших компаниях он не будет так удобен как раз из-за отсутствия возомжности локального коммита. У меня то такого поняти нет, учитывая что SVN находится на моем сервере и всегда доступен.
AMDmi3
14.08.2015 21:30+1> С git и hg я могу один раз сделать пулл с удалённого сервера, а в остальных 4 сделать пулл с первого
JFYI, свежий git умеет несколько рабочих директорий из одного репозитория, т.е. pull нужно делать только один раз.
thunderspb
14.08.2015 18:01+2Помоему это не на этот сайт, а на какой-нибудь zadolba.li или ithappens.me, что лучше подходит… Ну или в бложик личный…
AllexIn
14.08.2015 18:02-1ИМХО чувак пиарит книгу. Стиль изложения и отношения к пользователям других VCS очень пересекается в книге и текстах «автора».
Color
14.08.2015 18:16+1Давненько такого не было :)
Если пишете на хабре, пишите хоть аргументы какие, сравнения, или хоть что-то.
А статьи вроде «ты не используешь git, а знаешь какой он крутой», как мне кажется, для другой аудитории.
Читатели хабра (я надеюсь) давно знают про разные VCS, про их преимущества и недостатки в сравнении друг с другом. Все-таки большинство с этим каждый день работает…
Это как прийти на сайт маляров, и сказать: «ты знаешь, что можно красить КИСТОЧКОЙ?»vnaz
14.08.2015 18:26-11Почти верно, только статья про то, что «Ты знаешь, что кисточки можно хранить так, что любой маляр, которому ты дашь доступ, сможет пользоваться твоей кисточкой так, что не насрёт на твоё полотно»…
Почувствуйте разницу, если :)
lair
14.08.2015 18:42+3А если контора использует СУВ не Git — ага, это таки призначек
«Призначек» чего?
JIghtuse
14.08.2015 18:55+22А что, толковая статья. Можно sed'ом (я могу обойтись без sed-а, ага) заменить «Git» на другое слово — и готово, можно новую статью публиковать. Я вот пару заготовочек сделал.
DockerЯ могу обойтись без Docker-а, ага
Разработка*
Конечно… Если ты умеешь програмировать, зачем тебе Docker?
Ты вполне умеешь управлять своими машинами с помошью скрипта, и прекрасно понимаешь, какое имя контейнера соответствует состоянию твоего проекта.
Ты вполне в состоянии запустить именно тот контейнер, который содержит то состояние проекта, на которое нужно откатиться, а потом создашь новый контейнер, немного отличающийся от контейнера версии 2.0, и назовёшь его в2.1+фича1_и_2_из в1.арх
Потом, о щастье, в твоём проекте появился поддаван или даже партнёр.
Ты, конечно, сможешь ему объяснить, что имя контейнера нужно читать так:
первые символы номер текущей версии, а какие-то тонкости можно описать в оставшихся символах имени контейнера, или в комментариях к контейнеру.
Просто всё это пройдено разработчиками Linux-а, за много-много лет (с 2013 года, посчитай сам).
И чтобы не придумывать все эти правила, разработчики Linux решили сделать штуку, которая будет понятна всем, кто хочет понять, и даже дать эту штуку любому желающему (даже если ты разработчик не Linux, а, например, 1С, или Postgress, или твоего личного нового Гуглобука).
И да, ты если разработчик, и ищешь работу, вряд ли ты найдёшь нормальную работу в конторе, которая не использует Docker.
Хуже другое… Если ты найдёшь контору, в которой не используется Docker — ты попал не в ту контору.
И если эта статья оказалась для тебя, просто почитай вот это
ru.wikipedia.org/wiki/Docker
(я читал это раза 3, прежде чем)encyclopedist
14.08.2015 21:02+1(в кэше гугла, так как с лурком какие-то проблемы).
— видимо связано с этим
saboteur_kiev
14.08.2015 19:14+1Хм. Почему солнце зажглось именно на GIT? Да он хорош и популярен, но автор незнает, что еще до разработки Linux уже существовали системы контроля версий? Тот же CVS старше Линукса.
stepik777
14.08.2015 20:08Лучше уж Линуса Торвальдса послушать, где он рассказывает, почему git лучше всех, а SVN писали идиоты:
Tech Talk: Linus Torvalds on gitPHmaster
14.08.2015 23:57+16Все это клёво, но кто такой «поддаван»? У меня есть несколько версий, но что-то я в них сомневаюсь:
1. Собутыльник («поддавать» в одиночку — признак алкоголизма);
2. Просто вечно «поддатый» сотрудник;
3. Тот, кто придет и «наподдаст» за то, что юзаешь СУВ не Git.
На этом мои варианты исчерпаны =/phprus
15.08.2015 12:40+94. «поддаван» — это помощник парильщика в бане, который отвечает за то, чтобы вовремя или по команде парильщика поддать парку.
Wedmer
15.08.2015 04:40-1В зависимости от проекта использую git, svn, mercurial, bazaar… Но душа лежит к fossil.
Аргументы приводить не буду, ибо смысла нет.
klikalka
15.08.2015 17:08-1Ну, автор! Ну, блин жеж! Даже я так не палился, почти совершив двойной хабрасуицид…
Ну ведь даже иэ этой темы можно было бы выжать что-нибудь интересное. Историю поучительную написать, рассказ. Примеры привести. Ну хоть сам берись, сиди и пиши.
Я понимаю, конечно, что на волне эйфории/злости/прочих_чувств_и_стремлений можно много чего захотеть понаписать и свои ошибки самому себе видно хуже чем ошибки других… Но посту ровно сутки уже, а он до сих пор висит.
Давненько такого не было… Хорошо ещё что на ГТ, а не на «основном» портале.klikalka
15.08.2015 17:14*вот… блин… не знаю с чего я решил что это пост на ГТ… верно, не выспался сегодня… Тогда вообще понять не могу как пост попал в ленту. Неужели, модераторы решили саморасстрелу не мешать?*
seokirill
15.08.2015 18:56+3Смутное ощущение, что автору подарили акаунт. Каждый комментарий можно перефразировать в «накидайте минусов, кому не жалко».
aydinka
Что это?
vnaz
это пост на Хабре, у вас какие-то сомнения в этом?
fedor1113
novoxudonoser
Ну это както маловато для поста что ли, если бы вы привели больше велосипедных решений, проблем с ними и способов как этого избежать с помощью сиcтем контроля версий было бы лучше. И скорее всего пост мало полезно местной аудитории, это больше выглядит как неудачный понт перед {{subjekt}}.
franzose
Ага, слово в слово еще до того, как ваш комментарий увидел.
gwer
Дайте угадаю вы хотели повторить это?
valplo: Что это, Бэрримор?!
withkittens: Это реабилитационный пост от пользователя с отрицательной кармой, сэр.
valplo: И что он тут делает, Бэрримор?
withkittens: Собирает минусы, сэр.
Alesh
Пятница вечер, сэр)