27

Кратко:

  • Зачем нужны системы контроля версий?
  • Зачем публиковать проекты на хостингах проектов?

Я хочу опубликовать пару имеющихся библиотек. Просмотрел несколько веб-сервисов для хостинга проектов, топовым из них бесспорно является GitHub. Просто я одного понять не могу, в чем преимущество Git или того же SVN? Почему надо мучатся с Git если ты не работаешь в команде.

Вопрос не холивара ради. Я просто хотел бы уточнить почему именно Git, а не банальная загрузка проекта через ftp например? Может есть еще преимущества? Не ставьте минусы, пожалуйста, мне просто интересно мнение разбирающихся людей, не хочу пользоваться чем-то только потому, что так делают все (или большинство). Может проще банально опубликовать код у себя в блоге (на сайте) и т.д?

Nick Volynkin
  • 34,094
Sever
  • 1,823
  • 2
    Я вижу тут два вопроса: зачем нужны системы контроля версий и зачем публиковать проекты на хостингах проектов. Вас они оба интересуют или конкретный? – Nofate Jun 26 '12 at 19:57

1 Answers1

32

А у вас вас когда нибудь были файлы типа: Копия Копия диплом (2).zip, Исходники_2009-05-27.rar, Мой сайт (до обновления).7z , Мой сайт(запоротый).7z? )))

Даже если вы один, git(и github в частности)

  • позволяет хранить историю изменений проекта и вернуться в любую точку
  • интегрируется с различными сервисами и инструментами
  • позволяет прилично организовать работу над исходниками (разработка новых фич, релизы, хотфиксы, фичи на будущее)
  • способствует вашей open-source социализации, т.к. каждый пользователь github может подписаться на ваш проект, написать багрепорт, форкнуть его и улучшить, прислать патч/pull request
  • позволяет произвести впечатление на работодателя, разместив все, чем вы гордитесь в одном месте
Nofate
  • 34,603
  • меня вот тоже интересовал этот вопрос. Спасибо за развернутый ответ. – KoCaTKo Jun 26 '12 at 20:01
  • 5
    Мне вот очень нравиться подход "branch разработки". Даже если вы разрабатываете сами - крайне удобно решать не тривиальную, объемную задачу разбивая ее на отдельные части (бранчи).

    Больше всего мне нравиться магия слияния бранчей, это что-то фантастическое :)

    Мой сайт(запоротый).7z true story, только tar.gz :D

    –  Jun 26 '12 at 20:05
  • 2
    Я до этого пробовал SVN и даже CVS (!), но там не было такой гибкости и быстроты. Сейчас не представляю, как писать что-то сложнее блокнота без контроля версий даже в одиночку.

    Многие хорошо отзываются о mercurial, как о git без косяков с историей веток. Думаю его тоже стоит попробовать.

    – Nofate Jun 26 '12 at 20:11
  • @Nofate - под косяком истории веток вы подразумеваете тот миф, о том, что git удаляет историю? :) –  Jun 26 '12 at 20:14
  • Нет, не миф. Делать ли fast-forward слияние или non_fast-forward дело лично каждого (я придерживаюсь второго варианта). Но на проектах с активным бранчингом и большим количеством комиттеров (да даже уже на десятке человек) бывают разного рода заморочки. Глубокими деталями в этом плане не владею и с удовольствием бы послушал тут примеры, но на Хэшкоде народ от неконкретных вопросов в последнее время почему-то звереет.

    Участвую немного в одном open-source проекте, тим-лид часто упоминает эти проблемы. Надо будет расспросить на досуге.

    – Nofate Jun 26 '12 at 20:19
  • Спасибо, Вам. Ответ действительно очень развернутый. Понял для себя, что использовать скорее всего не буду, для меня там неудобств намного больше. Хранить версии для меня особой проблемы не создает, а работадателю можно показать свой блог (сайт) с проектами (или на флешке принести). Только скажите, пожалуйста что означает "форкнуть"? :) Дословный перевод "вилка" как-то не очень подходит. – Sever Jun 27 '12 at 04:57
  • @Server, если не секрет, чем вам неудобен github? – Nofate Jun 27 '12 at 06:07
  • @Nofate, я еще раз благодарю вас за внимание. Слишком много действий. Я хочу работать над проектом, учиться самому, делиться тем что я уже написал с другими, при этом мне абсолютно не хочеться возиться с Git, его командами, интуитивно не понятными файлами типа ".gitignore" и т.д. Мне просто хочется опубликовать проект и чтоб каждый мог его скачать при желание изменить (создать новую ветку) и т.д. Однако, я согласен, что это скорее всего дело привычки и может я все таки в будующим пойму важность (или даже необходимость) того, что сейчас мне кажется абсолютно ненужным. – Sever Jun 27 '12 at 06:33
  • @Sever возможно, покажусь чересчур категоричным, но программист, не использующий систему контроля версий - хреновый программист. Глядите на матрицу компетентности программиста в строке "контроль версий исходников".

    git pull, git branch, git add, git commit, git push - если вы считаете, что выучить эти команды - это "возиться", то у меня для вас плохие новости.

    Все просто, на самом деле! И уж не пойму, что неинтуитивного в файле ".gitignore". Одно имя чего стоит!

    – neoascetic Jun 27 '12 at 07:44
  • 1
    @neoascetic, я не хочу учить то, что на мой взгляд надуманно. Использовать "крутые команды", а тем более выучить не сложно. Я не считаю, как я заметил выше важным для себя (повторяю только для себя). – Sever Jun 27 '12 at 07:47
  • 1
    @Sever, по поводу непонятности Git-а согласен.

    Сам хотел опубликовать там, посмотрел, понял, что влет не разобраться и пошел опубликовывать на code.google.com (там SVN, с которым я работал), а можно просто положить tar в download и отдельные файлы в source.

    Что из них лучше-хуже не знаю. Мне возможностей SVN за глаза хватает (на code использовал его только co, ci).

    – avp Jun 27 '12 at 07:59
  • 1
    @neoascetic, я думаю, до SCM как и до много другого нужно дорасти (мой предыдущий работодатель до определенного момента не понимал, какой смысл тратить время на технические задания). Я не сомневаюсь, что @Server рано или поздно придет к этому. Особенно если включится в командную разработку. Все-таки в приличной пишущей организации SCM - это must. – Nofate Jun 27 '12 at 08:01
  • 1
    @avp - те, кто много работал с SVN, по определению не могут любить git, инфа 100%. –  Jun 27 '12 at 08:25
  • @AlexWindHope, по самому минимуму - все они одинаковые. Дальше надо изучать.

    Вопрос - зачем ?

    Какую VCS команда использует, ту и берешь. Или можно выбрать команду (шутка (вечно забываю эти смайлики)).

    – avp Jun 27 '12 at 08:51