Какой лучший способ для меня начать использовать контроль версий в проекте с открытым исходным кодом?


10

Было предложено взять мой проект с открытым исходным кодом из-за его размера и отсутствия навыков, поэтому я проверил Google Code и начал делать проект, и теперь он спрашивает меня, хочу ли я иметь проект Git, Mercurial или Subversion код хостинга.

Я даже не знаю, что такое кодовый хостинг, и поиск просто запутал меня еще больше в спорах между всеми этими вещами, и это стало еще хуже, поскольку Google Code спрашивает меня, какой тип лицензии я хочу.

Я думаю, что я не совсем понимаю, что на самом деле означает открытый исходный код. Может ли кто-то в значительной степени составить краткий листок для непрофессионала о том, что все это значит? Очень признателен.

Редактирование Было получено много хороших отзывов об этих трех версиях хостинга кода, но я думаю, что мне не удалось ответить на реальный вопрос: в принципе, я не знаю, как работает этот материал с открытым исходным кодом, зачем мне размещать код где-то вроде этого ? И будет ли это означать, что мне придется удалить сайт с моего текущего хостинга, или это совершенно другой тип хостинга? Что происходит, когда я делаю свой сайт открытым исходным кодом, какие права я имею, какие права я даю. Как это работает, люди просто приходят и бросают мне код бесплатно? Возможно, это глупые вопросы, и если это так, то, думаю, мне нужны глупые ответы, я серьезно не знаю, что такое открытый исходный код, за исключением концепции совместного использования кода ...



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

1
Это действительно 2 вопроса, и оба, вероятно, дубликаты. stackoverflow.com/questions/2303136/… и stackoverflow.com/questions/3859/…
sylvanaar

2
«Недостаток навыков» звучит как ужасная причина сделать что-то с открытым исходным кодом. Если у вас есть великолепная идея, но не хватает технических навыков, тогда, возможно. Я бы не стал пользоваться открытым исходным кодом, пока не нашел технически квалифицированного партнера, который готов взять на себя обязательство создавать первый фрагмент кода и который хотел бы использовать открытый исходный код.
трипл

Tripleee, не могли бы вы предложить сеть или что-то в этом роде, где я мог бы найти кого-нибудь для сотрудничества?
Натан

Ответы:


7

почему я должен разместить код где-то вроде этого?

Ключевым моментом разработки программного обеспечения с открытым исходным кодом является обмен исходным кодом. Есть несколько способов сделать это, например, поместить файлы tar / zip на веб-сервер или FTP-сервер. Такие сервисы, как код Google (или sourceforge.net, gitorious.org, bitbucket.org и многие другие) устраняют необходимость запуска собственных серверов для этой цели.

И будет ли это означать, что мне придется удалить сайт с моего текущего хостинга, или это совершенно другой тип хостинга?

Эти сервисы не являются веб-хостами общего назначения, но запускают очень специализированные сервисы. Они не предназначены для того, чтобы быть домашней страницей продукта, а скорее инструментальной панелью разработчика.

С Google Code вы получаете

  • вики
  • багтрекер
  • обычное место для скачивания файлов
  • сервер контроля версий

Конечно, вы можете установить это программное обеспечение на обычном веб-сервере (контроль версий может быть сложным, но это зависит от многих деталей), но главное преимущество использования хостинга разработки заключается в том, что вам не нужно заботиться из этих систем для вашего собственного. Основным недостатком является то, что вы не можете контролировать, какое программное обеспечение используется на сервере, вы должны жить с тем, что доступно на этом хосте. Вам также нужно подумать о том, что произойдет, если служба выйдет из бизнеса (хорошо, Google никогда не выйдет из строя), и если вы можете перенести данные с текущего хоста на другой или на свой собственный сервер (подумайте о резервных копиях).

Что происходит, когда я делаю свой сайт открытым исходным кодом, какие права я имею,

Это сложный вопрос, поскольку он зависит от законодательства страны, в которой вы живете.

какие права я отдаю.

Это зависит от лицензии, которую вы даете на продукт. Он может исходить из проприетарного открытого исходного кода (например, PGP), где пользователь в принципе ничего не может сделать с кодом, на другом конце шкалы находится общественное достояние, где каждый может делать все, что захочет.

Как это работает, люди просто приходят и бросают мне код бесплатно?

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

[...] и теперь меня спрашивают, хочу ли я, чтобы проект имел хостинг с Git, Mercurial или Subversion.

Это три разные системы контроля версий, где Subversion является централизованной, а Git и Mercurial - распределенными.

