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
)
Это должно решить все для вас.
Ответ 2
Gitorious - это веб-интерфейс с открытым исходным кодом для git, который вы можете запускать на своем собственном сервере, подобно github:
http://getgitorious.com/
Update:
http://gitlab.org/ - еще одна альтернатива.
Обновление 2:
Gitorious теперь присоединился к GitLab
Ответ 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