Git Server Нравится GitHub? [закрыто]

412

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

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

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

Спасибо!

сказ
источник
50
Использование централизованного сервера , как вы описываете это является на самом деле это стандартная схема использования для распределенных систем управления версиями, так что не беспокойтесь об этом. :-)
Аасмунд Элдхусет
8
Ааа - думал, что это было скорее исключением. Хотел отбиться от "если у вас есть централизация, то вы просто не получите ее!" Комментарии. Спасибо.
Сказ
27
Разумная мысль. :-) В моем понимании, суть распределенных VCS заключается не в том, что у вас не должно быть центрального репо (это часто очень полезно), а в том, что вы не обязаны использовать центральное репо - вы можете выполнить локальные коммиты, и при необходимости легко обмениваться ревизиями с конкретными людьми, и вы можете даже иметь несколько «центральных» репозиториев (в git любое другое репо, независимо от того, какую роль оно играет, называется удаленным , и вы можете добавить столько, сколько хотите). И у DVCS часто есть очень гибкие модели ветвления (git сияет здесь).
Аасмунд Элдхусет
15
Подводя итог / перефразируя комментарий Aasmund: цель DVCS часто состоит не в том, чтобы покончить с централизованным репозиторием, а в том, чтобы предоставить каждому другому пользователю полную мощность VCS.
Каскабель
2
У Google появился новый репозиторий облачных источников, который позволяет создавать частные репозитории: cloud.google.com/tools/cloud-repositories Кроме того, FWIW, не уверен, почему это помечено как не по теме!
Джош М.

Ответы:

203

Вы можете просто настроить 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. commit ( git commit -m "Initial import"),
  6. нажать ( git push origin master)

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

Крис Эберле
источник
5
Просто так мне понятно: установите git на другом (доступном) сервере и создайте репозиторий. Пусть клиенты клонируют это репо. Когда клиент завершит исправление, нажмите на сервер репо. Спасибо!
Сказ
8
+1. По сути, это шаблон использования для совместного использования мерзавца.
Aasmund Eldhuset
1
Эта ошибка произошла при нажатии на источник источника :::: Подсчет объектов: 3, сделано. Написание объектов: 100% (3/3), 244 байта | 0 байт / с, готово. Всего 3 (дельта 0), повторно использованный 0 (дельта 0) удаленный: ошибка: недостаточно прав для добавления объекта в базу данных хранилища ./objects remote: fatal: не удалось записать объект ошибка: распаковать не удалось: распаковать-объекты аварийно завершить В ssh: //localhost/var/gitroot/project.git! [удалено отклонено] master -> master (ошибка распаковщика) ошибка: не удалось отправить некоторые ссылки в 'ssh: //localhost/var/gitroot/project.git'
Abdo
3
Я написал пост в блоге о том, как настроить локальное git-репо некоторое время назад. Это максимум 10 минут. Сложно настроить правильные стратегии резервного копирования на локальном сервере, администрировать сервер и т. Д.
atmosx
Ты не можешь просто бежать git init --bare project.git?
Дан Даскалеску
199

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

http://getgitorious.com/

Обновить:

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

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

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

Craig
источник
5
Выглядит неплохо, но установка кажется тяжеловесной (особенно для пользователей, не использующих рельсы) [ cjohansen.no/en/ruby/setting_up_gitorious_on_your_own_server ]
gatoatigrado
1
Процесс установки находится в процессе упрощения и менее "Rails-y". Существует также автоматизированный установщик для серверов CentOS (и готового устройства), доступный на странице Install Gitorious на getgitorious.com.
Томанил
3
Похоже, что Gitorious больше не является бесплатным частным хостингом с открытым исходным кодом.
Mingming
1
Если вы зайдете на getgitorious.com и нажмете « Установщик» под Gitorious Community Edition, разве это не дает вам бесплатное решение для частного хостинга с открытым исходным кодом?
Крейг,
16
Также gitlab.org - это еще одна альтернатива, разработанная после моего ответа.
Крейг,
74

Попробуй GitLab

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

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

Пламен Николов
источник
1
Я согласен, это круто. (+1) Но из-за этого комментария установить его сложно. Было бы здорово, если бы они могли упаковать rpm, deb и т. Д.
Synesso
2
Я обнаружил, что относительно новая установка единого сценария для Ubuntu не требует больших усилий. Даже без этого, в основном, нужно следовать инструкциям с сайта. Я никогда не использовал rails или даже сервер Ubuntu, и я запустил его с первой попытки.
Джон Шир
У меня возникли некоторые проблемы при интеграции с Active Directory через LDAP.
riezebosch
2
На самом деле, в настоящее время GitLab довольно прост в установке. Это просто вопрос распаковки пакета. См. About.gitlab.com/downloads
Работа
2
Gitlab Enterprise, конечно, не бесплатна, но есть версия для сообщества , которая бесплатна и проста в установке. Тем не менее, для этого требуется около 800 МБ дискового пространства, так как он устанавливает несколько механизмов баз данных и множество зависимостей.
ОндроМих
39

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

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

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

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

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

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

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

stigkj
источник
24

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

Джеймс Могер
источник
Gitblit кажется идеальным для моего приложения, но меня беспокоит, что последний релиз был в 2016 году.
Роберто
1
@ Роберто, правильная точка. Я думаю, это зависит от того, что вам нужно или что важно для вас. Если он работает для вас как есть, он все равно может быть правильным выбором. Если вы беспокоитесь о своевременном исправлении ошибок или нуждаетесь в дополнительных функциях, это может быть не так.
Флориан
15

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

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

Марк Эссель
источник
11

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

corysus
источник
9

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

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

Себастьян
источник
1
На самом деле я запускаю свой собственный экземпляр здесь: code.gmgauthier.com . 3.x релиз замечательно чистый и стабильный. На самом деле, я использую его не только для кода (хотя и там есть много чего). Я использую его для хранения мастер-копий моих личных журналов, рукописей для двух книг, сценариев подкастов и черновиков блогов. Он идеально подходит для этого, отчасти потому, что он отображает и Markdown, и RestructuredText для вас, делая черновики очень удобочитаемыми из любого места.
Грег Готье
8

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

Loïc d'Anterroches
источник
Я использую это и нравится это. Но дизайн немного устарел. Это все еще поддерживается?
Ярослав
8

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

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

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

simpoir
источник
7

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

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

Username: scmadmin
Password: scmadmin
Эрнан Эш
источник
3
спасибо за предоставление учетных данных по умолчанию.
Райан Уильямс
6

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

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

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

Кристиан Шпехт
источник
4

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

joedborg
источник
2

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

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

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

Кристиан Шпехт
источник
2

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

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

sbeam
источник
2

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

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

liamacheung
источник
Ссылка на сценарий пост-обновления мертва ...
Мортен Дженсен,
1

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

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

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

Secko
источник