Git Server Нравится GitHub?

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

Однако мне нравится идея центрального сервера, который может выполнять роль резервных копий, системы записи и т. Д., И в то же время использовать Git для локального ветвления и совместного использования. Я не занимаюсь проектом с открытым исходным кодом, поэтому я не могу использовать Github (без оплаты), поэтому мой вопрос на самом деле: каков наилучший способ запуска локального сервера git?

Я понимаю, что это может противоречить стандартному шаблону использования Git, но это будет полезно для моего проекта. Любые проблемы, которые я мог упустить, всегда приветствуются.

Спасибо!

19 ответов

Решение

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

  1. Найди где-нибудь поставить репозиторий (/var/gitroot например).
  2. Создать новый репо (mkdir project.git && cd project.git && git init --bare --shared=group).
  3. Затем на вашем клиенте, клонировать удаленного репо (git clone ssh://yourserver.com/var/gitroot/project.git && cd project)
  4. добавить несколько файлов (git add README)
  5. совершать (git commit -m "Initial import"),
  6. От себя (git push origin master)

Это должно настроить вещи для вас.

Gitorious - это веб-интерфейс с открытым исходным кодом для git, который вы можете запускать на своем собственном сервере, очень похоже на github:

http://getgitorious.com/

Обновить:

http://gitlab.org/ теперь является еще одной альтернативой.

Обновление 2:

Gitorious теперь присоединился к GitLab

Попробуй GitLab

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

Это программное обеспечение с открытым исходным кодом (лицензия MIT) и является наиболее установленным программным обеспечением для управления git с более чем 25 000 установок. Он имеет ежемесячные выпуски и активное сообщество с более чем 375 участников. Вы можете иметь неограниченное количество частных, внутренних и общедоступных репозиториев на своем собственном сервере. Это приложение Ruby on Rails, которое работает на большинстве платформ Unix.

Если вы не возражаете против использования командной строки, gitolite - это абсолютное удовольствие при работе в корпоративной среде, где вам нужно установить разные права доступа в разных репозиториях. Это своего рода более новая версия Gitosis, упомянутая @Chris.

Вот резюме с сайта автора:

Gitolite позволяет использовать одного пользователя на сервере для размещения множества репозиториев git и предоставления доступа многим разработчикам без необходимости предоставления им реальных идентификаторов пользователя или доступа к оболочке на сервере. Основное волшебство в этом - доступ к ssh через pubkey и файл author_keys, а источником вдохновения стала старая программа под названием gitosis.

Gitolite может ограничивать тех, кто может читать (клонировать / извлекать) или писать (выдвигать) хранилище. Он также может ограничивать, кто может подтолкнуть к какой ветви или тегу, что очень важно в корпоративной среде. Gitolite может быть установлен без рут-прав и без дополнительного программного обеспечения, кроме самого git и perl.

У него достаточно обширный набор функций, но мне очень нравится то, что ежедневное редактирование конфигурации выполняется через специальный репозиторий git. То есть добавление пользователя просто

  • Добавить пользователя в файл конфигурации
  • Добавьте ключ ssh пользователя
  • Зафиксируйте изменения
  • Нажмите это, чтобы gitolite
  • Вуаля, конфигурация живая!

А при необходимости просматривать код через браузер, gitolite поддерживает "синхронизацию" конфигурации с gitweb. Или, если вам нравится cgit, который является очень хорошим веб-интерфейсом для git, написанного на C, лучше, тогда вы должны взглянуть на это с практическими рекомендациями.

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

Браузер Bare Bones

git instaweb --httpd=webrick

из мерзавца scm book

объединить это с чем-то вроде подхода, описанного здесь для распределенной разработки (благодарность датагроку за хорошо описанную концепцию)

Запустите одноразовый сервер git из любого локального хранилища.

Я уже написал в Твиттере, но я подумал, что это может использовать некоторое расширение:

Включить децентрализованный рабочий процесс git: git config alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"

Допустим, вы используете рабочий процесс git, который включает в себя работу с основным "официальным" репозиторием, в который вы извлекаете и переносите свои изменения. Я уверен, что многие компании делают это, так же как и многие пользователи Git-хостинга, такие как Github.

Скажем, этот сервер, или Github, немного отключается.

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

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

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

Или вместо простоя, что если вы и ваш соавтор находитесь в поле, и по какой-то причине у вас нет возможности подключить VPN к официальному репо?

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

Что ж, git, как вы, наверное, знаете, является "распределенной" системой контроля версий.

Даже если вы можете использовать центральный "официальный" репозиторий git в своем рабочем процессе, у вас все еще есть возможность использовать git в одноранговой манере, где вы и ваш соавтор просто создаете и делитесь коммитами друг с другом, а центральный Сервер никогда даже не должен знать.

Итак, как вы получаете свои ветви и коммиты к ним, или наоборот?

  • Вы можете использовать средства Git для отправки патчей по электронной почте. Но это немного не элегантно и требует определенных знаний о том, как применять исправления по электронной почте.
  • Вы можете создать учетную запись на своем компьютере, чтобы ваш соавтор мог в нее войти. Но, возможно, у вас нет локального корневого доступа, или, возможно, вы не доверяете им доступ SSH к вашему ящику.
  • Вы можете клонировать свой репо на флеш-накопитель и передавать его туда и обратно. Но это довольно утомительно, особенно если вы находитесь в той же локальной сети, и вам требуется флэш-накопитель.

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

Инструмент, который позволяет это git daemon, который имеет много опций и функций, но с целью включения этого простого одноразового "просто подайте в репо, в котором я нахожусь", способ использовать его - создать псевдоним. Мне нравится это называть git serve, Бежать:

git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"

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

Используйте свой новый git serve вот так:

  1. Бежать git serve, "Готов грохотать", - сообщит он. Мерзавец плохой
  2. Узнайте свой IP-адрес. Скажи, что это 192.168.1.123.
  3. Скажи: "Эй, Джейн, я не готова / не в состоянии выдвинуть эти коммиты до начала, но вы можете загрузить мои коммиты в свой клон, запустив git fetch git://192.168.1.123/"
  4. Нажмите Ctrl + C, если вы не хотите больше обслуживать этот репо.

Вы также можете сказать Джейн git clone git://192.168.1.123/ local-repo-name если у нее еще нет клона репозитория. Или используйте git pull git://192.168.1.123/ branchname сделать выборку и объединить сразу, полезно, если вы работаете вместе над функциональной ветвью.

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

Но это не супер опасно, потому что по умолчанию доступно только для чтения. Прочитайте git daemon Если вы считаете, что хотите разрешить доступ для записи, обратитесь к man-странице. В случае, если вы хотите получить коммиты вашего соавтора, гораздо безопаснее оставить его только для чтения и попросить вашего соавтора также выполнить эту команду, чтобы вы могли извлечь из них.

Тангенциально связанные: на тему одноразовых серверов, если вы хотите временно поделиться кучей статических файлов по HTTP: python -m SimpleHTTPServer

Если вам нужен хороший, легкий GIT сервер, чем вы должны попробовать GitBlit. Также я использую Gitolite, но это только сервер, с GitBlit вы получаете все в одном, сервер, администратор, репозитории. менеджер... URL: http://gitblit.com/

https://rhodecode.com/ - это веб-приложение с открытым исходным кодом для Git & Mercurial, которое можно очень легко установить в любой операционной системе (включая установщик).

RhodeCode (новая версия называется RhodeCode Enterprise) добавляет недостающие функции Git, такие как просмотр кода, и, как правило, очень быстро и надежно.

Вы даже можете установить GitHub на свой локальный сервер (но не бесплатно):

https://enterprise.github.com/

Вы также можете установить Indefero, это GPL-клон GoogleCode, так как он поддерживает как Subversion, так и Git, у вас может быть плавный переход. Я автор Indefero.

Возможно, это не самая распространенная настройка git-сервера, но, поиграв с разными макетами, инструментами, зеркалированием и схемами разрешений, я бы сказал, что одной довольно солидной альтернативой для корпоративных репозиториев является Gerrit, которая может показаться удивительной, поскольку она более известна как инструмент для просмотра кода. Мы начали использовать его как обзор кода, и он постепенно стал нашим основным хранилищем, осуждая g3/gitolite

  • Это легко развернуть (вы в основном бросаете.war в кота)
  • имеет веб-интерфейс для управления репозиториями, группами и разрешениями (или ssh cli)
  • имеет встроенную реализацию Java ssh и git, так что вам больше нечего настраивать
  • Поддержка LDAP для пользователей и групп (обычно обязательна для компаний)
  • очень гибкая система разрешений (с группами проектов, наследованием разрешений, ограничением чтения / записи / ветвления / неподписанных записей / и т. д.)
  • возможности проверки кода (если вы в этой вещи)
  • зеркалирование репо (для отправки некоторых репозиториев в github или другое публичное репо)

Кроме того, он используется в крупных проектах (например, Android, Chrome), поэтому он масштабируется и теперь довольно солидный. Просто дайте своим пользователям разрешение PUSH, если вы хотите разрешить обход части проверки кода.

Для удаленного хостинга Как уже говорили другие пользователи, http://bitbucket.org/ предлагает бесплатные частные репозитории, я пользуюсь им без проблем.

Для локальной сети или локальной сети я добавлю этот http://www.scm-manager.org/ (один исполняемый файл, который очень прост в установке, он сделан на Java, поэтому может работать на Linux или Windows). На случай, если вы установите его, это пароли по умолчанию.

Username: scmadmin
Password: scmadmin

Тем временем хостинг-сайт Mercurial Bitbucket также начал предлагать Git-репозитории.

Поэтому, если вам не нужен локальный сервер, просто какое-то центральное место, где вы можете бесплатно разместить частные Git-репозитории, IMO Bitbucket - лучший выбор.

Бесплатно вы получаете неограниченные частные и публичные репозитории Git и Mercurial.
Единственным ограничением является то, что в бесплатном плане не более пяти пользователей могут получить доступ к вашим личным репозиториям (за большее вы должны заплатить).
Смотрите https://bitbucket.org/plans для получения дополнительной информации!

Если вы хотите получать запросы, есть проекты с открытым исходным кодом RhodeCode и GitLab и платный Stash

Чтобы добавить к сказанному Крисом, вы можете использовать gitosis (http://eagain.net/gitweb/?p=gitosis.git), чтобы контролировать, кто действительно может получить доступ к репо.

В зависимости от вашего использования вы также можете использовать хуки (в папке.git/hooks), чтобы ваш код автоматически перетаскивался в файловую систему сервера при загрузке с локального компьютера. Вот популярный скрипт для этого: http://utsl.gen.nz/git/post-update. Это не будет необходимо во всех случаях.

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

Если вам нужен "настоящий" сайт на вашем локальном сервере, я знаю сайт хостинга Git http://repo.or.cz/.
Кажется, что он имеет меньше возможностей, чем GitHub, но в отличие от GitHub, вы можете получить исходный код и разместить его на своем локальном сервере.

Отказ от ответственности: я только читал о repo.or.cz, я никогда не пробовал сам!

Для простых установок вы можете предоставить ssh-доступ к центральному серверу и настроить рабочий каталог каждого пользователя для отправки / извлечения из этого "источника". Это было бы самой простой и распространенной установкой для небольших команд.

Вы можете также изучить Gitosis, который дает вам http-сервер и возможность удаленного управления им. Таким образом, вам не нужно предоставлять ssh-доступ и все, что влечет за собой каждый коммиттер.

http://code.google.com/p/luna-tool/ - это приложение scala, которое реализует большинство необходимых мне частей github.

http://repo.or.cz/, хотя довольно хорошо, как правило, имеют некоторые проблемы с некоторыми пользователями.

Если вы один из них, я рекомендую вам попробовать http://unfuddle.com/ так как вы пришли из подрывной деятельности.

Проверьте "30 Второй тур": http://unfuddle.com/about/tour/plans

Другие вопросы по тегам