Git Server Нравится GitHub?
Я давний пользователь Subversion, который собирается попробовать Git. Я читал об этом и понимаю распределенную природу - я вижу много преимуществ.
Однако мне нравится идея центрального сервера, который может выполнять роль резервных копий, системы записи и т. Д., И в то же время использовать Git для локального ветвления и совместного использования. Я не занимаюсь проектом с открытым исходным кодом, поэтому я не могу использовать Github (без оплаты), поэтому мой вопрос на самом деле: каков наилучший способ запуска локального сервера git?
Я понимаю, что это может противоречить стандартному шаблону использования Git, но это будет полезно для моего проекта. Любые проблемы, которые я мог упустить, всегда приветствуются.
Спасибо!
19 ответов
Вы можете просто настроить 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
) - совершать (
git commit -m "Initial import"
), - От себя (
git push origin master
)
Это должно настроить вещи для вас.
Gitorious - это веб-интерфейс с открытым исходным кодом для git, который вы можете запускать на своем собственном сервере, очень похоже на github:
Обновить:
http://gitlab.org/ теперь является еще одной альтернативой.
Обновление 2:
Попробуй 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
объединить это с чем-то вроде подхода, описанного здесь для распределенной разработки (благодарность датагроку за хорошо описанную концепцию)
Запустите одноразовый сервер 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
вот так:
- Бежать
git serve
, "Готов грохотать", - сообщит он. Мерзавец плохой - Узнайте свой 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
Если вы считаете, что хотите разрешить доступ для записи, обратитесь к man-странице. В случае, если вы хотите получить коммиты вашего соавтора, гораздо безопаснее оставить его только для чтения и попросить вашего соавтора также выполнить эту команду, чтобы вы могли извлечь из них.
Тангенциально связанные: на тему одноразовых серверов, если вы хотите временно поделиться кучей статических файлов по HTTP: python -m SimpleHTTPServer
Если вам нужен хороший, легкий GIT сервер, чем вы должны попробовать GitBlit. Также я использую Gitolite, но это только сервер, с GitBlit вы получаете все в одном, сервер, администратор, репозитории. менеджер... URL: http://gitblit.com/
https://rhodecode.com/ - это веб-приложение с открытым исходным кодом для Git & Mercurial, которое можно очень легко установить в любой операционной системе (включая установщик).
RhodeCode (новая версия называется RhodeCode Enterprise) добавляет недостающие функции Git, такие как просмотр кода, и, как правило, очень быстро и надежно.
Вы даже можете установить GitHub на свой локальный сервер (но не бесплатно):
Вы также можете установить 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 для получения дополнительной информации!
Чтобы добавить к сказанному Крисом, вы можете использовать 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