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