Есть религиозные войны о том, какую из них использовать, но главное - использовать одну. См. Http://martinfowler.com/bliki/VersionControlTools.html для получения более подробной информации.

Когда выбрать Subversion:

  • У вас есть двоичные файлы, которые не могут быть легко объединены, и вам нужен рабочий процесс lock-> modify-> commit-> unlock, который поддерживает subversion¹
  • Вам нужно проверить только часть структуры каталогов.

Extension Существует расширение блокировки для Mercurial, но у меня нет опыта работы с ним, и я не могу сказать, можно ли его использовать.

Когда вам не нужны прежние функции, лучше использовать Mercurial или Git. Оба имеют следующие преимущества перед Subversion:

  • быстро (а с быстрым я действительно имею ввиду быстрый )
  • простое ветвление и объединение (это стало лучше после Subversion> = 1.5, но это не одно и то же)
  • коммит и публикация отделены, так что вы можете без помех работать над функцией и публиковать работу после ее завершения
  • они отслеживают состояние каталога продуктов в целом
  • вы получаете полную копию всей истории версий при клонировании удаленного репозитория
  • криптографически защищенные номера ревизий, что означает, что даже если кто-то взломает сервер, он не сможет поставить код на место без изменения истории ревизий

    • но поскольку никто не проверяет эти ревизии, эта функция практически не эффективна

9

Хостинг кода - это именно то, где вы можете разместить (или сохранить) свой код.

Git, Mercurial и Subversion - все инструменты контроля версий, которые вы используете для управления историей кода. Git и Mercurial - распределенные системы, тогда как Subversion - более традиционная серверная установка.

Посмотрите Википедию или что-то в этом роде и посмотрите, что вам больше всего нравится. Лично мы используем Mercurial, и он работает очень хорошо для нас.


6

Джоэл Спольски написал отличный учебник по Hg (Mercurial), и я считаю, что вводный раздел охватывает Subversion, включая причины, по которым вы переходите на Mercurial. Прочитайте, это действительно помогло мне понять многое о Mercurial и DVCS в целом.

Да, и когда вы будете готовы к хостингу , вы можете использовать Google Code, BitBucket , Github (с помощью этого превосходного расширения ) или другие.


Mercurial - отличная система, она отвоевала у меня подрывную деятельность всего за несколько минут использования.
Джим в Техасе

3

Я использую git, с которым мне легче работать благодаря распределенному контролю. Hg хорош и для этой конкретной цели, но я не могу дать вам совет по этому поводу, никогда не использовал его. SVN является централизованной системой и, следовательно, менее практичной, но может быть немного проще.

Открытый исходный код в основном означает, что вы даете кому-либо возможность использовать свою работу и опираться на нее. Вы можете установить границы этого использования: GPL означает, что пользователь должен сделать свою добавленную работу открытым исходным кодом, LGPL означает, что он, например, нет.


2

Subversion будет самым простым вариантом, потому что это VCS. Git и Mercurial являются системами DVCS. Они более современные и мощные, но сложнее понять. Использование внешнего интерфейса, такого как TortoiseSVN или TortoiseHG (для Mercurial aka HG) также очень помогает.

Если ваше программное обеспечение является автономной программой, вы можете использовать GPL или действительно открыть ее с помощью лицензии BSD. Если ваш проект представляет собой библиотеку, с которой кто-то еще свяжется, используйте LGPL или снова BSD; но не используйте GPL.

[редактировать]

Что касается вашей первоначальной мотивации программного обеспечения с открытым исходным кодом: к сожалению, просто сделать программное обеспечение открытым исходным кодом не означает, что вы получите приток талантливого бесплатного труда. Существуют сотни тысяч проектов с открытым исходным кодом. Только небольшой процент из них имеют активных участников. Причины, которые делают эти проекты успешными или нет, так же разнообразны, как и то, почему компании преуспевают и терпят неудачу. Если вы хотите стать хорошим программистом и создавать хорошее программное обеспечение, вам придется потратить много времени на изучение, написание кода и общение с другими людьми на таких сайтах, как StackOverflow.


1
Почему вы говорите, что SVN самый простой? Пожалуйста, обоснуйте это утверждение.

1
@Richard: Я думаю, он имеет в виду, что его немного проще настроить и использовать для базового использования, по крайней мере, я согласен с этим согласием. Я не согласен с идеей, что ваша библиотека не должна использовать GPL, это действительно политическая позиция.
Хельдар

Используйте GPL для библиотеки, если вы хотите наложить определенные ограничения на ее использование. Используйте LGPL, если вы хотите наложить меньше ограничений.
Кит Томпсон,

0

