Git Сервер, как GitHub?

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

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

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

Спасибо!

Ответ 1

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

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

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

Ответ 3

Попробуйте GitLab

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

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

Ответ 4

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

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

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

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

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

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

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

Ответ 5

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

Ответ 6

Браузер Bare Bones

git instaweb --httpd=webrick

из git scm book

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

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

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

Включить децентрализованный 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. Но, возможно, у вас нет локального корневого доступа, или, может быть, вы не доверяете им доступ SSH к вашему ящику.
  • Вы можете клонировать свое репо на палец и передавать его назад и вперед. Но это довольно утомительно, особенно если вы оказались в одной локальной сети и вам нужен флэш-накопитель.

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

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

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

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

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

  • Запустите git serve. "Готов грохотать", - сообщается он. git плохой зад.
  • Узнайте свой IP-адрес. Скажем, 192.168.1.123.
  • Скажите "эй Джейн, я не готов/не могу подтолкнуть эти коммиты к происхождению, но вы можете получить мои коммиты в ваш клон, запустив git fetch git://192.168.1.123/"
  • Нажмите ctrl + c, когда вы больше не хотите обслуживать этот репозиторий.

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

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

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

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

Ответ 7

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

Ответ 8

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

https://enterprise.github.com/

Ответ 9

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

Ответ 10

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

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

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

Ответ 11

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

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

Username: scmadmin
Password: scmadmin

Ответ 12

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

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

Ответ 13

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

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

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

Ответ 14

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

Ответ 15

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

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

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

Ответ 16

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

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

Ответ 17

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

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

Ответ 18

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

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

Отъезд "30 Second Tour": http://unfuddle.com/about/tour/plans

Ответ 19

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