Когда речь идет о размещении ваших личных одноразовых проектов, выделяется ли одна услуга и структура проекта? [закрыто]

12

Я смотрю на Google Code, SourceForge, BitBucket и GitHub, так как они кажутся крупными игроками. Я еще не разбил все функции, которые они предоставляют, но я действительно ищу место для размещения различного кода, который я пишу (мои решения для Project Euler, код, который я мог бы написать для Code Golf / Программирование головоломок Stack Exchange и т. Д.) В централизованном месте.

Итак, мой первый вопрос: для такой ситуации выделяется ли один сервис среди других?


После того, как я выбрал сервис, мне нужно выбрать способ распространения кода. Есть несколько вариантов настройки репозиториев и проектов. Один репозиторий может содержать любое количество проектов - например, у меня может быть репозиторий «Project Euler Solutions» Тома Оуэнса для всех моих различных решений Project Euler, с проектами для каждого языка и среды в каталогах в этом репозитории, другом репозитории. для моих различных решений Code Kata и так далее. Или я могу разбить что-то подобное по языку (иметь решения Project Euler на Python в одном репозитории, решения PE на Java в другом репозитории и решения Code Kata C ++ в третьем репозитории).

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

Томас Оуэнс
источник

Ответы:

10

Bitbucket.

Они предоставляют отличный сервис, частные репозитории в своем бесплатном пакете (плюс неограниченное количество пользователей) и довольно отзывчивы в своем трекере.

То же самое, за исключением бесплатных частных репозиториев, верно и для Github, но мне очень не нравится git. Это личное предпочтение, я не защищаю против мерзавца, если по какой-то странной причине ты предпочитаешь это вместо hg, то Github - совершенно правильный выбор.

Что касается того, как организовать репозитории, не смешивайте языки, если вы можете избежать этого. Большинство IDE построены на предположении, что проект построен на одном языке (за исключением веб-проектов, где ожидается сочетание языка + html, css & js). Я не говорю, что IDE не сможет справиться, просто такие функции, как автозавершение кода, будут немного медленнее, поскольку в IDE придется загружать данные о том, как обрабатывать каждый язык.

Если ваши репозитории являются общедоступными (следовательно, неограниченными), я бы выбрал репо для каждого языка для каждой схемы проекта, то есть «euler_cpp», «euler_python» и т. Д. Не имеет значения, какой сервис вы выбираете, как вы организуете свои репозитории. полностью зависит от вас.

Что касается структуры папок, для решений euler проекта:

  • Папка на проблему, если вы планируете разные решения одной и той же проблемы
  • Файл на проблему, для отдельных решений

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

Обновить:

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

В соответствии с комментарием btilly, я добавляю, что лучшая / более естественная структура должна определяться для каждого языка, поскольку у каждого языка и / или платформы есть свои собственные соглашения и практики в отношении файлов и папок.

Яннис
источник
1
Структура папок должна зависеть от языка. Человек, использующий язык сценариев, часто пишет код в одном файле, который в C / C ++ естественно записывается в несколько файлов в папке.
btilly
@ Правильно. Я добавляю ваш комментарий к ответу ...
Яннис
На самом деле я не искал конкретно, как разложить файлы в проекте, а как разложить несколько проектов в используемом сервисе.
Томас Оуэнс
@Thomas касается того, как организовать операции РЕПО ... . Традиционно у вас будет один проект на репозиторий. Вы ищете конкретные инструкции по каждой услуге?
Яннис
Что я ищу, так это любые соглашения, которые существуют в каждом сообществе, если есть что-то необычное. По моему опыту, такие вещи, как BitBucket, GitHub и SourceForge, являются скорее сообществами с нормами и соглашениями, чем просто сервисами (хотя некоторые люди используют их как сервисы).
Томас Оуэнс
3

Вы забыли один вариант - разместить свой собственный репозиторий. Действительно, до недавнего времени был единственный способ летать.

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

Уайетт Барнетт
источник
Я сделал это с VisualSVN без особой боли.
Коди Сэнд
Там было сделано это. Вы можете стать еще более эффективными с техникой turnkeylinux.org . ,
Уайет Барнетт
3

После использования Google Code, SourceForge и GitHub в разные моменты времени я бы сказал, что GitHub намного лучше, чем два других:

  • Полностью сфокусирован на реальной работе по созданию и совместному использованию кода.
  • Обработка проблем включена по умолчанию и не только проста в использовании, но и хорошо связана как с запросами кода, так и с запросами.
  • Помощь новичка превосходна, например, пошаговые инструкции по началу работы с репозиторием и обработке запросов на извлечение.
  • Не предназначен для бинарного распространения; это лучше обрабатывается специализированными сайтами, такими как PyPI.
  • Простая вики вместо того, чтобы создавать свою собственную веб-страницу с нуля.
  • Отличная поддержка подачи - единый канал для всего, что мне интересно.
  • Неформальное и, следовательно, удобочитаемое общение.
  • Очень активное развитие новых функций.
l0b0
источник
Кроме того, Github идеально подходит для хранения таких вещей, как решения Project Euler и кодирования фрагментов гольфа с помощью гистограмм.
Мэтт Эллен
1

Мои личные проекты не очень большие (много текста, нет графики), поэтому у меня есть репозитории Mercurial с мастерами в DropBox. Это быстрый способ начать резервное копирование (если DropBox исчезнет, ​​у меня все еще будет копия репозитория на каждом моем компьютере) и переносимость.

Предполагая, что у меня есть проект, который доходит до точки, где я хочу его распространить, я всегда могу переместить его в Bitbucket для большей наглядности. Это не включает код для решений Euler Project.

Дэвид Торнли
источник