Мне кажется, что, хотя большинство людей здесь отвечают на вопрос « как» , никто так и не ответил на вопрос « почему» в вашем вопросе.

Одним из первых проектов с открытым исходным кодом, который я испытал, был невероятный проект Fractint , который был разработан группой Stone Soup , вдохновленной старой историей о каменном супе .

Для меня это заключает в себе дух открытого исходного кода лучше, чем любая напыщенная речь Столлмана или даже оригинальный манифест GNU . Это свидетельствует о силе этого сообщества, что Fractint все еще разрабатывается спустя 23 года после того, как огонь зажегся под этим конкретным кулинарным кодом .


0

Открытый исходный код означает, что любой может читать, копировать, изменять и распространять ваш код. Вы должны иметь четкое понимание последствий этого, прежде чем продолжить. Возможно, вам следует прочитать книгу или хотя бы просмотреть статьи Википедии по этой теме и / или http://opensource.org/, пока не почувствуете, что у вас есть понимание этой концепции.

(Книга O'Reilly Open Sources http://oreilly.com/openbook/opensources/book/index.html полезна, но, возможно, не совсем то, что вы ищете.)

Какая система управления исходным кодом должна использоваться, имеет второстепенное значение. Вы можете скопировать / вставить свой код на веб-странице и все готово. Тем не менее, контроль версий важен и является хорошим средством для снижения планки для разработчиков. Любой из вариантов, предлагаемых Google Code, подойдет; выберите тот, который вам нравится, или, возможно, отложите вопрос до тех пор, пока вы не спросите своих участников, какой из них они хотели бы использовать.


0

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

В любом случае этот код должен быть доступен другим людям, чтобы получить его.

Перенос вашего кода в общедоступный онлайн-репозиторий, такой как GitHub, - лучший способ сделать это. Во-первых, ваш код теперь доступен для общественности. Затем, поскольку такие службы также предлагают контроль версий, ваш код организован по проекту. Вы можете отслеживать изменения, которые вы и другие люди делаете. Так как это также позволяет разветвлять (разделять) проект на другие проекты, вы можете отслеживать все разные версии, сделанные другими людьми из вашего кода.

Это также гарантирует, что ваш код хранится в безопасном месте, вам не нужно беспокоиться о его потере, например, из-за неисправного жесткого диска на вашем компьютере. И когда вы хотите работать над этим, вы можете работать из любого места, потому что ваш код находится в сети, вы можете найти его где угодно.

Если вы решите, что пришло время показать свой код миру, это всего лишь вопрос отправки ссылки на ваш онлайн-репозиторий проектов. Это технология, к которой привыкли люди, поэтому, поскольку все это знают, легче понять, как ее скачать, публиковать сообщения, создавать разные версии и т. Д.

Это как общий стандарт ведения дел, обычная практика.

Некоторые ссылки, которые вы можете найти полезными для дальнейшего объяснения открытого источника:


-6

Что касается системы контроля версий, я бы сказал, что вы должны придерживаться наиболее используемой и более свежей альтернативы: «Git». Mercurial менее популярен, а SVN старый, медленный и централизованный. С GIT вы сможете воспользоваться современной и популярной системой контроля версий. Там практически нечего терять.

Источники (относительно популярности DVCS):

/programming/tagged/git ~ 10k вопросов. /programming/tagged/mercurial ~ 3k вопросов.

http://www.googlefight.com/index.php?lang=en_GB&word1=git&word2=mercurial

11700000 результатов против

1580000 результатов

Что касается лицензии: возможно, вам стоит взглянуть на наиболее распространенные из них: GLP, MIT, LGPL, BSD и выбрать тот, который больше подходит вашему проекту.


7
Mercurial не является частной собственностью ... это открытый исходный код, точно так же, как Git!
Кристиан Шпехт

4
Фанатский ответ с частично неверными аргументами.
Обен Сонн

1
«наиболее часто используемые» - укажите ссылку на источник этой информации.
Сильванаар

Извините, люди ... Это просто мое восприятие вещей: я думаю, что Git более используется, чем Mercurial, и я знаю, что SVN старый, медленный и централизованный ... Интересно, ваши комментарии менее фанатские, чем мои так называемые Fanboy-ответ. Давайте, git hub использует git, ядро ​​linux использует git, каждый проект в моем отделе использует git ...
Педро Роло

2
Возможно, обилие вопросов относительно Git также показывает, что его сложнее использовать? Несколько человек использовали аналогичные данные при исследовании того, какие фреймворки веб-разработки были наиболее «популярными», где был затронут тот же вопрос (комментируя неточности).
Тим Пост
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.